1 import { HttpClientTestingModule } from '@angular/common/http/testing';
2 import { ComponentFixture, TestBed } from '@angular/core/testing';
3 import { By } from '@angular/platform-browser';
4 import { RouterTestingModule } from '@angular/router/testing';
6 import { ModalModule } from 'ngx-bootstrap/modal';
7 import { TabsModule } from 'ngx-bootstrap/tabs';
13 } from '../../../../testing/unit-test-helper';
14 import { TableActionsComponent } from '../../../shared/datatable/table-actions/table-actions.component';
15 import { SharedModule } from '../../../shared/shared.module';
16 import { RgwBucketDetailsComponent } from '../rgw-bucket-details/rgw-bucket-details.component';
17 import { RgwBucketListComponent } from './rgw-bucket-list.component';
19 describe('RgwBucketListComponent', () => {
20 let component: RgwBucketListComponent;
21 let fixture: ComponentFixture<RgwBucketListComponent>;
24 declarations: [RgwBucketListComponent, RgwBucketDetailsComponent],
27 ModalModule.forRoot(),
30 HttpClientTestingModule
32 providers: i18nProviders
36 fixture = TestBed.createComponent(RgwBucketListComponent);
37 component = fixture.componentInstance;
40 it('should create', () => {
41 fixture.detectChanges();
42 expect(component).toBeTruthy();
45 describe('show action buttons and drop down actions depending on permissions', () => {
46 let tableActions: TableActionsComponent;
47 let scenario: { fn; empty; single };
48 let permissionHelper: PermissionHelper;
50 const getTableActionComponent = (): TableActionsComponent => {
51 fixture.detectChanges();
52 return fixture.debugElement.query(By.directive(TableActionsComponent)).componentInstance;
56 permissionHelper = new PermissionHelper(component.permission, () =>
57 getTableActionComponent()
60 fn: () => tableActions.getCurrentButton().name,
66 describe('with all', () => {
68 tableActions = permissionHelper.setPermissionsAndGetActions(1, 1, 1);
71 it(`shows 'Edit' for single selection else 'Add' as main action`, () =>
72 permissionHelper.testScenarios(scenario));
74 it('shows all actions', () => {
75 expect(tableActions.tableActions.length).toBe(3);
76 expect(tableActions.tableActions).toEqual(component.tableActions);
80 describe('with read, create and update', () => {
82 tableActions = permissionHelper.setPermissionsAndGetActions(1, 1, 0);
85 it(`shows 'Edit' for single selection else 'Add' as main action`, () =>
86 permissionHelper.testScenarios(scenario));
88 it(`shows 'Add' and 'Edit' action`, () => {
89 expect(tableActions.tableActions.length).toBe(2);
90 component.tableActions.pop();
91 expect(tableActions.tableActions).toEqual(component.tableActions);
95 describe('with read, create and delete', () => {
97 tableActions = permissionHelper.setPermissionsAndGetActions(1, 0, 1);
100 it(`shows 'Delete' for single selection else 'Add' as main action`, () => {
101 scenario.single = 'Delete';
102 permissionHelper.testScenarios(scenario);
105 it(`shows 'Add' and 'Delete' action`, () => {
106 expect(tableActions.tableActions.length).toBe(2);
107 expect(tableActions.tableActions).toEqual([
108 component.tableActions[0],
109 component.tableActions[2]
114 describe('with read, edit and delete', () => {
116 tableActions = permissionHelper.setPermissionsAndGetActions(0, 1, 1);
119 it(`shows always 'Edit' as main action`, () => {
120 scenario.empty = 'Edit';
121 permissionHelper.testScenarios(scenario);
124 it(`shows 'Edit' and 'Delete' action`, () => {
125 expect(tableActions.tableActions.length).toBe(2);
126 expect(tableActions.tableActions).toEqual([
127 component.tableActions[1],
128 component.tableActions[2]
133 describe('with read and create', () => {
135 tableActions = permissionHelper.setPermissionsAndGetActions(1, 0, 0);
138 it(`shows always 'Add' as main action`, () => {
139 scenario.single = 'Add';
140 permissionHelper.testScenarios(scenario);
143 it(`shows only 'Add' action`, () => {
144 expect(tableActions.tableActions.length).toBe(1);
145 expect(tableActions.tableActions).toEqual([component.tableActions[0]]);
149 describe('with read and update', () => {
151 tableActions = permissionHelper.setPermissionsAndGetActions(0, 1, 0);
154 it(`shows always 'Edit' as main action`, () => {
155 scenario.empty = 'Edit';
156 permissionHelper.testScenarios(scenario);
159 it(`shows only 'Edit' action`, () => {
160 expect(tableActions.tableActions.length).toBe(1);
161 expect(tableActions.tableActions).toEqual([component.tableActions[1]]);
165 describe('with read and delete', () => {
167 tableActions = permissionHelper.setPermissionsAndGetActions(0, 0, 1);
170 it(`shows always 'Delete' as main action`, () => {
171 scenario.single = 'Delete';
172 scenario.empty = 'Delete';
173 permissionHelper.testScenarios(scenario);
176 it(`shows only 'Delete' action`, () => {
177 expect(tableActions.tableActions.length).toBe(1);
178 expect(tableActions.tableActions).toEqual([component.tableActions[2]]);
182 describe('with only read', () => {
184 tableActions = permissionHelper.setPermissionsAndGetActions(0, 0, 0);
187 it('shows no main action', () => {
188 permissionHelper.testScenarios({
189 fn: () => tableActions.getCurrentButton(),
195 it('shows no actions', () => {
196 expect(tableActions.tableActions.length).toBe(0);
197 expect(tableActions.tableActions).toEqual([]);