@onecx/angular-accelerator 4.11.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +7 -0
- package/assets/i18n/de.json +130 -0
- package/assets/i18n/en.json +130 -0
- package/assets/images/placeholder.png +0 -0
- package/assets/styles.scss +8 -0
- package/esm2020/index.mjs +49 -0
- package/esm2020/lib/angular-accelerator-primeng.module.mjs +83 -0
- package/esm2020/lib/angular-accelerator.module.mjs +209 -0
- package/esm2020/lib/components/column-group-selection/column-group-selection.component.mjs +72 -0
- package/esm2020/lib/components/custom-group-column-selector/custom-group-column-selector.component.mjs +108 -0
- package/esm2020/lib/components/data-layout-selection/data-layout-selection.component.mjs +45 -0
- package/esm2020/lib/components/data-list-grid/data-list-grid.component.mjs +358 -0
- package/esm2020/lib/components/data-list-grid-sorting/data-list-grid-sorting.component.mjs +92 -0
- package/esm2020/lib/components/data-sort-base/data-sort-base.mjs +110 -0
- package/esm2020/lib/components/data-table/data-table.component.mjs +350 -0
- package/esm2020/lib/components/data-view/data-view.component.mjs +355 -0
- package/esm2020/lib/components/diagram/diagram.component.mjs +136 -0
- package/esm2020/lib/components/group-by-count-diagram/group-by-count-diagram.component.mjs +109 -0
- package/esm2020/lib/components/interactive-data-view/interactive-data-view.component.mjs +342 -0
- package/esm2020/lib/components/page-header/page-header.component.mjs +189 -0
- package/esm2020/lib/components/search-config/search-config.component.mjs +34 -0
- package/esm2020/lib/components/search-header/search-header.component.mjs +136 -0
- package/esm2020/lib/directives/if-breakpoint.directive.mjs +39 -0
- package/esm2020/lib/directives/if-permission.directive.mjs +53 -0
- package/esm2020/lib/functions/flatten-object.mjs +20 -0
- package/esm2020/lib/model/breadcrumb-menu-item.model.mjs +2 -0
- package/esm2020/lib/model/column-type.model.mjs +9 -0
- package/esm2020/lib/model/data-action.mjs +2 -0
- package/esm2020/lib/model/data-column-name-id.model.mjs +2 -0
- package/esm2020/lib/model/data-sort-direction.mjs +2 -0
- package/esm2020/lib/model/data-table-column.model.mjs +2 -0
- package/esm2020/lib/model/diagram-column.mjs +2 -0
- package/esm2020/lib/model/diagram-data.mjs +2 -0
- package/esm2020/lib/model/diagram-type.mjs +2 -0
- package/esm2020/lib/model/search-config-info.mjs +2 -0
- package/esm2020/lib/pipes/dynamic.pipe.mjs +58 -0
- package/esm2020/lib/pipes/ocxtimeago.pipe.mjs +15 -0
- package/esm2020/lib/services/breadcrumb.service.mjs +79 -0
- package/esm2020/lib/services/translation-cache.service.mjs +54 -0
- package/esm2020/lib/utils/async-translate-loader.utils.mjs +12 -0
- package/esm2020/lib/utils/caching-translate-loader.utils.mjs +15 -0
- package/esm2020/lib/utils/colorutils.mjs +19 -0
- package/esm2020/lib/utils/create-translate-loader.utils.mjs +23 -0
- package/esm2020/lib/utils/dateutils.mjs +32 -0
- package/esm2020/lib/utils/objectutils.mjs +30 -0
- package/esm2020/lib/utils/ocxtimeagointl.utils.mjs +34 -0
- package/esm2020/lib/utils/primeicon.utils.mjs +2 -0
- package/esm2020/lib/utils/translate.combined.loader.mjs +36 -0
- package/esm2020/onecx-angular-accelerator.mjs +5 -0
- package/esm2020/testing/column-group-selection.harness.mjs +10 -0
- package/esm2020/testing/custom-group-column-selector.harness.mjs +31 -0
- package/esm2020/testing/data-layout-selection.harness.mjs +33 -0
- package/esm2020/testing/data-list-grid.harness.mjs +47 -0
- package/esm2020/testing/data-table.harness.mjs +57 -0
- package/esm2020/testing/data-view.harness.mjs +12 -0
- package/esm2020/testing/default-grid-item.harness.mjs +24 -0
- package/esm2020/testing/default-list-item.harness.mjs +24 -0
- package/esm2020/testing/diagram.harness.mjs +22 -0
- package/esm2020/testing/index.mjs +17 -0
- package/esm2020/testing/interactive-data-view.harness.mjs +19 -0
- package/esm2020/testing/more-actions-menu-button.harness.mjs +35 -0
- package/esm2020/testing/onecx-angular-accelerator-testing.mjs +5 -0
- package/esm2020/testing/page-header.harness.mjs +36 -0
- package/esm2020/testing/search-config.harness.mjs +10 -0
- package/fesm2015/onecx-angular-accelerator-testing.mjs +430 -0
- package/fesm2015/onecx-angular-accelerator-testing.mjs.map +1 -0
- package/fesm2015/onecx-angular-accelerator.mjs +3118 -0
- package/fesm2015/onecx-angular-accelerator.mjs.map +1 -0
- package/fesm2020/onecx-angular-accelerator-testing.mjs +338 -0
- package/fesm2020/onecx-angular-accelerator-testing.mjs.map +1 -0
- package/fesm2020/onecx-angular-accelerator.mjs +3085 -0
- package/fesm2020/onecx-angular-accelerator.mjs.map +1 -0
- package/index.d.ts +38 -0
- package/lib/angular-accelerator-primeng.module.d.ts +16 -0
- package/lib/angular-accelerator.module.d.ts +32 -0
- package/lib/components/column-group-selection/column-group-selection.component.d.ts +28 -0
- package/lib/components/custom-group-column-selector/custom-group-column-selector.component.d.ts +45 -0
- package/lib/components/data-layout-selection/data-layout-selection.component.d.ts +25 -0
- package/lib/components/data-list-grid/data-list-grid.component.d.ts +120 -0
- package/lib/components/data-list-grid-sorting/data-list-grid-sorting.component.d.ts +30 -0
- package/lib/components/data-sort-base/data-sort-base.d.ts +32 -0
- package/lib/components/data-table/data-table.component.d.ts +124 -0
- package/lib/components/data-view/data-view.component.d.ts +112 -0
- package/lib/components/diagram/diagram.component.d.ts +43 -0
- package/lib/components/group-by-count-diagram/group-by-count-diagram.component.d.ts +39 -0
- package/lib/components/interactive-data-view/interactive-data-view.component.d.ts +108 -0
- package/lib/components/page-header/page-header.component.d.ts +90 -0
- package/lib/components/search-config/search-config.component.d.ts +16 -0
- package/lib/components/search-header/search-header.component.d.ts +46 -0
- package/lib/directives/if-breakpoint.directive.d.ts +12 -0
- package/lib/directives/if-permission.directive.d.ts +18 -0
- package/lib/functions/flatten-object.d.ts +14 -0
- package/lib/model/breadcrumb-menu-item.model.d.ts +60 -0
- package/lib/model/column-type.model.d.ts +7 -0
- package/lib/model/data-action.d.ts +9 -0
- package/lib/model/data-column-name-id.model.d.ts +4 -0
- package/lib/model/data-sort-direction.d.ts +5 -0
- package/lib/model/data-table-column.model.d.ts +9 -0
- package/lib/model/diagram-column.d.ts +5 -0
- package/lib/model/diagram-data.d.ts +4 -0
- package/lib/model/diagram-type.d.ts +5 -0
- package/lib/model/search-config-info.d.ts +4 -0
- package/lib/pipes/dynamic.pipe.d.ts +13 -0
- package/lib/pipes/ocxtimeago.pipe.d.ts +6 -0
- package/lib/services/breadcrumb.service.d.ts +20 -0
- package/lib/services/translation-cache.service.d.ts +12 -0
- package/lib/utils/async-translate-loader.utils.d.ts +9 -0
- package/lib/utils/caching-translate-loader.utils.d.ts +13 -0
- package/lib/utils/colorutils.d.ts +12 -0
- package/lib/utils/create-translate-loader.utils.d.ts +5 -0
- package/lib/utils/dateutils.d.ts +9 -0
- package/lib/utils/objectutils.d.ts +4 -0
- package/lib/utils/ocxtimeagointl.utils.d.ts +9 -0
- package/lib/utils/primeicon.utils.d.ts +5 -0
- package/lib/utils/translate.combined.loader.d.ts +9 -0
- package/package.json +55 -0
- package/testing/column-group-selection.harness.d.ts +6 -0
- package/testing/custom-group-column-selector.harness.d.ts +14 -0
- package/testing/data-layout-selection.harness.d.ts +11 -0
- package/testing/data-list-grid.harness.d.ts +15 -0
- package/testing/data-table.harness.d.ts +17 -0
- package/testing/data-view.harness.d.ts +8 -0
- package/testing/default-grid-item.harness.d.ts +11 -0
- package/testing/default-list-item.harness.d.ts +12 -0
- package/testing/diagram.harness.d.ts +10 -0
- package/testing/index.d.ts +16 -0
- package/testing/interactive-data-view.harness.d.ts +15 -0
- package/testing/more-actions-menu-button.harness.d.ts +10 -0
- package/testing/page-header.harness.d.ts +13 -0
- package/testing/search-config.harness.d.ts +6 -0
|
@@ -0,0 +1,338 @@
|
|
|
1
|
+
import { ComponentHarness, ContentContainerComponentHarness } from '@angular/cdk/testing';
|
|
2
|
+
export * from '@angular/cdk/testing';
|
|
3
|
+
import { PDropdownHarness, PButtonHarness, PDialogHarness, PPicklistHarness, PSelectButtonHarness, MenuItemHarness, DivHarness, ButtonHarness, PPaginatorHarness, TableHeaderColumnHarness, TableRowHarness, PTableCheckboxHarness, PChartHarness, PMenuHarness } from '@onecx/angular-testing';
|
|
4
|
+
export * from '@onecx/angular-testing';
|
|
5
|
+
import { PrimeIcons } from 'primeng/api';
|
|
6
|
+
export * from '@angular/cdk/testing/testbed';
|
|
7
|
+
|
|
8
|
+
class ColumnGroupSelectionHarness extends ComponentHarness {
|
|
9
|
+
constructor() {
|
|
10
|
+
super(...arguments);
|
|
11
|
+
this.getPDropdown = this.locatorFor(PDropdownHarness);
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
ColumnGroupSelectionHarness.hostSelector = 'ocx-column-group-selection';
|
|
15
|
+
|
|
16
|
+
class CustomGroupColumnSelectorHarness extends ContentContainerComponentHarness {
|
|
17
|
+
constructor() {
|
|
18
|
+
super(...arguments);
|
|
19
|
+
this.getCustomGroupColumnSelectorButton = this.locatorFor(PButtonHarness.with({
|
|
20
|
+
id: 'customGroupColumnSelectorButton',
|
|
21
|
+
}));
|
|
22
|
+
this.getDialog = this.locatorFor(PDialogHarness);
|
|
23
|
+
this.getCancelButton = this.locatorFor(PButtonHarness);
|
|
24
|
+
this.getSaveButton = this.locatorFor(PButtonHarness.with({ id: 'saveButton' }));
|
|
25
|
+
this.getPicklist = this.locatorFor(PPicklistHarness);
|
|
26
|
+
this.getSelectButtons = this.locatorForOptional('[name]');
|
|
27
|
+
}
|
|
28
|
+
async getFrozenActionColumnSelectButton() {
|
|
29
|
+
return await this.locatorForAll(`[name="frozen-action-column-select-button"] .p-button`)();
|
|
30
|
+
}
|
|
31
|
+
async getActionColumnPositionSelectButtons() {
|
|
32
|
+
return await this.locatorForAll(`[name="action-column-position-select-button"] .p-button`)();
|
|
33
|
+
}
|
|
34
|
+
async openCustomGroupColumnSelectorDialog() {
|
|
35
|
+
if (!(await (await this.getDialog()).isVisible())) {
|
|
36
|
+
await (await this.getCustomGroupColumnSelectorButton()).click();
|
|
37
|
+
}
|
|
38
|
+
else {
|
|
39
|
+
console.warn('Unable to open CustomGroupColumnSelectionDialog, because it is already open.');
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
CustomGroupColumnSelectorHarness.hostSelector = 'ocx-custom-group-column-selector';
|
|
44
|
+
|
|
45
|
+
class DataLayoutSelectionHarness extends ContentContainerComponentHarness {
|
|
46
|
+
async getAllSelectionButtons() {
|
|
47
|
+
return await (await this.locatorFor(PSelectButtonHarness)()).getAllButtons();
|
|
48
|
+
}
|
|
49
|
+
async getListLayoutSelectionButton() {
|
|
50
|
+
return await this.isDesiredButton(await this.getAllSelectionButtons(), PrimeIcons.LIST);
|
|
51
|
+
}
|
|
52
|
+
async getGridLayoutSelectionButton() {
|
|
53
|
+
return await this.isDesiredButton(await this.getAllSelectionButtons(), PrimeIcons.TH_LARGE);
|
|
54
|
+
}
|
|
55
|
+
async getTableLayoutSelectionButton() {
|
|
56
|
+
return await this.isDesiredButton(await this.getAllSelectionButtons(), PrimeIcons.TABLE);
|
|
57
|
+
}
|
|
58
|
+
async getCurrentLayout() {
|
|
59
|
+
return await (await this.host()).getAttribute('ng-reflect-layout');
|
|
60
|
+
}
|
|
61
|
+
async selectListLayout() {
|
|
62
|
+
await (await this.getListLayoutSelectionButton())?.click();
|
|
63
|
+
}
|
|
64
|
+
async isDesiredButton(value, icon) {
|
|
65
|
+
for (let index = 0; index < value.length; index++) {
|
|
66
|
+
if ((await value[index].getAttribute('aria-labelledby')) === icon) {
|
|
67
|
+
return value[index];
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
return null;
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
DataLayoutSelectionHarness.hostSelector = 'ocx-data-layout-selection';
|
|
74
|
+
|
|
75
|
+
class MoreActionsMenuButtonHarness extends ContentContainerComponentHarness {
|
|
76
|
+
async getHarnessLoaderForPMenuOverlay() {
|
|
77
|
+
return this.documentRootLocatorFactory().harnessLoaderForOptional('.p-menu-overlay');
|
|
78
|
+
}
|
|
79
|
+
async isOpen() {
|
|
80
|
+
return !!(await this.getHarnessLoaderForPMenuOverlay());
|
|
81
|
+
}
|
|
82
|
+
async open() {
|
|
83
|
+
if (!(await this.isOpen())) {
|
|
84
|
+
await (await this.host()).click();
|
|
85
|
+
}
|
|
86
|
+
else {
|
|
87
|
+
console.warn('Unable to open multiSelect, because it is already open.');
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
async close() {
|
|
91
|
+
if (await this.isOpen()) {
|
|
92
|
+
await (await this.host()).click();
|
|
93
|
+
}
|
|
94
|
+
else {
|
|
95
|
+
console.warn('Unable to open multiSelect, because it is already open.');
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
async getAllActionsMenuItems() {
|
|
99
|
+
await this.open();
|
|
100
|
+
if (await this.getHarnessLoaderForPMenuOverlay()) {
|
|
101
|
+
return this.documentRootLocatorFactory().locatorForAll(MenuItemHarness)();
|
|
102
|
+
}
|
|
103
|
+
return [];
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
MoreActionsMenuButtonHarness.hostSelector = '.more-actions-menu-button';
|
|
107
|
+
|
|
108
|
+
class DefaultGridItemHarness extends ComponentHarness {
|
|
109
|
+
constructor() {
|
|
110
|
+
super(...arguments);
|
|
111
|
+
this.getMoreActionsButton = this.locatorFor(MoreActionsMenuButtonHarness);
|
|
112
|
+
this.getAllDivs = this.locatorForAll(DivHarness);
|
|
113
|
+
this.getGridImg = this.locatorFor('img');
|
|
114
|
+
}
|
|
115
|
+
async getData() {
|
|
116
|
+
const isDataGridItemsDiv = await Promise.all((await this.getAllDivs()).map((divHarness) => this.checkDivsHasClasses(divHarness)));
|
|
117
|
+
const divHarnesses = (await this.getAllDivs()).filter((_v, index) => isDataGridItemsDiv[index]);
|
|
118
|
+
const getDivTexts = await Promise.all(divHarnesses.map((divHarness) => divHarness.getText()));
|
|
119
|
+
getDivTexts.unshift(await (await this.getGridImg()).getAttribute('src'));
|
|
120
|
+
return getDivTexts;
|
|
121
|
+
}
|
|
122
|
+
async checkDivsHasClasses(value) {
|
|
123
|
+
const hasClass = (await value.checkHasClass('item-name')) || (await value.checkHasClass('subtitleLine'));
|
|
124
|
+
return hasClass;
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
DefaultGridItemHarness.hostSelector = '.data-grid-item';
|
|
128
|
+
|
|
129
|
+
class DefaultListItemHarness extends ComponentHarness {
|
|
130
|
+
constructor() {
|
|
131
|
+
super(...arguments);
|
|
132
|
+
this.getAllActionButtons = this.locatorForAll('button');
|
|
133
|
+
this.getViewButton = this.locatorForOptional(ButtonHarness.with({ class: 'viewListItemButton' }));
|
|
134
|
+
this.getEditButton = this.locatorForOptional(ButtonHarness.with({ class: 'editListItemButton' }));
|
|
135
|
+
this.getDeleteButton = this.locatorForOptional(ButtonHarness.with({ class: 'deleteListItemButton' }));
|
|
136
|
+
this.getAllDivs = this.locatorForAll(DivHarness);
|
|
137
|
+
}
|
|
138
|
+
async getData() {
|
|
139
|
+
const isDataListItemsDiv = await Promise.all((await this.getAllDivs()).map((innerDivHarness) => this.checkDivsHasClasses(innerDivHarness)));
|
|
140
|
+
const divHarnesses = (await this.getAllDivs()).filter((_v, index) => isDataListItemsDiv[index]);
|
|
141
|
+
const getDivTexts = await Promise.all(divHarnesses.map((divHarness) => divHarness.getText()));
|
|
142
|
+
return getDivTexts;
|
|
143
|
+
}
|
|
144
|
+
async checkDivsHasClasses(value) {
|
|
145
|
+
const hasClass = (await value.checkHasClass('item-name-row')) || (await value.checkHasClass('subtitleLine'));
|
|
146
|
+
return hasClass;
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
DefaultListItemHarness.hostSelector = '.data-list-items';
|
|
150
|
+
|
|
151
|
+
class DataListGridHarness extends ContentContainerComponentHarness {
|
|
152
|
+
constructor() {
|
|
153
|
+
super(...arguments);
|
|
154
|
+
this.getDefaultGridItems = this.locatorForAll(DefaultGridItemHarness);
|
|
155
|
+
this.getDefaultListItems = this.locatorForAll(DefaultListItemHarness);
|
|
156
|
+
this.getPaginator = this.locatorFor(PPaginatorHarness);
|
|
157
|
+
this.getMenuButton = this.locatorFor(`[name="data-grid-item-menu-button"]`);
|
|
158
|
+
}
|
|
159
|
+
async getActionButtons(actionButtonType) {
|
|
160
|
+
if (actionButtonType === 'list') {
|
|
161
|
+
return await this.locatorForAll(`[name="data-list-action-button"]`)();
|
|
162
|
+
}
|
|
163
|
+
else if (actionButtonType === 'grid-hidden') {
|
|
164
|
+
return await this.documentRootLocatorFactory().locatorForAll(`[data-automationid="data-grid-action-button-hidden"]`)();
|
|
165
|
+
}
|
|
166
|
+
else {
|
|
167
|
+
return await this.documentRootLocatorFactory().locatorForAll(`[data-automationid="data-grid-action-button"]`)();
|
|
168
|
+
}
|
|
169
|
+
}
|
|
170
|
+
async actionButtonIsDisabled(actionButton, viewType) {
|
|
171
|
+
if (viewType === 'list') {
|
|
172
|
+
return await actionButton.getProperty('disabled');
|
|
173
|
+
}
|
|
174
|
+
else {
|
|
175
|
+
return await actionButton.hasClass('p-disabled');
|
|
176
|
+
}
|
|
177
|
+
}
|
|
178
|
+
async hasAmountOfActionButtons(actionButtonType, amount) {
|
|
179
|
+
return (await this.getActionButtons(actionButtonType)).length === amount;
|
|
180
|
+
}
|
|
181
|
+
async hasAmountOfDisabledActionButtons(viewType, amount) {
|
|
182
|
+
let disabledActionButtons = [];
|
|
183
|
+
if (viewType === 'list') {
|
|
184
|
+
disabledActionButtons = await this.documentRootLocatorFactory().locatorForAll(`[name="data-list-action-button"]:disabled`)();
|
|
185
|
+
}
|
|
186
|
+
else {
|
|
187
|
+
disabledActionButtons = await this.documentRootLocatorFactory().locatorForAll(`li.p-menuitem>a.p-menuitem-link.p-disabled`)();
|
|
188
|
+
}
|
|
189
|
+
return disabledActionButtons.length === amount;
|
|
190
|
+
}
|
|
191
|
+
}
|
|
192
|
+
DataListGridHarness.hostSelector = 'ocx-data-list-grid';
|
|
193
|
+
|
|
194
|
+
class DataTableHarness extends ContentContainerComponentHarness {
|
|
195
|
+
constructor() {
|
|
196
|
+
super(...arguments);
|
|
197
|
+
this.getHeaderColumns = this.locatorForAll(TableHeaderColumnHarness);
|
|
198
|
+
this.getRows = this.locatorForAll(TableRowHarness);
|
|
199
|
+
this.getPaginator = this.locatorFor(PPaginatorHarness);
|
|
200
|
+
}
|
|
201
|
+
async rowSelectionIsEnabled() {
|
|
202
|
+
const pTableCheckbox = await this.getHarnessesForCheckboxes('all');
|
|
203
|
+
return pTableCheckbox.length > 0;
|
|
204
|
+
}
|
|
205
|
+
async getHarnessesForCheckboxes(type) {
|
|
206
|
+
let checkBoxHarnesses;
|
|
207
|
+
if (type === 'checked') {
|
|
208
|
+
checkBoxHarnesses = await this.getAllHarnesses(PTableCheckboxHarness.with({ isSelected: true }));
|
|
209
|
+
return checkBoxHarnesses;
|
|
210
|
+
}
|
|
211
|
+
if (type === 'unchecked') {
|
|
212
|
+
checkBoxHarnesses = await this.getAllHarnesses(PTableCheckboxHarness.with({ isSelected: false }));
|
|
213
|
+
return checkBoxHarnesses;
|
|
214
|
+
}
|
|
215
|
+
else {
|
|
216
|
+
checkBoxHarnesses = await this.getAllHarnesses(PTableCheckboxHarness);
|
|
217
|
+
return checkBoxHarnesses;
|
|
218
|
+
}
|
|
219
|
+
}
|
|
220
|
+
async getActionColumnHeader(position) {
|
|
221
|
+
return await this.locatorForOptional(`[name="action-column-header-${position}"]`)();
|
|
222
|
+
}
|
|
223
|
+
async getActionColumn(position) {
|
|
224
|
+
return await this.locatorForOptional(`[name="action-column-${position}"]`)();
|
|
225
|
+
}
|
|
226
|
+
async getActionButtons() {
|
|
227
|
+
return await this.locatorForAll(`[name="data-table-action-button"]`)();
|
|
228
|
+
}
|
|
229
|
+
async actionButtonIsDisabled(actionButton) {
|
|
230
|
+
const isDisabled = await actionButton.getProperty('disabled');
|
|
231
|
+
return isDisabled;
|
|
232
|
+
}
|
|
233
|
+
async hasAmountOfActionButtons(amount) {
|
|
234
|
+
return (await this.getActionButtons()).length === amount;
|
|
235
|
+
}
|
|
236
|
+
async hasAmountOfDisabledActionButtons(amount) {
|
|
237
|
+
const disabledActionButtons = await this.documentRootLocatorFactory().locatorForAll(`[name="data-table-action-button"]:disabled`)();
|
|
238
|
+
return disabledActionButtons.length === amount;
|
|
239
|
+
}
|
|
240
|
+
async columnIsFrozen(column) {
|
|
241
|
+
if (column == null) {
|
|
242
|
+
throw new Error('Given column is null');
|
|
243
|
+
}
|
|
244
|
+
return await column.hasClass('p-frozen-column');
|
|
245
|
+
}
|
|
246
|
+
}
|
|
247
|
+
DataTableHarness.hostSelector = 'ocx-data-table';
|
|
248
|
+
|
|
249
|
+
class DataViewHarness extends ContentContainerComponentHarness {
|
|
250
|
+
constructor() {
|
|
251
|
+
super(...arguments);
|
|
252
|
+
this.getDataTable = this.locatorFor(DataTableHarness);
|
|
253
|
+
this.getDataListGrid = this.locatorFor(DataListGridHarness);
|
|
254
|
+
}
|
|
255
|
+
}
|
|
256
|
+
DataViewHarness.hostSelector = 'ocx-data-view';
|
|
257
|
+
|
|
258
|
+
class DiagramHarness extends ComponentHarness {
|
|
259
|
+
constructor() {
|
|
260
|
+
super(...arguments);
|
|
261
|
+
this.getChart = this.locatorFor(PChartHarness);
|
|
262
|
+
}
|
|
263
|
+
async getTotalNumberOfResults() {
|
|
264
|
+
return (await this.locatorForOptional('.sumKey span[name="amountOfData"]')())?.text().then((s) => Number(s));
|
|
265
|
+
}
|
|
266
|
+
async getSumLabel() {
|
|
267
|
+
return (await this.locatorForOptional('.sumKey span[name="sumLabel"]')())?.text();
|
|
268
|
+
}
|
|
269
|
+
async getDiagramTypeSelectButton() {
|
|
270
|
+
return await this.locatorForOptional('p-selectButton[name="diagram-type-select-button"]')();
|
|
271
|
+
}
|
|
272
|
+
async getAllSelectionButtons() {
|
|
273
|
+
return await (await this.locatorFor(PSelectButtonHarness)()).getAllButtons();
|
|
274
|
+
}
|
|
275
|
+
}
|
|
276
|
+
DiagramHarness.hostSelector = 'ocx-diagram';
|
|
277
|
+
|
|
278
|
+
class InteractiveDataViewHarness extends ContentContainerComponentHarness {
|
|
279
|
+
constructor() {
|
|
280
|
+
super(...arguments);
|
|
281
|
+
this.getDataLayoutSelection = this.locatorFor(DataLayoutSelectionHarness);
|
|
282
|
+
this.getColumnGroupSelectionDropdown = this.locatorForOptional(PDropdownHarness.with({ id: 'columnGroupSelectionDropdown' }));
|
|
283
|
+
this.getCustomGroupColumnSelector = this.locatorFor(CustomGroupColumnSelectorHarness);
|
|
284
|
+
this.getDataListGridSortingDropdown = this.locatorForOptional(PDropdownHarness.with({ id: 'dataListGridSortingDropdown' }));
|
|
285
|
+
this.getDataListGridSortingButton = this.locatorForOptional(PButtonHarness.with({ id: 'dataListGridSortingButton' }));
|
|
286
|
+
this.getDataView = this.locatorFor(DataViewHarness);
|
|
287
|
+
}
|
|
288
|
+
}
|
|
289
|
+
InteractiveDataViewHarness.hostSelector = 'ocx-interactive-data-view';
|
|
290
|
+
|
|
291
|
+
class PageHeaderHarness extends ComponentHarness {
|
|
292
|
+
constructor() {
|
|
293
|
+
super(...arguments);
|
|
294
|
+
this.getPageHeaderWrapperHarness = this.locatorForAll('[name="ocx-page-header-wrapper"]');
|
|
295
|
+
}
|
|
296
|
+
async getInlineActionButtons() {
|
|
297
|
+
return await this.locatorForAll('[name="ocx-page-header-inline-action-button"]')();
|
|
298
|
+
}
|
|
299
|
+
async getOverflowActionButtons() {
|
|
300
|
+
return await this.locatorForAll('[name="ocx-page-header-overflow-action-button"]')();
|
|
301
|
+
}
|
|
302
|
+
async getElementByTitle(title) {
|
|
303
|
+
return await this.locatorForOptional(`[title="${title}"]`)();
|
|
304
|
+
}
|
|
305
|
+
async getObjectInfos() {
|
|
306
|
+
return await this.locatorForAll('.object-info')();
|
|
307
|
+
}
|
|
308
|
+
async getObjectDetailLabels() {
|
|
309
|
+
return await this.locatorForAll('[name="object-detail-label"]')();
|
|
310
|
+
}
|
|
311
|
+
async getObjectDetailValues() {
|
|
312
|
+
return await this.locatorForAll('[name="object-detail-value"]')();
|
|
313
|
+
}
|
|
314
|
+
async getObjectDetailIcons() {
|
|
315
|
+
return await this.locatorForAll('[name="object-detail-icon"]')();
|
|
316
|
+
}
|
|
317
|
+
async getOverFlowMenuItems() {
|
|
318
|
+
const menu = await this.locatorFor(PMenuHarness)();
|
|
319
|
+
const menuItems = await menu.getAllMenuItems();
|
|
320
|
+
return menuItems ?? [];
|
|
321
|
+
}
|
|
322
|
+
}
|
|
323
|
+
PageHeaderHarness.hostSelector = 'ocx-page-header';
|
|
324
|
+
|
|
325
|
+
class SearchConfigHarness extends ContentContainerComponentHarness {
|
|
326
|
+
constructor() {
|
|
327
|
+
super(...arguments);
|
|
328
|
+
this.getSearchConfigDropdown = this.locatorForOptional(PDropdownHarness.with({ id: 'searchConfig' }));
|
|
329
|
+
}
|
|
330
|
+
}
|
|
331
|
+
SearchConfigHarness.hostSelector = 'ocx-search-config';
|
|
332
|
+
|
|
333
|
+
/**
|
|
334
|
+
* Generated bundle index. Do not edit.
|
|
335
|
+
*/
|
|
336
|
+
|
|
337
|
+
export { ColumnGroupSelectionHarness, CustomGroupColumnSelectorHarness, DataLayoutSelectionHarness, DataListGridHarness, DataTableHarness, DataViewHarness, DefaultGridItemHarness, DefaultListItemHarness, DiagramHarness, InteractiveDataViewHarness, MoreActionsMenuButtonHarness, PageHeaderHarness, SearchConfigHarness };
|
|
338
|
+
//# sourceMappingURL=onecx-angular-accelerator-testing.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"onecx-angular-accelerator-testing.mjs","sources":["../../../../libs/angular-accelerator/testing/column-group-selection.harness.ts","../../../../libs/angular-accelerator/testing/custom-group-column-selector.harness.ts","../../../../libs/angular-accelerator/testing/data-layout-selection.harness.ts","../../../../libs/angular-accelerator/testing/more-actions-menu-button.harness.ts","../../../../libs/angular-accelerator/testing/default-grid-item.harness.ts","../../../../libs/angular-accelerator/testing/default-list-item.harness.ts","../../../../libs/angular-accelerator/testing/data-list-grid.harness.ts","../../../../libs/angular-accelerator/testing/data-table.harness.ts","../../../../libs/angular-accelerator/testing/data-view.harness.ts","../../../../libs/angular-accelerator/testing/diagram.harness.ts","../../../../libs/angular-accelerator/testing/interactive-data-view.harness.ts","../../../../libs/angular-accelerator/testing/page-header.harness.ts","../../../../libs/angular-accelerator/testing/search-config.harness.ts","../../../../libs/angular-accelerator/testing/onecx-angular-accelerator-testing.ts"],"sourcesContent":["import { ComponentHarness } from '@angular/cdk/testing'\nimport { PDropdownHarness } from '@onecx/angular-testing'\n\nexport class ColumnGroupSelectionHarness extends ComponentHarness {\n static hostSelector = 'ocx-column-group-selection'\n\n getPDropdown = this.locatorFor(PDropdownHarness)\n}\n","import { ContentContainerComponentHarness } from '@angular/cdk/testing'\nimport { PDialogHarness, PPicklistHarness, PButtonHarness } from '@onecx/angular-testing'\n\nexport class CustomGroupColumnSelectorHarness extends ContentContainerComponentHarness {\n static hostSelector = 'ocx-custom-group-column-selector'\n\n getCustomGroupColumnSelectorButton = this.locatorFor(\n PButtonHarness.with({\n id: 'customGroupColumnSelectorButton',\n })\n )\n\n getDialog = this.locatorFor(PDialogHarness)\n getCancelButton = this.locatorFor(PButtonHarness)\n getSaveButton = this.locatorFor(PButtonHarness.with({ id: 'saveButton' }))\n getPicklist = this.locatorFor(PPicklistHarness)\n getSelectButtons = this.locatorForOptional('[name]')\n\n async getFrozenActionColumnSelectButton() {\n return await this.locatorForAll(`[name=\"frozen-action-column-select-button\"] .p-button`)()\n }\n\n async getActionColumnPositionSelectButtons() {\n return await this.locatorForAll(`[name=\"action-column-position-select-button\"] .p-button`)()\n }\n\n async openCustomGroupColumnSelectorDialog() {\n if (!(await (await this.getDialog()).isVisible())) {\n await (await this.getCustomGroupColumnSelectorButton()).click()\n } else {\n console.warn('Unable to open CustomGroupColumnSelectionDialog, because it is already open.')\n }\n }\n}\n","import { ContentContainerComponentHarness, TestElement } from '@angular/cdk/testing'\nimport { PrimeIcons } from 'primeng/api'\nimport { PSelectButtonHarness, PrimeIcon } from '@onecx/angular-testing'\n\nexport class DataLayoutSelectionHarness extends ContentContainerComponentHarness {\n static hostSelector = 'ocx-data-layout-selection'\n\n async getAllSelectionButtons() {\n return await (await this.locatorFor(PSelectButtonHarness)()).getAllButtons()\n }\n\n async getListLayoutSelectionButton() {\n return await this.isDesiredButton(await this.getAllSelectionButtons(), PrimeIcons.LIST)\n }\n\n async getGridLayoutSelectionButton() {\n return await this.isDesiredButton(await this.getAllSelectionButtons(), PrimeIcons.TH_LARGE)\n }\n\n async getTableLayoutSelectionButton() {\n return await this.isDesiredButton(await this.getAllSelectionButtons(), PrimeIcons.TABLE)\n }\n\n async getCurrentLayout() {\n return await (await this.host()).getAttribute('ng-reflect-layout')\n }\n\n async selectListLayout() {\n await (await this.getListLayoutSelectionButton())?.click()\n }\n\n private async isDesiredButton(value: TestElement[], icon: PrimeIcon) {\n for (let index = 0; index < value.length; index++) {\n if ((await value[index].getAttribute('aria-labelledby')) === icon) {\n return value[index]\n }\n }\n return null\n }\n}\n","import { ContentContainerComponentHarness, HarnessLoader } from '@angular/cdk/testing'\nimport { MenuItemHarness } from '@onecx/angular-testing'\n\nexport class MoreActionsMenuButtonHarness extends ContentContainerComponentHarness {\n static hostSelector = '.more-actions-menu-button'\n\n async getHarnessLoaderForPMenuOverlay(): Promise<HarnessLoader | null> {\n return this.documentRootLocatorFactory().harnessLoaderForOptional('.p-menu-overlay')\n }\n\n async isOpen(): Promise<boolean> {\n return !!(await this.getHarnessLoaderForPMenuOverlay())\n }\n\n async open() {\n if (!(await this.isOpen())) {\n await (await this.host()).click()\n } else {\n console.warn('Unable to open multiSelect, because it is already open.')\n }\n }\n\n async close() {\n if (await this.isOpen()) {\n await (await this.host()).click()\n } else {\n console.warn('Unable to open multiSelect, because it is already open.')\n }\n }\n\n async getAllActionsMenuItems() {\n await this.open()\n if (await this.getHarnessLoaderForPMenuOverlay()) {\n return this.documentRootLocatorFactory().locatorForAll(MenuItemHarness)()\n }\n return []\n }\n}\n","import { ComponentHarness } from '@angular/cdk/testing'\nimport { DivHarness } from '@onecx/angular-testing'\nimport { MoreActionsMenuButtonHarness } from './more-actions-menu-button.harness'\n\nexport class DefaultGridItemHarness extends ComponentHarness {\n static hostSelector = '.data-grid-item'\n\n getMoreActionsButton = this.locatorFor(MoreActionsMenuButtonHarness)\n private getAllDivs = this.locatorForAll(DivHarness)\n private getGridImg = this.locatorFor('img')\n\n async getData() {\n const isDataGridItemsDiv = await Promise.all(\n (await this.getAllDivs()).map((divHarness) => this.checkDivsHasClasses(divHarness))\n )\n const divHarnesses = (await this.getAllDivs()).filter((_v, index) => isDataGridItemsDiv[index])\n const getDivTexts: (string | null)[] = await Promise.all(divHarnesses.map((divHarness) => divHarness.getText()))\n getDivTexts.unshift(await (await this.getGridImg()).getAttribute('src'))\n return getDivTexts\n }\n\n async checkDivsHasClasses(value: DivHarness) {\n const hasClass = (await value.checkHasClass('item-name')) || (await value.checkHasClass('subtitleLine'))\n return hasClass\n }\n}\n","import { ComponentHarness } from '@angular/cdk/testing'\nimport { ButtonHarness, DivHarness } from '@onecx/angular-testing'\n\nexport class DefaultListItemHarness extends ComponentHarness {\n static hostSelector = '.data-list-items'\n\n getAllActionButtons = this.locatorForAll('button')\n getViewButton = this.locatorForOptional(ButtonHarness.with({ class: 'viewListItemButton' }))\n getEditButton = this.locatorForOptional(ButtonHarness.with({ class: 'editListItemButton' }))\n getDeleteButton = this.locatorForOptional(ButtonHarness.with({ class: 'deleteListItemButton' }))\n\n private getAllDivs = this.locatorForAll(DivHarness)\n\n async getData() {\n const isDataListItemsDiv = await Promise.all(\n (await this.getAllDivs()).map((innerDivHarness) => this.checkDivsHasClasses(innerDivHarness))\n )\n const divHarnesses = (await this.getAllDivs()).filter((_v, index) => isDataListItemsDiv[index])\n const getDivTexts = await Promise.all(divHarnesses.map((divHarness) => divHarness.getText()))\n return getDivTexts\n }\n\n async checkDivsHasClasses(value: DivHarness) {\n const hasClass = (await value.checkHasClass('item-name-row')) || (await value.checkHasClass('subtitleLine'))\n return hasClass\n }\n}\n","import { ContentContainerComponentHarness, TestElement } from '@angular/cdk/testing'\nimport { PPaginatorHarness } from '@onecx/angular-testing'\nimport { DefaultGridItemHarness } from './default-grid-item.harness'\nimport { DefaultListItemHarness } from './default-list-item.harness'\n\nexport class DataListGridHarness extends ContentContainerComponentHarness {\n static hostSelector = 'ocx-data-list-grid'\n\n getDefaultGridItems = this.locatorForAll(DefaultGridItemHarness)\n getDefaultListItems = this.locatorForAll(DefaultListItemHarness)\n getPaginator = this.locatorFor(PPaginatorHarness)\n getMenuButton = this.locatorFor(`[name=\"data-grid-item-menu-button\"]`)\n\n async getActionButtons(actionButtonType: 'list' | 'grid' | 'grid-hidden') {\n if (actionButtonType === 'list') {\n return await this.locatorForAll(`[name=\"data-list-action-button\"]`)()\n } else if (actionButtonType === 'grid-hidden') {\n return await this.documentRootLocatorFactory().locatorForAll(\n `[data-automationid=\"data-grid-action-button-hidden\"]`\n )()\n } else {\n return await this.documentRootLocatorFactory().locatorForAll(`[data-automationid=\"data-grid-action-button\"]`)()\n }\n }\n\n async actionButtonIsDisabled(actionButton: TestElement, viewType: 'list' | 'grid') {\n if (viewType === 'list') {\n return await actionButton.getProperty('disabled')\n } else {\n return await actionButton.hasClass('p-disabled')\n }\n }\n\n async hasAmountOfActionButtons(actionButtonType: 'list' | 'grid' | 'grid-hidden', amount: number) {\n return (await this.getActionButtons(actionButtonType)).length === amount\n }\n\n async hasAmountOfDisabledActionButtons(viewType: 'list' | 'grid', amount: number) {\n let disabledActionButtons = []\n if (viewType === 'list') {\n disabledActionButtons = await this.documentRootLocatorFactory().locatorForAll(\n `[name=\"data-list-action-button\"]:disabled`\n )()\n } else {\n disabledActionButtons = await this.documentRootLocatorFactory().locatorForAll(\n `li.p-menuitem>a.p-menuitem-link.p-disabled`\n )()\n }\n return disabledActionButtons.length === amount\n }\n}\n","import { ContentContainerComponentHarness, TestElement } from '@angular/cdk/testing'\nimport {\n TableHeaderColumnHarness,\n TableRowHarness,\n PPaginatorHarness,\n PTableCheckboxHarness,\n} from '@onecx/angular-testing'\n\nexport class DataTableHarness extends ContentContainerComponentHarness {\n static hostSelector = 'ocx-data-table'\n\n getHeaderColumns = this.locatorForAll(TableHeaderColumnHarness)\n getRows = this.locatorForAll(TableRowHarness)\n getPaginator = this.locatorFor(PPaginatorHarness)\n\n async rowSelectionIsEnabled(): Promise<boolean> {\n const pTableCheckbox = await this.getHarnessesForCheckboxes('all')\n return pTableCheckbox.length > 0\n }\n\n async getHarnessesForCheckboxes(type: 'all' | 'checked' | 'unchecked'): Promise<PTableCheckboxHarness[]> {\n let checkBoxHarnesses: PTableCheckboxHarness[]\n if (type === 'checked') {\n checkBoxHarnesses = await this.getAllHarnesses(PTableCheckboxHarness.with({ isSelected: true }))\n return checkBoxHarnesses\n }\n if (type === 'unchecked') {\n checkBoxHarnesses = await this.getAllHarnesses(PTableCheckboxHarness.with({ isSelected: false }))\n return checkBoxHarnesses\n } else {\n checkBoxHarnesses = await this.getAllHarnesses(PTableCheckboxHarness)\n return checkBoxHarnesses\n }\n }\n\n async getActionColumnHeader(position: 'left' | 'right') {\n return await this.locatorForOptional(`[name=\"action-column-header-${position}\"]`)()\n }\n\n async getActionColumn(position: 'left' | 'right') {\n return await this.locatorForOptional(`[name=\"action-column-${position}\"]`)()\n }\n\n async getActionButtons() {\n return await this.locatorForAll(`[name=\"data-table-action-button\"]`)()\n }\n\n async actionButtonIsDisabled(actionButton: TestElement) {\n const isDisabled = await actionButton.getProperty('disabled')\n return isDisabled\n }\n\n async hasAmountOfActionButtons(amount: number) {\n return (await this.getActionButtons()).length === amount\n }\n\n async hasAmountOfDisabledActionButtons(amount: number) { \n const disabledActionButtons = await this.documentRootLocatorFactory().locatorForAll(\n `[name=\"data-table-action-button\"]:disabled`\n )()\n return disabledActionButtons.length === amount\n }\n\n async columnIsFrozen(column: TestElement | null) {\n if (column == null) {\n throw new Error('Given column is null')\n }\n return await column.hasClass('p-frozen-column')\n }\n}\n","import { ContentContainerComponentHarness } from '@angular/cdk/testing'\nimport { DataListGridHarness } from './data-list-grid.harness'\nimport { DataTableHarness } from './data-table.harness'\n\nexport class DataViewHarness extends ContentContainerComponentHarness {\n static hostSelector = 'ocx-data-view'\n\n getDataTable = this.locatorFor(DataTableHarness)\n getDataListGrid = this.locatorFor(DataListGridHarness)\n}\n","import { ComponentHarness } from '@angular/cdk/testing'\nimport { PChartHarness, PSelectButtonHarness } from '@onecx/angular-testing'\n\nexport class DiagramHarness extends ComponentHarness {\n static hostSelector = 'ocx-diagram'\n\n getChart = this.locatorFor(PChartHarness)\n\n async getTotalNumberOfResults(): Promise<number | undefined> {\n return (await this.locatorForOptional('.sumKey span[name=\"amountOfData\"]')())?.text().then((s) => Number(s))\n }\n\n async getSumLabel(): Promise<string | undefined> {\n return (await this.locatorForOptional('.sumKey span[name=\"sumLabel\"]')())?.text()\n }\n\n async getDiagramTypeSelectButton() {\n return await this.locatorForOptional('p-selectButton[name=\"diagram-type-select-button\"]')()\n }\n\n async getAllSelectionButtons() {\n return await (await this.locatorFor(PSelectButtonHarness)()).getAllButtons()\n }\n}\n","import { ContentContainerComponentHarness } from '@angular/cdk/testing'\nimport { PButtonHarness } from '@onecx/angular-testing'\nimport { PDropdownHarness } from '@onecx/angular-testing'\nimport { CustomGroupColumnSelectorHarness } from '.'\nimport { DataLayoutSelectionHarness } from './data-layout-selection.harness'\nimport { DataViewHarness } from './data-view.harness'\n\nexport class InteractiveDataViewHarness extends ContentContainerComponentHarness {\n static hostSelector = 'ocx-interactive-data-view'\n\n getDataLayoutSelection = this.locatorFor(DataLayoutSelectionHarness)\n getColumnGroupSelectionDropdown = this.locatorForOptional(\n PDropdownHarness.with({ id: 'columnGroupSelectionDropdown' })\n )\n getCustomGroupColumnSelector = this.locatorFor(CustomGroupColumnSelectorHarness)\n getDataListGridSortingDropdown = this.locatorForOptional(PDropdownHarness.with({ id: 'dataListGridSortingDropdown' }))\n getDataListGridSortingButton = this.locatorForOptional(PButtonHarness.with({ id: 'dataListGridSortingButton' }))\n getDataView = this.locatorFor(DataViewHarness)\n}\n","import { ComponentHarness } from '@angular/cdk/testing'\nimport { PMenuHarness } from '@onecx/angular-testing'\n\nexport class PageHeaderHarness extends ComponentHarness {\n static hostSelector = 'ocx-page-header'\n\n getPageHeaderWrapperHarness = this.locatorForAll('[name=\"ocx-page-header-wrapper\"]')\n\n async getInlineActionButtons() {\n return await this.locatorForAll('[name=\"ocx-page-header-inline-action-button\"]')()\n }\n\n async getOverflowActionButtons() {\n return await this.locatorForAll('[name=\"ocx-page-header-overflow-action-button\"]')()\n }\n\n async getElementByTitle(title: string) {\n return await this.locatorForOptional(`[title=\"${title}\"]`)()\n }\n\n async getObjectInfos() {\n return await this.locatorForAll('.object-info')()\n }\n\n async getObjectDetailLabels() {\n return await this.locatorForAll('[name=\"object-detail-label\"]')()\n }\n\n async getObjectDetailValues() {\n return await this.locatorForAll('[name=\"object-detail-value\"]')()\n }\n\n async getObjectDetailIcons() {\n return await this.locatorForAll('[name=\"object-detail-icon\"]')()\n }\n\n async getOverFlowMenuItems() {\n const menu = await this.locatorFor(PMenuHarness)()\n const menuItems = await menu.getAllMenuItems()\n return menuItems ?? []\n }\n}\n","import { ContentContainerComponentHarness } from '@angular/cdk/testing'\nimport { PDropdownHarness } from '@onecx/angular-testing'\n\nexport class SearchConfigHarness extends ContentContainerComponentHarness {\n static hostSelector = 'ocx-search-config'\n\n getSearchConfigDropdown = this.locatorForOptional(PDropdownHarness.with({ id: 'searchConfig' }))\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|