]>
Commit | Line | Data |
---|---|---|
11fdf7f2 TL |
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'; | |
5 | ||
11fdf7f2 | 6 | import { TabsModule } from 'ngx-bootstrap/tabs'; |
494da23a | 7 | import { ToastrModule } from 'ngx-toastr'; |
11fdf7f2 TL |
8 | |
9 | import { | |
10 | configureTestBed, | |
11 | i18nProviders, | |
12 | PermissionHelper | |
13 | } from '../../../../testing/unit-test-helper'; | |
14 | import { ActionLabels } from '../../../shared/constants/app.constants'; | |
15 | import { TableActionsComponent } from '../../../shared/datatable/table-actions/table-actions.component'; | |
16 | import { SharedModule } from '../../../shared/shared.module'; | |
17 | import { UserTabsComponent } from '../user-tabs/user-tabs.component'; | |
18 | import { UserListComponent } from './user-list.component'; | |
19 | ||
20 | describe('UserListComponent', () => { | |
21 | let component: UserListComponent; | |
22 | let fixture: ComponentFixture<UserListComponent>; | |
23 | ||
24 | configureTestBed({ | |
25 | imports: [ | |
26 | SharedModule, | |
494da23a | 27 | ToastrModule.forRoot(), |
11fdf7f2 TL |
28 | TabsModule.forRoot(), |
29 | RouterTestingModule, | |
30 | HttpClientTestingModule | |
31 | ], | |
32 | declarations: [UserListComponent, UserTabsComponent], | |
33 | providers: i18nProviders | |
34 | }); | |
35 | ||
36 | beforeEach(() => { | |
37 | fixture = TestBed.createComponent(UserListComponent); | |
38 | component = fixture.componentInstance; | |
39 | }); | |
40 | ||
41 | it('should create', () => { | |
42 | fixture.detectChanges(); | |
43 | expect(component).toBeTruthy(); | |
44 | }); | |
45 | ||
46 | describe('show action buttons and drop down actions depending on permissions', () => { | |
47 | let tableActions: TableActionsComponent; | |
48 | let scenario: { fn; empty; single }; | |
49 | let permissionHelper: PermissionHelper; | |
50 | ||
51 | const getTableActionComponent = (): TableActionsComponent => { | |
52 | fixture.detectChanges(); | |
53 | return fixture.debugElement.query(By.directive(TableActionsComponent)).componentInstance; | |
54 | }; | |
55 | ||
56 | beforeEach(() => { | |
57 | permissionHelper = new PermissionHelper(component.permission, () => | |
58 | getTableActionComponent() | |
59 | ); | |
60 | scenario = { | |
61 | fn: () => tableActions.getCurrentButton().name, | |
62 | single: ActionLabels.EDIT, | |
63 | empty: ActionLabels.CREATE | |
64 | }; | |
65 | }); | |
66 | ||
67 | describe('with all', () => { | |
68 | beforeEach(() => { | |
69 | tableActions = permissionHelper.setPermissionsAndGetActions(1, 1, 1); | |
70 | }); | |
71 | ||
72 | it(`shows 'Edit' for single selection else 'Add' as main action`, () => | |
73 | permissionHelper.testScenarios(scenario)); | |
74 | ||
75 | it('shows all actions', () => { | |
76 | expect(tableActions.tableActions.length).toBe(3); | |
77 | expect(tableActions.tableActions).toEqual(component.tableActions); | |
78 | }); | |
79 | }); | |
80 | ||
81 | describe('with read, create and update', () => { | |
82 | beforeEach(() => { | |
83 | tableActions = permissionHelper.setPermissionsAndGetActions(1, 1, 0); | |
84 | }); | |
85 | ||
86 | it(`shows 'Edit' for single selection else 'Add' as main action`, () => | |
87 | permissionHelper.testScenarios(scenario)); | |
88 | ||
89 | it(`shows 'Add' and 'Edit' action`, () => { | |
90 | expect(tableActions.tableActions.length).toBe(2); | |
91 | component.tableActions.pop(); | |
92 | expect(tableActions.tableActions).toEqual(component.tableActions); | |
93 | }); | |
94 | }); | |
95 | ||
96 | describe('with read, create and delete', () => { | |
97 | beforeEach(() => { | |
98 | tableActions = permissionHelper.setPermissionsAndGetActions(1, 0, 1); | |
99 | }); | |
100 | ||
101 | it(`shows 'Delete' for single selection else 'Add' as main action`, () => { | |
102 | scenario.single = 'Delete'; | |
103 | permissionHelper.testScenarios(scenario); | |
104 | }); | |
105 | ||
106 | it(`shows 'Add' and 'Delete' action`, () => { | |
107 | expect(tableActions.tableActions.length).toBe(2); | |
108 | expect(tableActions.tableActions).toEqual([ | |
109 | component.tableActions[0], | |
110 | component.tableActions[2] | |
111 | ]); | |
112 | }); | |
113 | }); | |
114 | ||
115 | describe('with read, edit and delete', () => { | |
116 | beforeEach(() => { | |
117 | tableActions = permissionHelper.setPermissionsAndGetActions(0, 1, 1); | |
118 | }); | |
119 | ||
120 | it(`shows always 'Edit' as main action`, () => { | |
121 | scenario.empty = ActionLabels.EDIT; | |
122 | permissionHelper.testScenarios(scenario); | |
123 | }); | |
124 | ||
125 | it(`shows 'Edit' and 'Delete' action`, () => { | |
126 | expect(tableActions.tableActions.length).toBe(2); | |
127 | expect(tableActions.tableActions).toEqual([ | |
128 | component.tableActions[1], | |
129 | component.tableActions[2] | |
130 | ]); | |
131 | }); | |
132 | }); | |
133 | ||
134 | describe('with read and create', () => { | |
135 | beforeEach(() => { | |
136 | tableActions = permissionHelper.setPermissionsAndGetActions(1, 0, 0); | |
137 | }); | |
138 | ||
139 | it(`shows always 'Add' as main action`, () => { | |
140 | scenario.single = ActionLabels.CREATE; | |
141 | permissionHelper.testScenarios(scenario); | |
142 | }); | |
143 | ||
144 | it(`shows only 'Add' action`, () => { | |
145 | expect(tableActions.tableActions.length).toBe(1); | |
146 | expect(tableActions.tableActions).toEqual([component.tableActions[0]]); | |
147 | }); | |
148 | }); | |
149 | ||
150 | describe('with read and update', () => { | |
151 | beforeEach(() => { | |
152 | tableActions = permissionHelper.setPermissionsAndGetActions(0, 1, 0); | |
153 | }); | |
154 | ||
155 | it(`shows always 'Edit' as main action`, () => { | |
156 | scenario.empty = 'Edit'; | |
157 | permissionHelper.testScenarios(scenario); | |
158 | }); | |
159 | ||
160 | it(`shows only 'Edit' action`, () => { | |
161 | expect(tableActions.tableActions.length).toBe(1); | |
162 | expect(tableActions.tableActions).toEqual([component.tableActions[1]]); | |
163 | }); | |
164 | }); | |
165 | ||
166 | describe('with read and delete', () => { | |
167 | beforeEach(() => { | |
168 | tableActions = permissionHelper.setPermissionsAndGetActions(0, 0, 1); | |
169 | }); | |
170 | ||
171 | it(`shows always 'Delete' as main action`, () => { | |
172 | scenario.single = 'Delete'; | |
173 | scenario.empty = 'Delete'; | |
174 | permissionHelper.testScenarios(scenario); | |
175 | }); | |
176 | ||
177 | it(`shows only 'Delete' action`, () => { | |
178 | expect(tableActions.tableActions.length).toBe(1); | |
179 | expect(tableActions.tableActions).toEqual([component.tableActions[2]]); | |
180 | }); | |
181 | }); | |
182 | ||
183 | describe('with only read', () => { | |
184 | beforeEach(() => { | |
185 | tableActions = permissionHelper.setPermissionsAndGetActions(0, 0, 0); | |
186 | }); | |
187 | ||
188 | it('shows no main action', () => { | |
189 | permissionHelper.testScenarios({ | |
190 | fn: () => tableActions.getCurrentButton(), | |
191 | single: undefined, | |
192 | empty: undefined | |
193 | }); | |
194 | }); | |
195 | ||
196 | it('shows no actions', () => { | |
197 | expect(tableActions.tableActions.length).toBe(0); | |
198 | expect(tableActions.tableActions).toEqual([]); | |
199 | }); | |
200 | }); | |
201 | }); | |
202 | }); |