diff --git a/lib/content-services/src/lib/dialogs/library/library.dialog.spec.ts b/lib/content-services/src/lib/dialogs/library/library.dialog.spec.ts index b311f0eba1..f097e4a03c 100644 --- a/lib/content-services/src/lib/dialogs/library/library.dialog.spec.ts +++ b/lib/content-services/src/lib/dialogs/library/library.dialog.spec.ts @@ -351,7 +351,7 @@ describe('LibraryDialogComponent', () => { it('should not show required error on opening dialog', async () => { findSitesSpy.and.returnValue(Promise.resolve(findSitesResponse)); fixture.detectChanges(); - const titleFormField = await unitTestingUtils.getMatFormField(); + const titleFormField = await unitTestingUtils.formField.get(); const errors = await titleFormField.getTextErrors(); expect(errors.length).toBe(0); }); @@ -371,7 +371,7 @@ describe('LibraryDialogComponent', () => { component.form.controls.title.setValue(''); fixture.detectChanges(); - const titleFormField = await unitTestingUtils.getMatFormField(); + const titleFormField = await unitTestingUtils.formField.get(); const errors = await titleFormField.getTextErrors(); expect(component.form.controls.title.errors).toEqual({ required: true }); @@ -385,7 +385,7 @@ describe('LibraryDialogComponent', () => { component.form.controls.id.markAsTouched(); fixture.detectChanges(); - const idFormField = await unitTestingUtils.getMatFormFieldByCSS('.adf-library-dialog-form-field:nth-of-type(2)'); + const idFormField = await unitTestingUtils.formField.getByCSS('.adf-library-dialog-form-field:nth-of-type(2)'); const errors = await idFormField.getTextErrors(); expect(component.form.controls.id.errors).toEqual({ required: true }); diff --git a/lib/content-services/src/lib/search/components/search-filter-container/search-filter-container.component.spec.ts b/lib/content-services/src/lib/search/components/search-filter-container/search-filter-container.component.spec.ts index bb5c8609a6..4dc3e767b4 100644 --- a/lib/content-services/src/lib/search/components/search-filter-container/search-filter-container.component.spec.ts +++ b/lib/content-services/src/lib/search/components/search-filter-container/search-filter-container.component.spec.ts @@ -24,7 +24,6 @@ import { SearchFilterContainerComponent } from './search-filter-container.compon import { SearchCategory } from '../../models/search-category.interface'; import { HarnessLoader } from '@angular/cdk/testing'; import { TestbedHarnessEnvironment } from '@angular/cdk/testing/testbed'; -import { MatMenuHarness } from '@angular/material/menu/testing'; import { MatButtonHarness } from '@angular/material/button/testing'; import { MatInputHarness } from '@angular/material/input/testing'; import { provideRouter } from '@angular/router'; @@ -93,7 +92,7 @@ describe('SearchFilterContainerComponent', () => { }); it('should set/update the active filter after the Apply button is clicked', async () => { - const menu = await loader.getHarness(MatMenuHarness); + const menu = await unitTestingUtils.menu.get(); await menu.open(); component.widgetContainer.componentRef.instance.value = 'searchText'; @@ -118,7 +117,7 @@ describe('SearchFilterContainerComponent', () => { it('should remove active filter after the Clear button is clicked', async () => { queryBuilder.setActiveFilter('queryName', 'searchText'); - const menu = await loader.getHarness(MatMenuHarness); + const menu = await unitTestingUtils.menu.get(); await menu.open(); component.widgetContainer.componentRef.instance.value = 'searchText'; @@ -137,7 +136,7 @@ describe('SearchFilterContainerComponent', () => { eventRaised = true; }); - const menu = await loader.getHarness(MatMenuHarness); + const menu = await unitTestingUtils.menu.get(); await menu.open(); component.widgetContainer.componentRef.instance.value = 'searchText'; @@ -182,7 +181,7 @@ describe('SearchFilterContainerComponent', () => { it('should set up a focus trap on the filter when the menu is opened', async () => { expect(component.focusTrap).toBeUndefined(); - const menu = await loader.getHarness(MatMenuHarness); + const menu = await unitTestingUtils.menu.get(); await menu.open(); expect(component.focusTrap).toBeDefined(); @@ -193,7 +192,7 @@ describe('SearchFilterContainerComponent', () => { // TODO: very flaky test, need to be refactored // eslint-disable-next-line ban/ban xit('should focus the input element when the menu is opened', async () => { - const menu = await loader.getHarness(MatMenuHarness); + const menu = await unitTestingUtils.menu.get(); await menu.open(); const input = await menu.getHarness(MatInputHarness); @@ -201,7 +200,7 @@ describe('SearchFilterContainerComponent', () => { }); it('should focus the menu trigger when the menu is closed', async () => { - const menu = await loader.getHarness(MatMenuHarness); + const menu = await unitTestingUtils.menu.get(); await menu.open(); await menu.close(); @@ -209,7 +208,7 @@ describe('SearchFilterContainerComponent', () => { }); it('should use a fieldset with aria-labelledby pointing to the legend', async () => { - const menu = await loader.getHarness(MatMenuHarness); + const menu = await unitTestingUtils.menu.get(); await menu.open(); fixture.detectChanges(); @@ -225,7 +224,7 @@ describe('SearchFilterContainerComponent', () => { }); it('should have the legend text matching the category name', async () => { - const menu = await loader.getHarness(MatMenuHarness); + const menu = await unitTestingUtils.menu.get(); await menu.open(); fixture.detectChanges(); diff --git a/lib/content-services/src/lib/tree/components/tree.component.spec.ts b/lib/content-services/src/lib/tree/components/tree.component.spec.ts index b974a44444..753e0fd5e7 100644 --- a/lib/content-services/src/lib/tree/components/tree.component.spec.ts +++ b/lib/content-services/src/lib/tree/components/tree.component.spec.ts @@ -29,7 +29,6 @@ import { SelectionChange } from '@angular/cdk/collections'; import { DebugElement } from '@angular/core'; import { HarnessLoader } from '@angular/cdk/testing'; import { TestbedHarnessEnvironment } from '@angular/cdk/testing/testbed'; -import { MatCheckboxHarness } from '@angular/material/checkbox/testing'; import { TranslateService } from '@ngx-translate/core'; describe('TreeComponent', () => { @@ -49,7 +48,7 @@ describe('TreeComponent', () => { const getNodePadding = (nodeId: string) => parseInt(getComputedStyle(getNode(nodeId).nativeElement).paddingLeft, 10); - const getNodeSpinner = async (nodeId: string) => testingUtils.getMatProgressSpinnerWithAncestorByDataAutomationId(`node_${nodeId}`); + const getNodeSpinner = async (nodeId: string) => testingUtils.progressSpinner.getWithAncestorByDataAutomationId(`node_${nodeId}`); const clickExpandCollapseBtn = (nodeId: string) => testingUtils.clickByCSS(`${composeNodeSelector(nodeId)} .adf-tree-expand-collapse-button`); @@ -138,7 +137,7 @@ describe('TreeComponent', () => { component.loadingRoot$ = of(true); fixture.detectChanges(); - const matSpinnerElement = await testingUtils.getMatProgressSpinnerWithAncestorByCSS('.adf-tree-loading-spinner-container'); + const matSpinnerElement = await testingUtils.progressSpinner.getWithAncestorByCSS('.adf-tree-loading-spinner-container'); expect(await matSpinnerElement.getMode()).toBe('indeterminate'); }); @@ -148,7 +147,7 @@ describe('TreeComponent', () => { component.collapseIcon = 'chevron_left'; component.treeService.collapseNode(component.treeService.treeNodes[0]); fixture.detectChanges(); - const icon = await testingUtils.getMatIconWithAncestorByCSS('.adf-tree-expand-collapse-button'); + const icon = await testingUtils.icon.getWithAncestorByCSS('.adf-tree-expand-collapse-button'); expect(await icon.getName()).toContain('folder'); spyOn(component.treeService.treeControl, 'isExpanded').and.returnValue(true); fixture.detectChanges(); @@ -324,7 +323,7 @@ describe('TreeComponent', () => { it('selection should be disabled by default, no checkboxes should be displayed', async () => { component.refreshTree(); fixture.detectChanges(); - const nodeCheckboxes = await loader.getAllHarnesses(MatCheckboxHarness); + const nodeCheckboxes = await testingUtils.checkbox.getAll(); expect(nodeCheckboxes.length).toEqual(0); expect(component.selectableNodes).toEqual(false); @@ -338,7 +337,7 @@ describe('TreeComponent', () => { it('should display checkboxes when selection is enabled', async () => { component.refreshTree(); fixture.detectChanges(); - const nodeCheckboxes = await loader.getAllHarnesses(MatCheckboxHarness); + const nodeCheckboxes = await testingUtils.checkbox.getAll(); const selectableNodes = component.treeService.treeNodes.filter((node: TreeNode) => node.nodeType !== TreeNodeType.LoadMoreNode); expect(nodeCheckboxes.length).toEqual(selectableNodes.length); }); @@ -577,7 +576,7 @@ describe('TreeComponent', () => { component.contextMenuOptions = [contextMenuOption1, contextMenuOption2]; fixture.detectChanges(); - const menu = await testingUtils.getMatMenuByCSS('#action_menu_right_testId1'); + const menu = await testingUtils.menu.getByCSS('#action_menu_right_testId1'); await menu.open(); expect(await menu.isOpen()).toBeTrue(); expect(component.contextMenuOptions.length).toEqual(2); diff --git a/lib/core/src/lib/about/about-license-list/about-license-list.component.spec.ts b/lib/core/src/lib/about/about-license-list/about-license-list.component.spec.ts index 7502760802..ba49017d4b 100644 --- a/lib/core/src/lib/about/about-license-list/about-license-list.component.spec.ts +++ b/lib/core/src/lib/about/about-license-list/about-license-list.component.spec.ts @@ -48,7 +48,7 @@ describe('AboutLicenseListComponent', () => { it('should display correct value when contains green check mark icon', async () => { fixture.detectChanges(); - expect(await (await (await unitTestingUtils.getMatCellByColumnName(columnName)).host()).getProperty(innerTextPropertyName)).toEqual( + expect(await (await (await unitTestingUtils.cell.getByColumnName(columnName)).host()).getProperty(innerTextPropertyName)).toEqual( '✅ ABOUT.LICENSE.ENABLED Value 1' ); }); @@ -57,7 +57,7 @@ describe('AboutLicenseListComponent', () => { component.data[0].value = '❌ Value 1'; fixture.detectChanges(); - expect(await (await (await unitTestingUtils.getMatCellByColumnName(columnName)).host()).getProperty(innerTextPropertyName)).toEqual( + expect(await (await (await unitTestingUtils.cell.getByColumnName(columnName)).host()).getProperty(innerTextPropertyName)).toEqual( '❌ ABOUT.LICENSE.DISABLED Value 1' ); }); @@ -66,7 +66,7 @@ describe('AboutLicenseListComponent', () => { component.data[0].value = 'Value 1'; fixture.detectChanges(); - expect(await (await (await unitTestingUtils.getMatCellByColumnName(columnName)).host()).getProperty(innerTextPropertyName)).toEqual( + expect(await (await (await unitTestingUtils.cell.getByColumnName(columnName)).host()).getProperty(innerTextPropertyName)).toEqual( 'Value 1' ); }); @@ -75,7 +75,7 @@ describe('AboutLicenseListComponent', () => { component.data[0].value = 3; fixture.detectChanges(); - expect(await (await (await unitTestingUtils.getMatCellByColumnName(columnName)).host()).getProperty(innerTextPropertyName)).toEqual('3'); + expect(await (await (await unitTestingUtils.cell.getByColumnName(columnName)).host()).getProperty(innerTextPropertyName)).toEqual('3'); }); }); }); diff --git a/lib/core/src/lib/card-view/components/card-view-arrayitem/card-view-arrayitem.component.spec.ts b/lib/core/src/lib/card-view/components/card-view-arrayitem/card-view-arrayitem.component.spec.ts index f5053853f6..6ea96341a3 100644 --- a/lib/core/src/lib/card-view/components/card-view-arrayitem/card-view-arrayitem.component.spec.ts +++ b/lib/core/src/lib/card-view/components/card-view-arrayitem/card-view-arrayitem.component.spec.ts @@ -74,17 +74,17 @@ describe('CardViewArrayItemComponent', () => { }); it('should call service on chip click', async () => { - await testingUtils.clickMatChip('card-arrayitem-chip-Zlatan'); + await testingUtils.chip.click('card-arrayitem-chip-Zlatan'); expect(serviceSpy).toHaveBeenCalled(); }); it('should call service on edit icon click', async () => { - await testingUtils.clickMatButtonByDataAutomationId('card-array-item-clickable-icon-array'); + await testingUtils.button.clickByDataAutomationId('card-array-item-clickable-icon-array'); expect(serviceSpy).toHaveBeenCalled(); }); it('should NOT call service on chip list container click', async () => { - await testingUtils.clickMatChipListbox('card-arrayitem-chip-list-container'); + await testingUtils.chipListbox.click('card-arrayitem-chip-list-container'); expect(serviceSpy).not.toHaveBeenCalled(); }); }); @@ -103,7 +103,7 @@ describe('CardViewArrayItemComponent', () => { }); fixture.detectChanges(); - const chipListBox = await testingUtils.getMatChips(); + const chipListBox = await testingUtils.chip.getAll(); expect(chipListBox).not.toBeNull(); expect(chipListBox.length).toBe(4); @@ -120,12 +120,12 @@ describe('CardViewArrayItemComponent', () => { }); fixture.detectChanges(); - const chipListBox = await testingUtils.getMatChips(); + const chipListBox = await testingUtils.chip.getAll(); expect(chipListBox).not.toBeNull(); expect(chipListBox.length).toBe(4); - const chip1Icon = await testingUtils.getMatIconWithAncestorByDataAutomationId('card-arrayitem-chip-Zlatan'); - const chip2Icon = await testingUtils.getMatIconWithAncestorByDataAutomationId('card-arrayitem-chip-Lionel Messi'); + const chip1Icon = await testingUtils.icon.getWithAncestorByDataAutomationId('card-arrayitem-chip-Zlatan'); + const chip2Icon = await testingUtils.icon.getWithAncestorByDataAutomationId('card-arrayitem-chip-Lionel Messi'); const firstChipText = await chipListBox[0].getText(); const secondChipText = await chipListBox[1].getText(); @@ -141,7 +141,7 @@ describe('CardViewArrayItemComponent', () => { clickable: true }); fixture.detectChanges(); - const editIcon = await testingUtils.getMatIconWithAncestorByDataAutomationId('card-array-item-clickable-icon-array'); + const editIcon = await testingUtils.icon.getWithAncestorByDataAutomationId('card-array-item-clickable-icon-array'); expect(await editIcon.getName()).toBe('edit'); }); @@ -152,15 +152,15 @@ describe('CardViewArrayItemComponent', () => { }); fixture.detectChanges(); - expect(await testingUtils.checkIfMatButtonExistsWithDataAutomationId('card-array-item-clickable-icon-array')).toBe(false); + expect(await testingUtils.button.existsByDataAutomationId('card-array-item-clickable-icon-array')).toBe(false); }); it('should render all values if noOfItemsToDisplay is not defined', async () => { fixture.detectChanges(); - const chipList = await testingUtils.getMatChips(); + const chipList = await testingUtils.chip.getAll(); - expect(await testingUtils.checkIfMatChipExistsWithDataAutomationId('card-arrayitem-more-chip')).toBeFalse(); + expect(await testingUtils.chip.existsByDataAutomationId('card-arrayitem-more-chip')).toBeFalse(); expect(chipList.length).toBe(4); }); @@ -171,7 +171,7 @@ describe('CardViewArrayItemComponent', () => { }); fixture.detectChanges(); - const chipList = await testingUtils.getMatChips(); + const chipList = await testingUtils.chip.getAll(); expect(chipList.length).toBe(3); expect(await chipList[2].getText()).toBe('2 CORE.CARDVIEW.MORE'); diff --git a/lib/core/src/lib/card-view/components/card-view-boolitem/card-view-boolitem.component.spec.ts b/lib/core/src/lib/card-view/components/card-view-boolitem/card-view-boolitem.component.spec.ts index 4d1e673615..7ec7e302d4 100644 --- a/lib/core/src/lib/card-view/components/card-view-boolitem/card-view-boolitem.component.spec.ts +++ b/lib/core/src/lib/card-view/components/card-view-boolitem/card-view-boolitem.component.spec.ts @@ -90,7 +90,7 @@ describe('CardViewBoolItemComponent', () => { component.property.value = true; fixture.detectChanges(); - const checkbox = await testingUtils.getMatCheckboxByDataAutomationId('card-boolean-boolKey'); + const checkbox = await testingUtils.checkbox.getByDataAutomationId('card-boolean-boolKey'); expect(checkbox).toBeDefined(); expect(await checkbox.isChecked()).toBeTrue(); }); @@ -102,7 +102,7 @@ describe('CardViewBoolItemComponent', () => { component.property.default = true; fixture.detectChanges(); - const checkbox = await testingUtils.getMatCheckboxByDataAutomationId('card-boolean-boolKey'); + const checkbox = await testingUtils.checkbox.getByDataAutomationId('card-boolean-boolKey'); expect(checkbox).toBeDefined(); expect(await checkbox.isChecked()).toBeTrue(); }); @@ -111,7 +111,7 @@ describe('CardViewBoolItemComponent', () => { component.property.value = false; fixture.detectChanges(); - const checkbox = await testingUtils.getMatCheckboxByDataAutomationId('card-boolean-boolKey'); + const checkbox = await testingUtils.checkbox.getByDataAutomationId('card-boolean-boolKey'); expect(checkbox).toBeDefined(); expect(await checkbox.isChecked()).toBeFalse(); }); @@ -123,7 +123,7 @@ describe('CardViewBoolItemComponent', () => { component.property.default = false; fixture.detectChanges(); - const checkbox = await testingUtils.getMatCheckboxByDataAutomationId('card-boolean-boolKey'); + const checkbox = await testingUtils.checkbox.getByDataAutomationId('card-boolean-boolKey'); expect(checkbox).toBeDefined(); expect(await checkbox.isChecked()).toBeFalse(); }); @@ -134,7 +134,7 @@ describe('CardViewBoolItemComponent', () => { component.property.value = true; fixture.detectChanges(); - const checkbox = await testingUtils.getMatCheckboxByDataAutomationId('card-boolean-boolKey'); + const checkbox = await testingUtils.checkbox.getByDataAutomationId('card-boolean-boolKey'); expect(checkbox).toBeDefined(); expect(await checkbox.isDisabled()).toBeFalse(); }); @@ -145,7 +145,7 @@ describe('CardViewBoolItemComponent', () => { component.property.value = true; fixture.detectChanges(); - const checkbox = await testingUtils.getMatCheckboxByDataAutomationId('card-boolean-boolKey'); + const checkbox = await testingUtils.checkbox.getByDataAutomationId('card-boolean-boolKey'); expect(checkbox).toBeDefined(); expect(await checkbox.isDisabled()).toBeTrue(); }); @@ -156,7 +156,7 @@ describe('CardViewBoolItemComponent', () => { component.property.value = true; fixture.detectChanges(); - const checkbox = await testingUtils.getMatCheckboxByDataAutomationId('card-boolean-boolKey'); + const checkbox = await testingUtils.checkbox.getByDataAutomationId('card-boolean-boolKey'); expect(checkbox).toBeDefined(); expect(await checkbox.isDisabled()).toBeTrue(); }); diff --git a/lib/core/src/lib/card-view/components/card-view-dateitem/card-view-dateitem.component.spec.ts b/lib/core/src/lib/card-view/components/card-view-dateitem/card-view-dateitem.component.spec.ts index 4e1bef31c2..f761604c32 100644 --- a/lib/core/src/lib/card-view/components/card-view-dateitem/card-view-dateitem.component.spec.ts +++ b/lib/core/src/lib/card-view/components/card-view-dateitem/card-view-dateitem.component.spec.ts @@ -349,7 +349,7 @@ describe('CardViewDateItemComponent', () => { fixture.detectChanges(); await fixture.whenStable(); - const chips = await testingUtils.getMatChips(); + const chips = await testingUtils.chip.getAll(); expect(chips.length).toBe(3); expect(await chips[0].getText()).toBe('Jul 10, 2017'); expect(await chips[1].getText()).toBe('Jul 11, 2017'); @@ -368,7 +368,7 @@ describe('CardViewDateItemComponent', () => { fixture.detectChanges(); await fixture.whenStable(); - const chips = await testingUtils.getMatChips(); + const chips = await testingUtils.chip.getAll(); expect(chips.length).toBe(3); expect(await chips[0].getText()).toBe('Jul 10, 2017, 0:01'); expect(await chips[1].getText()).toBe('Jul 11, 2017, 0:01'); @@ -462,7 +462,7 @@ describe('CardViewDateItemComponent', () => { it('should render error message when manual input has invalid date format', async () => { fixture.detectChanges(); - const manualInput = await testingUtils.getMatInputByDataAutomationId('datepicker-manual-input-dateKey'); + const manualInput = await testingUtils.input.getByDataAutomationId('datepicker-manual-input-dateKey'); await manualInput.setValue('not-a-date'); await manualInput.blur(); fixture.detectChanges(); @@ -470,7 +470,7 @@ describe('CardViewDateItemComponent', () => { fixture.detectChanges(); expect(component.cardViewDateTimeControl.invalid).toBeTrue(); - const formField = await testingUtils.getMatFormFieldByCSS('.adf-dateitem-editable'); + const formField = await testingUtils.formField.getByCSS('.adf-dateitem-editable'); expect(await formField.getTextErrors()).toContain('FORM.FIELD.VALIDATOR.INVALID_DATE_FORMAT'); }); diff --git a/lib/core/src/lib/card-view/components/card-view-keyvaluepairsitem/card-view-keyvaluepairsitem.component.spec.ts b/lib/core/src/lib/card-view/components/card-view-keyvaluepairsitem/card-view-keyvaluepairsitem.component.spec.ts index 326c380999..2142c3d24c 100644 --- a/lib/core/src/lib/card-view/components/card-view-keyvaluepairsitem/card-view-keyvaluepairsitem.component.spec.ts +++ b/lib/core/src/lib/card-view/components/card-view-keyvaluepairsitem/card-view-keyvaluepairsitem.component.spec.ts @@ -84,7 +84,7 @@ describe('CardViewKeyValuePairsItemComponent', () => { component.ngOnChanges(); fixture.detectChanges(); - await testingUtils.clickMatButtonByDataAutomationId('card-key-value-pairs-button-key-value-pairs'); + await testingUtils.button.clickByDataAutomationId('card-key-value-pairs-button-key-value-pairs'); fixture.detectChanges(); expect(JSON.stringify(component.values)).toBe(JSON.stringify(mockEmptyData)); @@ -103,10 +103,10 @@ describe('CardViewKeyValuePairsItemComponent', () => { component.ngOnChanges(); fixture.detectChanges(); - await testingUtils.clickMatButtonByDataAutomationId('card-key-value-pairs-button-key-value-pairs'); + await testingUtils.button.clickByDataAutomationId('card-key-value-pairs-button-key-value-pairs'); fixture.detectChanges(); - await testingUtils.clickMatButtonByCSS('.adf-property-col-delete'); + await testingUtils.button.clickByCSS('.adf-property-col-delete'); fixture.detectChanges(); expect(component.values.length).toBe(0); diff --git a/lib/core/src/lib/card-view/components/card-view-selectitem/card-view-selectitem.component.spec.ts b/lib/core/src/lib/card-view/components/card-view-selectitem/card-view-selectitem.component.spec.ts index 4dc9878c7c..6850dfd6d0 100644 --- a/lib/core/src/lib/card-view/components/card-view-selectitem/card-view-selectitem.component.spec.ts +++ b/lib/core/src/lib/card-view/components/card-view-selectitem/card-view-selectitem.component.spec.ts @@ -99,7 +99,7 @@ describe('CardViewSelectItemComponent', () => { component.ngOnChanges({}); fixture.detectChanges(); - const selectBox = await testingUtils.getMatSelectByDataAutomationId('select-box'); + const selectBox = await testingUtils.select.getByDataAutomationId('select-box'); expect(await selectBox.isDisabled()).toBe(true); }); @@ -117,7 +117,7 @@ describe('CardViewSelectItemComponent', () => { expect(component.property.value).toEqual('two'); expect(component.isEditable).toBe(true); - const options = await testingUtils.getMatSelectOptions(); + const options = await testingUtils.select.getOptions(); expect(options.length).toEqual(4); await options[1].click(); @@ -137,7 +137,7 @@ describe('CardViewSelectItemComponent', () => { expect(component.property.value).toEqual(2); expect(component.isEditable).toBe(true); - const options = await testingUtils.getMatSelectOptions(); + const options = await testingUtils.select.getOptions(); expect(options.length).toEqual(4); await options[1].click(); @@ -157,7 +157,7 @@ describe('CardViewSelectItemComponent', () => { expect(component.isEditable).toBe(true); - const options = await testingUtils.getMatSelectOptions(); + const options = await testingUtils.select.getOptions(); expect(await options[0].getText()).toBe('CORE.CARDVIEW.NONE'); }); @@ -167,7 +167,7 @@ describe('CardViewSelectItemComponent', () => { component.editable = true; fixture.detectChanges(); - expect(await testingUtils.checkIfMatSelectExists()).toBe(true); + expect(await testingUtils.select.exists()).toBe(true); }); it('should not have label twice', async () => { @@ -175,7 +175,7 @@ describe('CardViewSelectItemComponent', () => { component.editable = true; fixture.detectChanges(); const not_editable_label = testingUtils.getByCSS('.adf-property-label-not-editable'); - const field = await testingUtils.getMatFormFieldByCSS('.adf-property-value'); + const field = await testingUtils.formField.getByCSS('.adf-property-value'); expect(await field.hasLabel()).toBeTrue(); expect(not_editable_label).toBeFalsy(); @@ -186,7 +186,7 @@ describe('CardViewSelectItemComponent', () => { component.editable = true; fixture.detectChanges(); - const selectBox = await testingUtils.getMatSelectByDataAutomationId('select-box'); + const selectBox = await testingUtils.select.getByDataAutomationId('select-box'); const host = await selectBox.host(); expect(await host.getAttribute('aria-label')).toBe('Select box label'); }); @@ -206,11 +206,11 @@ describe('CardViewSelectItemComponent', () => { component.ngOnChanges({}); fixture.detectChanges(); - let options = await testingUtils.getMatSelectOptions(); + let options = await testingUtils.select.getOptions(); expect(options.length).toBe(3); testingUtils.fillInputByCSS('.adf-select-filter-input input', mockData[0].label); - options = await testingUtils.getMatSelectOptions(true); + options = await testingUtils.select.getOptions(true); expect(options.length).toBe(1); expect(await options[0].getText()).toEqual(mockData[0].label); }); @@ -228,7 +228,7 @@ describe('CardViewSelectItemComponent', () => { component.ngOnChanges({}); fixture.detectChanges(); - await testingUtils.openMatSelect(); + await testingUtils.select.open(); const filterInput = testingUtils.getInputByCSS('.adf-select-filter-input input'); expect(filterInput).toBeUndefined(); }); @@ -246,7 +246,7 @@ describe('CardViewSelectItemComponent', () => { component.ngOnChanges({}); fixture.detectChanges(); - await testingUtils.openMatSelect(); + await testingUtils.select.open(); const filterInput = testingUtils.getInputByCSS('.adf-select-filter-input input'); expect(filterInput).not.toBe(null); @@ -341,7 +341,7 @@ describe('CardViewSelectItemComponent', () => { component.ngOnChanges({}); fixture.detectChanges(); - const options = await testingUtils.typeAndGetOptionsForMatAutoComplete(fixture, 'Op'); + const options = await testingUtils.autocomplete.typeAndGetOptions(fixture, 'Op'); expect(options.length).toBe(2); expect(await options[0].getText()).toContain('Option 1'); expect(await options[1].getText()).toContain('Option 2'); @@ -378,7 +378,7 @@ describe('CardViewSelectItemComponent', () => { component.ngOnChanges({}); fixture.detectChanges(); - const options = await testingUtils.typeAndGetOptionsForMatAutoComplete(fixture, 'Option'); + const options = await testingUtils.autocomplete.typeAndGetOptions(fixture, 'Option'); expect(options.length).toBe(2); expect(await options[0].getText()).toContain('Option 1'); @@ -490,7 +490,7 @@ describe('CardViewSelectItemComponent', () => { component.ngOnChanges({}); fixture.detectChanges(); - const selectBox = await testingUtils.getMatSelectByDataAutomationId('select-box'); + const selectBox = await testingUtils.select.getByDataAutomationId('select-box'); expect(await selectBox.isMultiple()).toBe(true); }); @@ -500,7 +500,7 @@ describe('CardViewSelectItemComponent', () => { component.ngOnChanges({}); fixture.detectChanges(); - const options = await testingUtils.getMatSelectOptions(); + const options = await testingUtils.select.getOptions(); const optionTexts = await Promise.all(options.map((opt) => opt.getText())); const hasNoneOption = optionTexts.some((text) => text.includes('CORE.CARDVIEW.NONE')); @@ -515,7 +515,7 @@ describe('CardViewSelectItemComponent', () => { expect(component.property.value).toEqual(['one']); - const options = await testingUtils.getMatSelectOptions(); + const options = await testingUtils.select.getOptions(); await options[1].click(); expect(component.property.value).toContain('two'); @@ -548,7 +548,7 @@ describe('CardViewSelectItemComponent', () => { component.ngOnChanges({ property: new SimpleChange(null, component.property, true) } as SimpleChanges); fixture.detectChanges(); - const options = await testingUtils.typeAndGetOptionsForMatAutoComplete(fixture, 'Option'); + const options = await testingUtils.autocomplete.typeAndGetOptions(fixture, 'Option'); expect(options.length).toBe(3); @@ -584,7 +584,7 @@ describe('CardViewSelectItemComponent', () => { expect(component.property.value).toEqual(['option2']); expect(updateSpy).toHaveBeenCalledWith(jasmine.objectContaining(component.property), ['option2']); - const remainingChips = await testingUtils.getMatChips(); + const remainingChips = await testingUtils.chip.getAll(); expect(remainingChips.length).toBe(1); }); diff --git a/lib/core/src/lib/card-view/components/card-view-textitem/card-view-textitem.component.spec.ts b/lib/core/src/lib/card-view/components/card-view-textitem/card-view-textitem.component.spec.ts index 060a07dd20..11f09f6d76 100644 --- a/lib/core/src/lib/card-view/components/card-view-textitem/card-view-textitem.component.spec.ts +++ b/lib/core/src/lib/card-view/components/card-view-textitem/card-view-textitem.component.spec.ts @@ -40,7 +40,7 @@ describe('CardViewTextItemComponent', () => { const expectedErrorMessages = [{ message: 'Something went wrong' } as CardViewItemValidator]; - const getTextField = (key: string): Promise => testingUtils.getMatInputByDataAutomationId(`card-textitem-value-${key}`); + const getTextField = (key: string): Promise => testingUtils.input.getByDataAutomationId(`card-textitem-value-${key}`); const getTextFieldValue = async (key: string): Promise => { const textField = await getTextField(key); @@ -48,7 +48,7 @@ describe('CardViewTextItemComponent', () => { }; const updateTextField = async (key: string, value: string) => { - await testingUtils.fillMatInputByDataAutomationId(`card-textitem-value-${key}`, value); + await testingUtils.input.fillByDataAutomationId(`card-textitem-value-${key}`, value); component.update(); fixture.detectChanges(); }; @@ -104,7 +104,7 @@ describe('CardViewTextItemComponent', () => { fixture.detectChanges(); await fixture.whenStable(); - const valueChips = await testingUtils.getMatChips(); + const valueChips = await testingUtils.chip.getAll(); expect(valueChips.length).toBe(length); expect(await valueChips[0].getText()).toBe(param1); expect(await valueChips[1].getText()).toBe(param2); @@ -275,9 +275,7 @@ describe('CardViewTextItemComponent', () => { fixture.detectChanges(); await fixture.whenStable(); - const editIcon = await testingUtils.checkIfMatIconExistsWithAncestorByDataAutomationId( - `card-textitem-clickable-icon-${component.property.key}` - ); + const editIcon = await testingUtils.icon.existsWithAncestorByDataAutomationId(`card-textitem-clickable-icon-${component.property.key}`); expect(editIcon).toBeFalse(); }); @@ -333,14 +331,14 @@ describe('CardViewTextItemComponent', () => { fixture.detectChanges(); expect(getTextFieldError('textkey')).toBe('CORE.CARDVIEW.VALIDATORS.FLOAT_VALIDATION_ERROR'); - let valueChips = await testingUtils.getMatChips(); + let valueChips = await testingUtils.chip.getAll(); expect(valueChips.length).toBe(3); component.addValueToList({ value: '22.1', chipInput: inputElement } as MatChipInputEvent); fixture.detectChanges(); verifyNoErrors('textkey'); - valueChips = await testingUtils.getMatChips(); + valueChips = await testingUtils.chip.getAll(); expect(valueChips.length).toBe(4); }); @@ -361,7 +359,7 @@ describe('CardViewTextItemComponent', () => { await fixture.whenStable(); expect(await getTextFieldValue(component.property.key)).toBe('item1,item2,item3'); - expect(await testingUtils.checkIfMatChipGridExists()).toBe(false); + expect(await testingUtils.chipGrid.exists()).toBe(false); }); it('should display the label for multi-valued chips', async () => { @@ -437,9 +435,7 @@ describe('CardViewTextItemComponent', () => { await fixture.whenStable(); fixture.detectChanges(); - const editIcon = await testingUtils.checkIfMatIconExistsWithAncestorByDataAutomationId( - `card-textitem-clickable-icon-${component.property.key}` - ); + const editIcon = await testingUtils.icon.existsWithAncestorByDataAutomationId(`card-textitem-clickable-icon-${component.property.key}`); expect(editIcon).toBeFalse(); }); @@ -452,9 +448,7 @@ describe('CardViewTextItemComponent', () => { await fixture.whenStable(); fixture.detectChanges(); - const editIcon = await testingUtils.checkIfMatIconExistsWithAncestorByDataAutomationId( - `card-textitem-clickable-icon-${component.property.key}` - ); + const editIcon = await testingUtils.icon.existsWithAncestorByDataAutomationId(`card-textitem-clickable-icon-${component.property.key}`); expect(editIcon).toBeFalse(); }); @@ -468,7 +462,7 @@ describe('CardViewTextItemComponent', () => { await fixture.whenStable(); fixture.detectChanges(); - const editIcon = await testingUtils.getMatIconWithAncestorByDataAutomationId(`card-textitem-clickable-icon-${component.property.key}`); + const editIcon = await testingUtils.icon.getWithAncestorByDataAutomationId(`card-textitem-clickable-icon-${component.property.key}`); expect(editIcon).not.toBeNull(); expect(await editIcon.getName()).toBe('FAKE_ICON'); }); @@ -481,9 +475,7 @@ describe('CardViewTextItemComponent', () => { await fixture.whenStable(); fixture.detectChanges(); - const editIcon = await testingUtils.checkIfMatIconExistsWithAncestorByDataAutomationId( - `card-textitem-clickable-icon-${component.property.key}` - ); + const editIcon = await testingUtils.icon.existsWithAncestorByDataAutomationId(`card-textitem-clickable-icon-${component.property.key}`); expect(editIcon).toBeFalse(); }); @@ -495,9 +487,7 @@ describe('CardViewTextItemComponent', () => { await fixture.whenStable(); fixture.detectChanges(); - const editIcon = await testingUtils.checkIfMatIconExistsWithAncestorByDataAutomationId( - `card-textitem-clickable-icon-${component.property.key}` - ); + const editIcon = await testingUtils.icon.existsWithAncestorByDataAutomationId(`card-textitem-clickable-icon-${component.property.key}`); expect(editIcon).toBeFalse(); }); @@ -513,9 +503,9 @@ describe('CardViewTextItemComponent', () => { await fixture.whenStable(); fixture.detectChanges(); - const editIcon = await testingUtils.getMatIconWithAncestorByDataAutomationId(`card-textitem-clickable-icon-${component.property.key}`); + const editIcon = await testingUtils.icon.getWithAncestorByDataAutomationId(`card-textitem-clickable-icon-${component.property.key}`); expect(await editIcon.getName()).toBe('FAKE_ICON'); - await testingUtils.clickMatIconWithAncestorByDataAutomationId(`card-textitem-clickable-icon-${component.property.key}`); + await testingUtils.icon.clickWithAncestorByDataAutomationId(`card-textitem-clickable-icon-${component.property.key}`); fixture.detectChanges(); expect(callBackSpy).toHaveBeenCalled(); }); @@ -588,9 +578,7 @@ describe('CardViewTextItemComponent', () => { component.property.clickable = true; component.ngOnChanges({}); - loader = TestbedHarnessEnvironment.loader(fixture); - testingUtils.setLoader(loader); - const inputHarness = await testingUtils.getMatInputByDataAutomationId(`card-textitem-value-${component.property.key}`); + const inputHarness = await testingUtils.input.getByDataAutomationId(`card-textitem-value-${component.property.key}`); expect(component.isEditable).toBe(false); expect(await inputHarness.isDisabled()).toBe(true); diff --git a/lib/core/src/lib/card-view/components/card-view/card-view.component.spec.ts b/lib/core/src/lib/card-view/components/card-view/card-view.component.spec.ts index bb428c9fb2..9d42694bea 100644 --- a/lib/core/src/lib/card-view/components/card-view/card-view.component.spec.ts +++ b/lib/core/src/lib/card-view/components/card-view/card-view.component.spec.ts @@ -158,7 +158,7 @@ describe('CardViewComponent', () => { fixture.detectChanges(); await fixture.whenStable(); - const currentOptions = await testingUtils.getMatSelectOptions(); + const currentOptions = await testingUtils.select.getOptions(); expect(currentOptions.length).toBe(3); expect(await currentOptions[0].getText()).toContain('CORE.CARDVIEW.NONE'); expect(await currentOptions[1].getText()).toContain(options[0].label); @@ -187,7 +187,7 @@ describe('CardViewComponent', () => { fixture.detectChanges(); await fixture.whenStable(); - const currentOptions = await testingUtils.getMatSelectOptions(); + const currentOptions = await testingUtils.select.getOptions(); expect(currentOptions.length).toBe(3); expect(await currentOptions[0].getText()).toContain('CORE.CARDVIEW.NONE'); expect(await currentOptions[1].getText()).toContain(options[0].label); @@ -216,7 +216,7 @@ describe('CardViewComponent', () => { fixture.detectChanges(); await fixture.whenStable(); - const currentOptions = await testingUtils.getMatSelectOptions(); + const currentOptions = await testingUtils.select.getOptions(); expect(currentOptions.length).toBe(2); expect(await currentOptions[0].getText()).toContain(options[0].label); expect(await currentOptions[1].getText()).toContain(options[1].label); diff --git a/lib/core/src/lib/clipboard/clipboard.directive.spec.ts b/lib/core/src/lib/clipboard/clipboard.directive.spec.ts index e16fd4b97f..2adcd6af2f 100644 --- a/lib/core/src/lib/clipboard/clipboard.directive.spec.ts +++ b/lib/core/src/lib/clipboard/clipboard.directive.spec.ts @@ -60,7 +60,7 @@ describe('ClipboardDirective', () => { it('should notify copy target value on button click event', async () => { spyOn(clipboardService, 'copyToClipboard'); testingUtils.fillInputByCSS('input', 'some value'); - await testingUtils.clickMatButton(); + await testingUtils.button.click(); expect(clipboardService.copyToClipboard).toHaveBeenCalled(); }); @@ -68,7 +68,7 @@ describe('ClipboardDirective', () => { it('should notify copy target value on keydown event', async () => { spyOn(clipboardService, 'copyToClipboard'); testingUtils.fillInputByCSS('input', 'some value'); - await testingUtils.sendKeysToMatButton([TestKey.ENTER]); + await testingUtils.button.sendKeys([TestKey.ENTER]); expect(clipboardService.copyToClipboard).toHaveBeenCalled(); }); diff --git a/lib/core/src/lib/context-menu/context-menu.directive.spec.ts b/lib/core/src/lib/context-menu/context-menu.directive.spec.ts index df5ce9ac32..da9a4c9198 100644 --- a/lib/core/src/lib/context-menu/context-menu.directive.spec.ts +++ b/lib/core/src/lib/context-menu/context-menu.directive.spec.ts @@ -17,7 +17,6 @@ import { Component } from '@angular/core'; import { TestBed, ComponentFixture } from '@angular/core/testing'; -import { HarnessLoader } from '@angular/cdk/testing'; import { TestbedHarnessEnvironment } from '@angular/cdk/testing/testbed'; import { UnitTestingUtils } from '../testing/unit-testing-utils'; import { ContextMenuDirective } from '@alfresco/adf-core'; @@ -170,7 +169,6 @@ testCases.forEach((testCase) => { describe('Contextmenu list', () => { let contextMenu: HTMLElement | null; - let loader: HarnessLoader; beforeEach(() => { fixture.componentInstance.isEnabled = true; @@ -179,8 +177,7 @@ testCases.forEach((testCase) => { testingUtils.dispatchCustomEventByCSS('#target', 'contextmenu'); fixture.detectChanges(); contextMenu = document.querySelector('.adf-context-menu'); - loader = TestbedHarnessEnvironment.documentRootLoader(fixture); - testingUtils.setLoader(loader); + testingUtils = new UnitTestingUtils(fixture.debugElement, TestbedHarnessEnvironment.documentRootLoader(fixture)); }); it('should not render item with visibility property set to false', () => { @@ -192,7 +189,7 @@ testCases.forEach((testCase) => { }); it('should set first not disabled item as active', async () => { - const icon = await testingUtils.getMatIconWithAncestorByCSS('adf-context-menu'); + const icon = await testingUtils.icon.getWithAncestorByCSS('adf-context-menu'); expect(await icon.getName()).toEqual('action-icon-3'); }); @@ -212,7 +209,7 @@ testCases.forEach((testCase) => { }); it('should not render item icon if not set', async () => { - expect(await testingUtils.checkIfMatIconExistsWithAncestorByCSSAndName('adf-context-menu', 'Action 1')).toBeFalse(); + expect(await testingUtils.icon.existsWithAncestorByCSSAndName('adf-context-menu', 'Action 1')).toBeFalse(); }); }); }); diff --git a/lib/core/src/lib/datatable/components/columns-selector/columns-selector.component.spec.ts b/lib/core/src/lib/datatable/components/columns-selector/columns-selector.component.spec.ts index a961cd42e9..757e2ad4a2 100644 --- a/lib/core/src/lib/datatable/components/columns-selector/columns-selector.component.spec.ts +++ b/lib/core/src/lib/datatable/components/columns-selector/columns-selector.component.spec.ts @@ -34,9 +34,8 @@ describe('ColumnsSelectorComponent', () => { const menuOpenedTrigger = new Subject(); const menuClosedTrigger = new Subject(); - const getSelectorInputValue = (): Promise => testingUtils.getMatInputValueByDataAutomationId('adf-columns-selector-search-input'); - const fillSelectorInput = (value: string): Promise => - testingUtils.fillMatInputByDataAutomationId('adf-columns-selector-search-input', value); + const getSelectorInputValue = (): Promise => testingUtils.input.getValueByDataAutomationId('adf-columns-selector-search-input'); + const fillSelectorInput = (value: string): Promise => testingUtils.input.fillByDataAutomationId('adf-columns-selector-search-input', value); let mainMenuTrigger: { menuOpened: Observable; menuClosed: Observable }; @@ -115,7 +114,7 @@ describe('ColumnsSelectorComponent', () => { menuOpenedTrigger.next(); fixture.detectChanges(); - const options = await testingUtils.getAllMatListOptions(); + const options = await testingUtils.listOption.getAll(); const inputColumnsWithTitle = inputColumns.filter((column) => !!column.title); expect(options.length).toBe(inputColumnsWithTitle.length); @@ -136,7 +135,7 @@ describe('ColumnsSelectorComponent', () => { tick(400); fixture.detectChanges(); - const columnOptions = await testingUtils.getAllMatListOptions(); + const columnOptions = await testingUtils.listOption.getAll(); expect(columnOptions.length).toBe(1); expect(await columnOptions[0].getFullText()).toBe(inputColumns[0].title); @@ -146,7 +145,7 @@ describe('ColumnsSelectorComponent', () => { menuOpenedTrigger.next(); fixture.detectChanges(); - const firstColumnOption = await testingUtils.getMatListOption(); + const firstColumnOption = await testingUtils.listOption.get(); const optionName = await firstColumnOption.getFullText(); const toggledColumnItem = component.columnItems.find((item) => item.title === optionName); @@ -161,7 +160,7 @@ describe('ColumnsSelectorComponent', () => { menuOpenedTrigger.next(); fixture.detectChanges(); - const options = await testingUtils.getAllMatListOptions(); + const options = await testingUtils.listOption.getAll(); expect(await options[0].isSelected()).toBeTrue(); expect(await options[1].isSelected()).toBeTrue(); @@ -174,7 +173,7 @@ describe('ColumnsSelectorComponent', () => { menuOpenedTrigger.next(); fixture.detectChanges(); - const options = await testingUtils.getAllMatListOptions(); + const options = await testingUtils.listOption.getAll(); expect(await options[0].isDisabled()).toBeFalse(); expect(await options[1].isDisabled()).toBeFalse(); @@ -203,7 +202,7 @@ describe('ColumnsSelectorComponent', () => { menuOpenedTrigger.next(); fixture.detectChanges(); - const options = await testingUtils.getAllMatListOptions(); + const options = await testingUtils.listOption.getAll(); expect(await options[0].getFullText()).toBe(shownDataColumn.title); expect(await options[1].getFullText()).toBe(hiddenDataColumn.title); }); @@ -214,7 +213,7 @@ describe('ColumnsSelectorComponent', () => { menuOpenedTrigger.next(); fixture.detectChanges(); - const options = await testingUtils.getAllMatListOptions(); + const options = await testingUtils.listOption.getAll(); expect(await options[0].getFullText()).toBe(hiddenDataColumn.title); expect(await options[1].getFullText()).toBe(shownDataColumn.title); }); @@ -233,7 +232,7 @@ describe('ColumnsSelectorComponent', () => { component.columnsSorting = false; menuOpenedTrigger.next(); fixture.detectChanges(); - expect(await (await testingUtils.getMatListOption()).getFullText()).toBe(`${column.title} ${column.subtitle}`); + expect(await (await testingUtils.listOption.get()).getFullText()).toBe(`${column.title} ${column.subtitle}`); }); }); }); diff --git a/lib/core/src/lib/datatable/components/datatable/datatable.component.spec.ts b/lib/core/src/lib/datatable/components/datatable/datatable.component.spec.ts index 3597829541..80781d7ce5 100644 --- a/lib/core/src/lib/datatable/components/datatable/datatable.component.spec.ts +++ b/lib/core/src/lib/datatable/components/datatable/datatable.component.spec.ts @@ -1546,14 +1546,14 @@ describe('DataTable', () => { dataTable.displayCheckboxesOnHover = false; fixture.detectChanges(); - expect(await testingUtils.checkIfMatCheckboxesHaveClass('adf-datatable-hover-only')).toBeTrue(); + expect(await testingUtils.checkbox.allHaveClass('adf-datatable-hover-only')).toBeTrue(); }); it('should display checkboxes on hover when displayCheckboxesOnHover is set to true', async () => { dataTable.displayCheckboxesOnHover = true; fixture.detectChanges(); - expect(await testingUtils.checkIfMatCheckboxesHaveClass('adf-datatable-hover-only')).toBeTrue(); + expect(await testingUtils.checkbox.allHaveClass('adf-datatable-hover-only')).toBeTrue(); }); }); diff --git a/lib/core/src/lib/datatable/components/icon-cell/icon-cell.component.spec.ts b/lib/core/src/lib/datatable/components/icon-cell/icon-cell.component.spec.ts index 549a0fd265..492b912d26 100644 --- a/lib/core/src/lib/datatable/components/icon-cell/icon-cell.component.spec.ts +++ b/lib/core/src/lib/datatable/components/icon-cell/icon-cell.component.spec.ts @@ -34,7 +34,7 @@ describe('IconCellComponent', () => { component.value$.next(value); fixture.detectChanges(); - const icon = await testingUtils.getMatIconOrNull(); + const icon = await testingUtils.icon.getOrNull(); expectedOccurrence ? expect(icon).not.toBeNull() : expect(icon).toBeNull(); if (expectedIconName) { diff --git a/lib/core/src/lib/datatable/components/json-cell/json-cell.component.spec.ts b/lib/core/src/lib/datatable/components/json-cell/json-cell.component.spec.ts index 6e95f65244..2a07735dc0 100644 --- a/lib/core/src/lib/datatable/components/json-cell/json-cell.component.spec.ts +++ b/lib/core/src/lib/datatable/components/json-cell/json-cell.component.spec.ts @@ -75,7 +75,7 @@ describe('JsonCellComponent', () => { it('should render json button inside cell', async () => { fixture.detectChanges(); - expect(await testingUtils.checkIfMatButtonExists()).toBe(true); + expect(await testingUtils.button.exists()).toBe(true); }); it('should not setup cell when has no data', () => { diff --git a/lib/core/src/lib/directives/infinite-select-scroll.directive.spec.ts b/lib/core/src/lib/directives/infinite-select-scroll.directive.spec.ts index 1fc05fa591..fe0bbb7e84 100644 --- a/lib/core/src/lib/directives/infinite-select-scroll.directive.spec.ts +++ b/lib/core/src/lib/directives/infinite-select-scroll.directive.spec.ts @@ -72,7 +72,7 @@ describe('InfiniteSelectScrollDirective', () => { })); it('should call an action on scrollEnd event', async () => { - const panel = await testingUtils.getMatSelectHost(); + const panel = await testingUtils.select.getHost(); await panel.dispatchEvent('scrollEnd'); expect(component.options.length).toBe(60); diff --git a/lib/core/src/lib/form/components/widgets/amount/amount.widget.spec.ts b/lib/core/src/lib/form/components/widgets/amount/amount.widget.spec.ts index ddbe8d483f..820f7ec97d 100644 --- a/lib/core/src/lib/form/components/widgets/amount/amount.widget.spec.ts +++ b/lib/core/src/lib/form/components/widgets/amount/amount.widget.spec.ts @@ -218,7 +218,7 @@ describe('AmountWidgetComponent', () => { }); it('should show tooltip', async () => { - const host = await testingUtils.getMatInputHost(); + const host = await testingUtils.input.getHost(); await host.hover(); const tooltip = await host.getAttribute('title'); @@ -235,7 +235,7 @@ describe('AmountWidgetComponent', () => { }); it('should be marked as invalid after interaction', async () => { - const host = await testingUtils.getMatInputHost(); + const host = await testingUtils.input.getHost(); expect(testingUtils.getByCSS('.adf-invalid')).toBeFalsy(); await host.blur(); @@ -243,7 +243,7 @@ describe('AmountWidgetComponent', () => { }); it('should be able to display label with asterisk and input field is required', async () => { - const formField = await testingUtils.getMatFormField(); + const formField = await testingUtils.formField.get(); const formControl = await formField.getControl(); expect(formControl.isRequired).toBeTruthy(); @@ -282,7 +282,7 @@ describe('AmountWidgetComponent - rendering', () => { }); fixture.detectChanges(); - const field = await testingUtils.getMatFormField(); + const field = await testingUtils.formField.get(); expect(await field.getPrefixText()).toBe('$'); widget.field.currency = '£'; @@ -319,8 +319,8 @@ describe('AmountWidgetComponent - rendering', () => { fixture.detectChanges(); await fixture.whenStable(); - const field = await testingUtils.getMatFormField(); - const inputField = await testingUtils.getMatInputByPlaceholder('Check Placeholder Text'); + const field = await testingUtils.formField.get(); + const inputField = await testingUtils.input.getByPlaceholder('Check Placeholder Text'); expect(inputField).toBeTruthy(); expect(await field.getPrefixText()).toBe('$'); @@ -328,14 +328,14 @@ describe('AmountWidgetComponent - rendering', () => { expect(widgetLabel.textContent.trim()).toBe('Test Amount'); expect(widget.field.isValid).toBe(false); - const input = await testingUtils.getMatInput(); + const input = await testingUtils.input.get(); await input.setValue('90'); expect(widget.field.isValid).toBe(true); await input.setValue('gdfgdf'); expect(widget.field.isValid).toBe(false); - const formField = await testingUtils.getMatFormField(); + const formField = await testingUtils.formField.get(); const errors = await formField.getTextErrors(); expect(errors[0]).toContain('FORM.FIELD.VALIDATOR.INVALID_NUMBER'); }); @@ -364,16 +364,16 @@ describe('AmountWidgetComponent - rendering', () => { const widgetLabel = testingUtils.getByCSS('.adf-label').nativeElement; expect(widgetLabel.textContent.trim()).toBe('Test Amount'); - const field = await testingUtils.getMatFormField(); + const field = await testingUtils.formField.get(); expect(await field.getPrefixText()).toBe('£'); expect(widget.field.isValid).toBe(false); - const input = await testingUtils.getMatInput(); + const input = await testingUtils.input.get(); await input.setValue('8'); expect(widget.field.isValid).toBe(false); - const formField = await testingUtils.getMatFormField(); + const formField = await testingUtils.formField.get(); let errors = await formField.getTextErrors(); expect(errors[0].trim()).toContain('FORM.FIELD.VALIDATOR.NOT_LESS_THAN'); @@ -505,7 +505,7 @@ describe('AmountWidgetComponent - rendering', () => { }); it('should not display prefix with currency when enableDisplayBasedOnLocale = true', async () => { - const field = await testingUtils.getMatFormField(); + const field = await testingUtils.formField.get(); expect(await field.getPrefixText()).toBe(''); }); }); @@ -666,7 +666,7 @@ describe('AmountWidgetComponent - rendering', () => { }); it('should not display prefix with currency when enableDisplayBasedOnLocale = true', async () => { - const field = await testingUtils.getMatFormField(); + const field = await testingUtils.formField.get(); expect(await field.getPrefixText()).toBe(''); }); @@ -674,7 +674,7 @@ describe('AmountWidgetComponent - rendering', () => { const focusSpy = spyOn(widget, 'amountWidgetOnFocus').and.callThrough(); fixture.detectChanges(); - const field = await testingUtils.getMatInput(); + const field = await testingUtils.input.get(); const fieldValueBeforeFocus = await field.getValue(); await field.focus(); const fieldValue = await field.getValue(); @@ -691,7 +691,7 @@ describe('AmountWidgetComponent - rendering', () => { const blurSpy = spyOn(widget, 'amountWidgetOnBlur').and.callThrough(); fixture.detectChanges(); - const field = await testingUtils.getMatInput(); + const field = await testingUtils.input.get(); const fieldValueBeforeBlur = await field.getValue(); await field.setValue(newValue); await field.blur(); @@ -737,7 +737,7 @@ describe('AmountWidgetComponent - rendering', () => { const focusSpy = spyOn(widget, 'amountWidgetOnFocus').and.callThrough(); fixture.detectChanges(); - const field = await testingUtils.getMatInput(); + const field = await testingUtils.input.get(); const fieldValueBeforeFocus = await field.getValue(); await field.focus(); const fieldValue = await field.getValue(); @@ -754,7 +754,7 @@ describe('AmountWidgetComponent - rendering', () => { const blurSpy = spyOn(widget, 'amountWidgetOnBlur').and.callThrough(); fixture.detectChanges(); - const field = await testingUtils.getMatInput(); + const field = await testingUtils.input.get(); const fieldValueBeforeBlur = await field.getValue(); await field.setValue(newValue); await field.blur(); @@ -795,7 +795,7 @@ describe('AmountWidgetComponent - rendering', () => { }); it('should display prefix with currency when enableDisplayBasedOnLocale = true', async () => { - const field = await testingUtils.getMatFormField(); + const field = await testingUtils.formField.get(); expect(await field.getPrefixText()).toBe('USD'); }); @@ -803,7 +803,7 @@ describe('AmountWidgetComponent - rendering', () => { const focusSpy = spyOn(widget, 'amountWidgetOnFocus').and.callThrough(); fixture.detectChanges(); - const field = await testingUtils.getMatInput(); + const field = await testingUtils.input.get(); const fieldValueBeforeFocus = await field.getValue(); await field.focus(); const fieldValue = await field.getValue(); @@ -821,7 +821,7 @@ describe('AmountWidgetComponent - rendering', () => { const blurSpy = spyOn(widget, 'amountWidgetOnBlur').and.callThrough(); fixture.detectChanges(); - const field = await testingUtils.getMatInput(); + const field = await testingUtils.input.get(); const fieldValueBeforeBlur = await field.getValue(); await field.setValue(newValue); await field.blur(); diff --git a/lib/core/src/lib/form/components/widgets/checkbox/checkbox.widget.spec.ts b/lib/core/src/lib/form/components/widgets/checkbox/checkbox.widget.spec.ts index 76589d148e..8d3ea8527d 100644 --- a/lib/core/src/lib/form/components/widgets/checkbox/checkbox.widget.spec.ts +++ b/lib/core/src/lib/form/components/widgets/checkbox/checkbox.widget.spec.ts @@ -69,7 +69,7 @@ describe('CheckboxWidgetComponent', () => { }); it('should be marked as invalid when required after interaction', async () => { - const checkbox = await testingUtils.getMatCheckbox(); + const checkbox = await testingUtils.checkbox.get(); expect(testingUtils.getByCSS('.adf-invalid')).toBeFalsy(); await checkbox.check(); @@ -92,14 +92,14 @@ describe('CheckboxWidgetComponent', () => { widget.field.value = true; fixture.detectChanges(); - expect(await testingUtils.checkIfMatCheckboxIsChecked()).toBe(true); + expect(await testingUtils.checkbox.isChecked()).toBe(true); }); it('should not be checked if false is passed', async () => { widget.field.value = false; fixture.detectChanges(); - expect(await testingUtils.checkIfMatCheckboxIsChecked()).toBe(false); + expect(await testingUtils.checkbox.isChecked()).toBe(false); }); describe('when tooltip is set', () => { @@ -112,8 +112,8 @@ describe('CheckboxWidgetComponent', () => { }); it('should show tooltip', async () => { - await testingUtils.hoverOverMatCheckbox(); - const host = await testingUtils.getMatCheckboxHost(); + await testingUtils.checkbox.hover(); + const host = await testingUtils.checkbox.getHost(); const tooltip = await host.getAttribute('title'); expect(tooltip).toBe('my custom tooltip'); }); diff --git a/lib/core/src/lib/form/components/widgets/date-time/date-time.widget.spec.ts b/lib/core/src/lib/form/components/widgets/date-time/date-time.widget.spec.ts index b2c199ddbe..29f4a5b437 100644 --- a/lib/core/src/lib/form/components/widgets/date-time/date-time.widget.spec.ts +++ b/lib/core/src/lib/form/components/widgets/date-time/date-time.widget.spec.ts @@ -211,7 +211,7 @@ describe('DateTimeWidgetComponent', () => { fixture.detectChanges(); await fixture.whenStable(); - await testingUtils.fillMatInput('12-09-9999 10:30 AM'); + await testingUtils.input.fill('12-09-9999 10:30 AM'); expect(field.value).toEqual(jasmine.any(Date)); expect(field.value.getFullYear()).toBe(9999); @@ -232,7 +232,7 @@ describe('DateTimeWidgetComponent', () => { fixture.detectChanges(); - await testingUtils.fillMatInput('123abc'); + await testingUtils.input.fill('123abc'); expect(widget.datetimeInputControl.invalid).toBeTrue(); expect(field.value).toBe(null); @@ -254,7 +254,7 @@ describe('DateTimeWidgetComponent', () => { fixture.whenStable(); await fixture.whenStable(); - await testingUtils.fillMatInput(null); + await testingUtils.input.fill(null); expect(widget.datetimeInputControl.value).toBe(null); expect(widget.datetimeInputControl.valid).toBeTrue(); @@ -275,7 +275,7 @@ describe('DateTimeWidgetComponent', () => { fixture.detectChanges(); await fixture.whenStable(); - await testingUtils.fillMatInput('03-25-2025 02:30 PM'); + await testingUtils.input.fill('03-25-2025 02:30 PM'); expect(field.value).toEqual(jasmine.any(Date)); expect(field.value.getFullYear()).toBe(2025); @@ -297,7 +297,7 @@ describe('DateTimeWidgetComponent', () => { fixture.detectChanges(); await fixture.whenStable(); - await testingUtils.fillMatInput('03/25/2025 02:30 PM'); + await testingUtils.input.fill('03/25/2025 02:30 PM'); expect(widget.datetimeInputControl.invalid).toBeTrue(); expect(field.isValid).toBeFalse(); @@ -316,12 +316,12 @@ describe('DateTimeWidgetComponent', () => { fixture.detectChanges(); await fixture.whenStable(); - await testingUtils.fillMatInput('invalid-text'); + await testingUtils.input.fill('invalid-text'); expect(widget.datetimeInputControl.invalid).toBeTrue(); expect(field.isValid).toBeFalse(); - await testingUtils.fillMatInput(''); + await testingUtils.input.fill(''); expect(widget.datetimeInputControl.valid).toBeTrue(); expect(field.isValid).toBeTrue(); @@ -360,7 +360,7 @@ describe('DateTimeWidgetComponent', () => { }); it('should show tooltip', async () => { - const host = await testingUtils.getMatInputHost(); + const host = await testingUtils.input.getHost(); await host.hover(); const tooltip = await host.getAttribute('title'); @@ -405,7 +405,7 @@ describe('DateTimeWidgetComponent', () => { }); it('should be able to display label with asterisk and input field is required', async () => { - const formField = await testingUtils.getMatFormField(); + const formField = await testingUtils.formField.get(); const formControl = await formField.getControl(); expect(formControl.isRequired).toBeTruthy(); @@ -427,7 +427,7 @@ describe('DateTimeWidgetComponent', () => { fixture.detectChanges(); await fixture.whenStable(); - expect(await testingUtils.getMatInputValue()).toBe('30-11-9999 10:30 AM'); + expect(await testingUtils.input.getValue()).toBe('30-11-9999 10:30 AM'); }); it('should show the correct format type', async () => { @@ -442,7 +442,7 @@ describe('DateTimeWidgetComponent', () => { fixture.detectChanges(); await fixture.whenStable(); - expect(await testingUtils.getMatInputValue()).toBe('12-30-9999 10:30 AM'); + expect(await testingUtils.input.getValue()).toBe('12-30-9999 10:30 AM'); }); it('should disable date button when is readonly', () => { @@ -483,7 +483,7 @@ describe('DateTimeWidgetComponent', () => { fixture.detectChanges(); await fixture.whenStable(); - const input = await testingUtils.getMatInput(); + const input = await testingUtils.input.get(); expect(await input.getValue()).toBe('12-30-9999 10:30 AM'); widget.field.value = '2020-03-02T00:00:00.000Z'; @@ -508,7 +508,7 @@ describe('DateTimeWidgetComponent', () => { fixture.detectChanges(); await fixture.whenStable(); - const input = await testingUtils.getMatInput(); + const input = await testingUtils.input.get(); expect(await input.getValue()).toBe('12/30/9999 10;30 AM'); widget.field.value = '2020-03-02T00:00:00.000Z'; @@ -597,8 +597,8 @@ describe('DateTimeWidgetComponent', () => { required: true }); - await testingUtils.focusMatInput(); - await testingUtils.sendKeysToMatInput([TestKey.ENTER]); + await testingUtils.input.focus(); + await testingUtils.input.sendKeys([TestKey.ENTER]); expect(testingUtils.getByDataAutomationId('adf-date-time-widget-picker')).toBeTruthy(); }); diff --git a/lib/core/src/lib/form/components/widgets/date/date.widget.spec.ts b/lib/core/src/lib/form/components/widgets/date/date.widget.spec.ts index e7b4db8456..69aea949a8 100644 --- a/lib/core/src/lib/form/components/widgets/date/date.widget.spec.ts +++ b/lib/core/src/lib/form/components/widgets/date/date.widget.spec.ts @@ -391,7 +391,7 @@ describe('DateWidgetComponent', () => { fixture.detectChanges(); await fixture.whenStable(); - await testingUtils.fillMatInput('25-03-2025'); + await testingUtils.input.fill('25-03-2025'); expect(field.value).toEqual(jasmine.any(Date)); expect(field.value.getFullYear()).toBe(2025); @@ -412,7 +412,7 @@ describe('DateWidgetComponent', () => { fixture.detectChanges(); await fixture.whenStable(); - await testingUtils.fillMatInput('03-25-2025'); + await testingUtils.input.fill('03-25-2025'); expect(field.value).toEqual(jasmine.any(Date)); expect(field.value.getFullYear()).toBe(2025); @@ -433,7 +433,7 @@ describe('DateWidgetComponent', () => { fixture.detectChanges(); await fixture.whenStable(); - await testingUtils.fillMatInput('03/25/2025'); + await testingUtils.input.fill('03/25/2025'); expect(widget.dateInputControl.invalid).toBeTrue(); expect(field.isValid).toBeFalse(); @@ -452,7 +452,7 @@ describe('DateWidgetComponent', () => { fixture.detectChanges(); await fixture.whenStable(); - await testingUtils.fillMatInput('invalid-text'); + await testingUtils.input.fill('invalid-text'); expect(widget.dateInputControl.invalid).toBeTrue(); expect(field.isValid).toBeFalse(); @@ -471,12 +471,12 @@ describe('DateWidgetComponent', () => { fixture.detectChanges(); await fixture.whenStable(); - await testingUtils.fillMatInput('invalid-text'); + await testingUtils.input.fill('invalid-text'); expect(widget.dateInputControl.invalid).toBeTrue(); expect(field.isValid).toBeFalse(); - await testingUtils.fillMatInput(''); + await testingUtils.input.fill(''); expect(widget.dateInputControl.valid).toBeTrue(); expect(field.isValid).toBeTrue(); diff --git a/lib/core/src/lib/form/components/widgets/decimal/decimal.component.spec.ts b/lib/core/src/lib/form/components/widgets/decimal/decimal.component.spec.ts index e91062c385..1de086f6be 100644 --- a/lib/core/src/lib/form/components/widgets/decimal/decimal.component.spec.ts +++ b/lib/core/src/lib/form/components/widgets/decimal/decimal.component.spec.ts @@ -69,7 +69,7 @@ describe('DecimalComponent', () => { }); it('should show tooltip', async () => { - const host = await testingUtils.getMatInputHost(); + const host = await testingUtils.input.getHost(); await host.hover(); const tooltip = await host.getAttribute('title'); @@ -90,14 +90,14 @@ describe('DecimalComponent', () => { it('should be marked as invalid after interaction', async () => { expect(testingUtils.getByCSS('.adf-invalid')).toBeFalsy(); - await testingUtils.blurMatInput(); + await testingUtils.input.blur(); fixture.detectChanges(); expect(testingUtils.getByCSS('.adf-invalid')).toBeTruthy(); }); it('should be able to display label with asterisk and input field is required', async () => { - const formField = await testingUtils.getMatFormField(); + const formField = await testingUtils.formField.get(); const formControl = await formField.getControl(); expect(formControl.isRequired).toBeTruthy(); diff --git a/lib/core/src/lib/form/components/widgets/multiline-text/multiline-text.widget.spec.ts b/lib/core/src/lib/form/components/widgets/multiline-text/multiline-text.widget.spec.ts index 01dfa19e00..e27176d0f1 100644 --- a/lib/core/src/lib/form/components/widgets/multiline-text/multiline-text.widget.spec.ts +++ b/lib/core/src/lib/form/components/widgets/multiline-text/multiline-text.widget.spec.ts @@ -70,7 +70,7 @@ describe('MultilineTextWidgetComponentComponent', () => { }); it('should show tooltip', async () => { - const host = await testingUtils.getMatInputHost(); + const host = await testingUtils.input.getHost(); await host.hover(); const tooltip = await host.getAttribute('title'); @@ -122,12 +122,12 @@ describe('MultilineTextWidgetComponentComponent', () => { it('should be marked as invalid after interaction', async () => { expect(testingUtils.getByCSS('.adf-invalid')).toBeFalsy(); - await testingUtils.blurMatInput(); + await testingUtils.input.blur(); expect(testingUtils.getByCSS('.adf-invalid')).toBeTruthy(); }); it('should be able to display label with asterisk and input field is required', async () => { - const formField = await testingUtils.getMatFormField(); + const formField = await testingUtils.formField.get(); const formControl = await formField.getControl(); expect(formControl.isRequired).toBeTruthy(); @@ -179,7 +179,7 @@ describe('MultilineTextWidgetComponentComponent - ADF_CUSTOM_MESSAGE', () => { }); fixture.detectChanges(); - await testingUtils.fillMatInput('invalid text'); + await testingUtils.input.fill('invalid text'); expect(widget.field.isValid).toBeFalse(); expect(widget.field.validationSummary.message).toBe('Only numbers are allowed'); }); @@ -219,7 +219,7 @@ describe('MultilineTextWidgetComponentComponent - ADF_CUSTOM_MESSAGE', () => { }); fixture.detectChanges(); - await testingUtils.fillMatInput('invalid text'); + await testingUtils.input.fill('invalid text'); expect(widget.field.isValid).toBeFalse(); expect(widget.field.validationSummary.message).toBe('FORM.FIELD.VALIDATOR.INVALID_VALUE'); }); @@ -324,7 +324,7 @@ describe('MultilineTextWidgetComponentComponent - ADF_CUSTOM_MESSAGE', () => { }); fixture.detectChanges(); - await testingUtils.fillMatInput('invalid text'); + await testingUtils.input.fill('invalid text'); expect(widget.field.isValid).toBeFalse(); expect(widget.field.validationSummary.message).toBe('FORM.FIELD.VALIDATOR.INVALID_VALUE'); }); diff --git a/lib/core/src/lib/form/components/widgets/number/number.widget.spec.ts b/lib/core/src/lib/form/components/widgets/number/number.widget.spec.ts index 843e3141fa..ac2df7f245 100644 --- a/lib/core/src/lib/form/components/widgets/number/number.widget.spec.ts +++ b/lib/core/src/lib/form/components/widgets/number/number.widget.spec.ts @@ -100,7 +100,7 @@ describe('NumberWidgetComponent', () => { }); it('should display the value', async () => { - const input = await testingUtils.getMatInput(); + const input = await testingUtils.input.get(); expect(widget.displayValue).toBe(123); expect(await input.getValue()).toBe('123'); @@ -108,21 +108,21 @@ describe('NumberWidgetComponent', () => { }); it('should have value null when field is cleared', async () => { - const input = await testingUtils.getMatInput(); + const input = await testingUtils.input.get(); await input.setValue(''); expect(widget.field.value).toBeNull(); }); it('should have value null when value is undefined', async () => { - const input = await testingUtils.getMatInput(); + const input = await testingUtils.input.get(); await input.setValue(undefined); expect(widget.field.value).toBeNull(); }); it('should have value null when value is null', async () => { - const input = await testingUtils.getMatInput(); + const input = await testingUtils.input.get(); await input.setValue(null); expect(widget.field.value).toBeNull(); @@ -139,7 +139,7 @@ describe('NumberWidgetComponent', () => { }); it('should show tooltip', async () => { - const host = await testingUtils.getMatInputHost(); + const host = await testingUtils.input.getHost(); await host.hover(); const tooltip = await host.getAttribute('title'); @@ -159,13 +159,13 @@ describe('NumberWidgetComponent', () => { it('should be marked as invalid after interaction', async () => { expect(testingUtils.getByCSS('.adf-invalid')).toBeFalsy(); - await testingUtils.blurMatInput(); + await testingUtils.input.blur(); expect(testingUtils.getByCSS('.adf-invalid')).toBeTruthy(); }); it('should be able to display label with asterisk and input field is required', async () => { - const formField = await testingUtils.getMatFormField(); + const formField = await testingUtils.formField.get(); const formControl = await formField.getControl(); expect(formControl.isRequired).toBeTruthy(); diff --git a/lib/core/src/lib/form/components/widgets/text/text.widget.spec.ts b/lib/core/src/lib/form/components/widgets/text/text.widget.spec.ts index 5272a89c43..21ec99ea6b 100644 --- a/lib/core/src/lib/form/components/widgets/text/text.widget.spec.ts +++ b/lib/core/src/lib/form/components/widgets/text/text.widget.spec.ts @@ -78,7 +78,7 @@ describe('TextWidgetComponent', () => { fixture.detectChanges(); expect(widget.field.value).toBe(''); - await testingUtils.fillMatInput('TEXT'); + await testingUtils.input.fill('TEXT'); expect(widget.field.value).toBe('TEXT'); }); @@ -108,7 +108,7 @@ describe('TextWidgetComponent', () => { fixture.detectChanges(); await fixture.whenStable(); - expect(await testingUtils.getMatInputByPlaceholder('Your name here')).toBeTruthy(); + expect(await testingUtils.input.getByPlaceholder('Your name here')).toBeTruthy(); }); it('should be able to set min/max length properties for Text widget', async () => { @@ -123,19 +123,19 @@ describe('TextWidgetComponent', () => { }); fixture.detectChanges(); - await testingUtils.fillMatInput('TEXT'); + await testingUtils.input.fill('TEXT'); - const formField = await testingUtils.getMatFormField(); + const formField = await testingUtils.formField.get(); let errors = await formField.getTextErrors(); expect(errors[0]).toContain('FORM.FIELD.VALIDATOR.AT_LEAST_LONG'); expect(widget.field.isValid).toBe(false); - await testingUtils.fillMatInput('TEXT VALUE'); + await testingUtils.input.fill('TEXT VALUE'); errors = await formField.getTextErrors(); expect(widget.field.isValid).toBe(true); - await testingUtils.fillMatInput('TEXT VALUE TOO LONG'); + await testingUtils.input.fill('TEXT VALUE TOO LONG'); expect(widget.field.isValid).toBe(false); errors = await formField.getTextErrors(); @@ -152,7 +152,7 @@ describe('TextWidgetComponent', () => { }); fixture.detectChanges(); - await testingUtils.fillMatInput('a'.repeat(1025)); + await testingUtils.input.fill('a'.repeat(1025)); expect(widget.field.isValid).toBe(false); expect(widget.field.validationSummary.message).toBe('FORM.FIELD.VALIDATOR.NO_LONGER_THAN'); @@ -333,13 +333,13 @@ describe('TextWidgetComponent', () => { }); fixture.detectChanges(); - await testingUtils.fillMatInput('TEXT'); + await testingUtils.input.fill('TEXT'); expect(widget.field.isValid).toBe(false); - await testingUtils.fillMatInput('8'); + await testingUtils.input.fill('8'); expect(widget.field.isValid).toBe(true); - await testingUtils.fillMatInput('8XYZ'); + await testingUtils.input.fill('8XYZ'); expect(widget.field.isValid).toBe(false); }); }); @@ -354,7 +354,7 @@ describe('TextWidgetComponent', () => { }); it('should show tooltip', async () => { - const host = await testingUtils.getMatInputHost(); + const host = await testingUtils.input.getHost(); await host.hover(); const tooltip = await host.getAttribute('title'); @@ -377,13 +377,13 @@ describe('TextWidgetComponent', () => { it('should be marked as invalid after interaction', async () => { expect(testingUtils.getByCSS('.adf-invalid')).toBeFalsy(); - await testingUtils.blurMatInput(); + await testingUtils.input.blur(); expect(testingUtils.getByCSS('.adf-invalid')).toBeTruthy(); }); it('should be able to display label with asterisk and input field is required', async () => { - const formField = await testingUtils.getMatFormField(); + const formField = await testingUtils.formField.get(); const formControl = await formField.getControl(); expect(formControl.isRequired).toBeTruthy(); @@ -407,7 +407,7 @@ describe('TextWidgetComponent', () => { }); it('should be disabled on readonly forms', async () => { - const input = await testingUtils.getMatInput(); + const input = await testingUtils.input.get(); expect(await input.isDisabled()).toBe(true); }); }); @@ -431,17 +431,17 @@ describe('TextWidgetComponent', () => { }); it('should show text widget', async () => { - expect(await testingUtils.checkIfMatInputExists()).toBe(true); + expect(await testingUtils.input.exists()).toBe(true); }); it('should show the field placeholder', async () => { - expect(await testingUtils.checkIfMatInputExistsWithPlaceholder('simple placeholder')).toBeTrue(); + expect(await testingUtils.input.existsByPlaceholder('simple placeholder')).toBeTrue(); }); it('should show the field placeholder when clicked', async () => { - await testingUtils.clickMatInput(); + await testingUtils.input.click(); - expect(await testingUtils.checkIfMatInputExistsWithPlaceholder('simple placeholder')).toBeTruthy(); + expect(await testingUtils.input.existsByPlaceholder('simple placeholder')).toBeTruthy(); }); it('should prevent text to be written if is not allowed by the mask on keyUp event', async () => { @@ -566,13 +566,13 @@ describe('TextWidgetComponent', () => { }); it('should show the input mask placeholder', async () => { - expect(await testingUtils.checkIfMatInputExistsWithPlaceholder('Phone : (__) ___-___')).toBeTrue(); + expect(await testingUtils.input.existsByPlaceholder('Phone : (__) ___-___')).toBeTrue(); }); it('should show the input mask placeholder when clicked', async () => { - await testingUtils.clickMatInput(); + await testingUtils.input.click(); - expect(await testingUtils.checkIfMatInputExistsWithPlaceholder('Phone : (__) ___-___')).toBeTrue(); + expect(await testingUtils.input.existsByPlaceholder('Phone : (__) ___-___')).toBeTrue(); }); }); @@ -782,7 +782,7 @@ describe('TextWidgetComponent - ADF_CUSTOM_MESSAGE', () => { }); fixture.detectChanges(); - await testingUtils.fillMatInput('invalid text'); + await testingUtils.input.fill('invalid text'); expect(widget.field.isValid).toBeFalse(); expect(widget.field.validationSummary.message).toBe('Only numbers are allowed'); }); @@ -822,7 +822,7 @@ describe('TextWidgetComponent - ADF_CUSTOM_MESSAGE', () => { }); fixture.detectChanges(); - await testingUtils.fillMatInput('invalid text'); + await testingUtils.input.fill('invalid text'); expect(widget.field.isValid).toBeFalse(); expect(widget.field.validationSummary.message).toBe('FORM.FIELD.VALIDATOR.INVALID_VALUE'); }); @@ -927,7 +927,7 @@ describe('TextWidgetComponent - ADF_CUSTOM_MESSAGE', () => { }); fixture.detectChanges(); - await testingUtils.fillMatInput('invalid text'); + await testingUtils.input.fill('invalid text'); expect(widget.field.isValid).toBeFalse(); expect(widget.field.validationSummary.message).toBe('FORM.FIELD.VALIDATOR.INVALID_VALUE'); }); diff --git a/lib/core/src/lib/info-drawer/info-drawer.component.spec.ts b/lib/core/src/lib/info-drawer/info-drawer.component.spec.ts index a8dd2cec82..9aa64b998b 100644 --- a/lib/core/src/lib/info-drawer/info-drawer.component.spec.ts +++ b/lib/core/src/lib/info-drawer/info-drawer.component.spec.ts @@ -127,22 +127,22 @@ describe('Custom InfoDrawer', () => { it('should select the tab 1 (index 0) as default', async () => { fixture.detectChanges(); - expect(await testingUtils.getSelectedTabLabelFromMatTabGroup()).toEqual('Tab1'); + expect(await testingUtils.tabGroup.getSelectedTabLabel()).toEqual('Tab1'); }); it('should select the tab 2 (index 1)', async () => { component.tabIndex = 1; fixture.detectChanges(); - expect(await testingUtils.getSelectedTabLabelFromMatTabGroup()).toEqual('Tab2'); + expect(await testingUtils.tabGroup.getSelectedTabLabel()).toEqual('Tab2'); }); it('should render a tab with icon', async () => { component.tabIndex = 2; fixture.detectChanges(); - expect(await testingUtils.getSelectedTabLabelFromMatTabGroup()).toContain('Tab3'); - expect(await testingUtils.getSelectedTabLabelFromMatTabGroup()).toContain('tab-icon'); + expect(await testingUtils.tabGroup.getSelectedTabLabel()).toContain('Tab3'); + expect(await testingUtils.tabGroup.getSelectedTabLabel()).toContain('tab-icon'); }); it('should render a icon with title', () => { diff --git a/lib/core/src/lib/layout/components/header/header.component.spec.ts b/lib/core/src/lib/layout/components/header/header.component.spec.ts index 30686fe904..063b11f0e8 100644 --- a/lib/core/src/lib/layout/components/header/header.component.spec.ts +++ b/lib/core/src/lib/layout/components/header/header.component.spec.ts @@ -60,7 +60,7 @@ describe('HeaderLayoutComponent', () => { component.backgroundColor = '#42f57e'; fixture.detectChanges(); - const host = await testingUtils.getMatToolbarHost(); + const host = await testingUtils.toolbar.getHost(); expect(await host.getCssValue('background-color')).toBe('rgb(66, 245, 126)'); }); @@ -68,7 +68,7 @@ describe('HeaderLayoutComponent', () => { it('should background image be set to none if is not provided', async () => { fixture.detectChanges(); - const host = await testingUtils.getMatToolbarHost(); + const host = await testingUtils.toolbar.getHost(); expect(await host.getCssValue('background-image')).toEqual('none'); }); @@ -78,7 +78,7 @@ describe('HeaderLayoutComponent', () => { fixture.detectChanges(); - const host = await testingUtils.getMatToolbarHost(); + const host = await testingUtils.toolbar.getHost(); expect(await host.getCssValue('background-image')).toEqual('none'); }); @@ -87,7 +87,7 @@ describe('HeaderLayoutComponent', () => { component.backgroundImage = '/assets/someImage.png'; fixture.detectChanges(); - const host = await testingUtils.getMatToolbarHost(); + const host = await testingUtils.toolbar.getHost(); expect(await host.getCssValue('background-image')).toContain('/assets/someImage.png'); }); diff --git a/lib/core/src/lib/layout/components/layout-container/layout-container.component.spec.ts b/lib/core/src/lib/layout/components/layout-container/layout-container.component.spec.ts index a97ecf8e28..222ba4597c 100644 --- a/lib/core/src/lib/layout/components/layout-container/layout-container.component.spec.ts +++ b/lib/core/src/lib/layout/components/layout-container/layout-container.component.spec.ts @@ -172,7 +172,7 @@ describe('LayoutContainerComponent', () => { let sidenav: MatSidenavHarness; beforeEach(async () => { - sidenav = await unitTestingUtils.getMatSidenav(); + sidenav = await unitTestingUtils.sidenav.get(); }); it('should switch to sidenav to compact state', async () => { @@ -221,7 +221,7 @@ describe('LayoutContainerComponent', () => { }; beforeEach(async () => { - sidenav = await unitTestingUtils.getMatSidenav(); + sidenav = await unitTestingUtils.sidenav.get(); }); it('should close sidenav on mobile and open on desktop', async () => { diff --git a/lib/core/src/lib/notifications/services/notification.service.spec.ts b/lib/core/src/lib/notifications/services/notification.service.spec.ts index 7453098852..34e5ef240a 100644 --- a/lib/core/src/lib/notifications/services/notification.service.spec.ts +++ b/lib/core/src/lib/notifications/services/notification.service.spec.ts @@ -125,14 +125,14 @@ describe('NotificationService', () => { fixture.componentInstance.sendMessage(); fixture.detectChanges(); - const isLoaded = await testingUtils.checkIfMatSnackbarExists(); + const isLoaded = await testingUtils.snackbar.exists(); expect(isLoaded).toBe(true); }); it('should open a message notification bar without custom configuration', async () => { fixture.componentInstance.sendMessageWithoutConfig(); fixture.detectChanges(); - const isLoaded = await testingUtils.checkIfMatSnackbarExists(); + const isLoaded = await testingUtils.snackbar.exists(); expect(isLoaded).toBe(true); }); @@ -140,35 +140,35 @@ describe('NotificationService', () => { fixture.componentInstance.sendCustomMessage(); fixture.detectChanges(); - expect(await testingUtils.checkIfMatSnackbarExists()).toBe(true); + expect(await testingUtils.snackbar.exists()).toBe(true); }); it('should open a message notification bar with action', async () => { fixture.componentInstance.sendMessageAction(); - expect(await testingUtils.checkIfMatSnackbarExists()).toBe(true); + expect(await testingUtils.snackbar.exists()).toBe(true); }); it('should open a message notification bar with action and custom configuration', async () => { fixture.componentInstance.sendCustomMessageAction(); fixture.detectChanges(); - expect(await testingUtils.checkIfMatSnackbarExists()).toBe(true); + expect(await testingUtils.snackbar.exists()).toBe(true); }); it('should open a message notification bar with action and no custom configuration', async () => { fixture.componentInstance.sendMessageActionWithoutConfig(); fixture.detectChanges(); - expect(await testingUtils.checkIfMatSnackbarExists()).toBe(true); + expect(await testingUtils.snackbar.exists()).toBe(true); }); it('should open a message notification bar with a decorative icon', async () => { fixture.componentInstance.sendMessageWithDecorativeIcon(); - expect(await testingUtils.checkIfMatIconExistsWithAncestorByDataAutomationId('adf-snackbar-message-content')).toBe(true); + expect(await testingUtils.icon.existsWithAncestorByDataAutomationId('adf-snackbar-message-content')).toBe(true); }); it('should open a message notification bar with action and a decorative icon', async () => { fixture.componentInstance.sendMessageWithDecorativeIconAndAction(); - expect(await testingUtils.checkIfMatIconExistsWithAncestorByDataAutomationId('adf-snackbar-message-content')).toBe(true); + expect(await testingUtils.icon.existsWithAncestorByDataAutomationId('adf-snackbar-message-content')).toBe(true); }); }); diff --git a/lib/core/src/lib/testing/unit-testing-utils.ts b/lib/core/src/lib/testing/unit-testing-utils.ts index 310f7ac8ac..a3b91feeaf 100644 --- a/lib/core/src/lib/testing/unit-testing-utils.ts +++ b/lib/core/src/lib/testing/unit-testing-utils.ts @@ -38,23 +38,414 @@ import { MatProgressSpinnerHarness } from '@angular/material/progress-spinner/te import { MatMenuHarness } from '@angular/material/menu/testing'; import { MatSidenavHarness } from '@angular/material/sidenav/testing'; +abstract class HarnessBase { + constructor(readonly loader: HarnessLoader) {} +} + +class ButtonUtils extends HarnessBase { + async get(): Promise { + return this.loader.getHarness(MatButtonHarness); + } + + async getByCSS(selector: string): Promise { + return this.loader.getHarness(MatButtonHarness.with({ selector })); + } + + async getByDataAutomationId(dataAutomationId: string): Promise { + return this.loader.getHarness(MatButtonHarness.with({ selector: `[data-automation-id="${dataAutomationId}"]` })); + } + + async exists(): Promise { + return this.loader.hasHarness(MatButtonHarness); + } + + async existsByDataAutomationId(dataAutomationId: string): Promise { + return this.loader.hasHarness(MatButtonHarness.with({ selector: `[data-automation-id="${dataAutomationId}"]` })); + } + + async click(): Promise { + const button = await this.get(); + await button.click(); + } + + async clickByCSS(selector: string): Promise { + const button = await this.getByCSS(selector); + await button.click(); + } + + async clickByDataAutomationId(dataAutomationId: string): Promise { + const button = await this.getByDataAutomationId(dataAutomationId); + await button.click(); + } + + async sendKeys(keys: (string | TestKey)[]): Promise { + const button = await this.get(); + const host = await button.host(); + await host.sendKeys(...keys); + } +} + +class CheckboxUtils extends HarnessBase { + async get(): Promise { + return this.loader.getHarness(MatCheckboxHarness); + } + + async getByDataAutomationId(dataAutomationId: string): Promise { + return this.loader.getHarness(MatCheckboxHarness.with({ selector: `[data-automation-id="${dataAutomationId}"]` })); + } + + async getHost(): Promise { + const checkbox = await this.get(); + return checkbox.host(); + } + + async getAll(): Promise { + return this.loader.getAllHarnesses(MatCheckboxHarness); + } + + async isChecked(): Promise { + const checkbox = await this.get(); + return checkbox.isChecked(); + } + + async allHaveClass(className: string): Promise { + const checkboxes = await this.getAll(); + return checkboxes.every(async (checkbox) => (await checkbox.host()).hasClass(className)); + } + + async hover(): Promise { + const host = await this.getHost(); + await host.hover(); + } +} + +class IconUtils extends HarnessBase { + async getOrNull(): Promise { + return this.loader.getHarnessOrNull(MatIconHarness); + } + + async getWithAncestorByDataAutomationId(dataAutomationId: string): Promise { + return this.loader.getHarness(MatIconHarness.with({ ancestor: `[data-automation-id="${dataAutomationId}"]` })); + } + + async getWithAncestorByCSS(selector: string): Promise { + return this.loader.getHarness(MatIconHarness.with({ ancestor: selector })); + } + + async existsWithAncestorByDataAutomationId(dataAutomationId: string): Promise { + return this.loader.hasHarness(MatIconHarness.with({ ancestor: `[data-automation-id="${dataAutomationId}"]` })); + } + + async existsWithAncestorByCSSAndName(selector: string, name: string): Promise { + return this.loader.hasHarness(MatIconHarness.with({ ancestor: selector, name })); + } + + async clickWithAncestorByDataAutomationId(dataAutomationId: string): Promise { + const icon = await this.getWithAncestorByDataAutomationId(dataAutomationId); + const host = await icon.host(); + await host.click(); + } +} + +class SelectUtils extends HarnessBase { + async get(): Promise { + return this.loader.getHarness(MatSelectHarness); + } + + async getByDataAutomationId(dataAutomationId: string): Promise { + return this.loader.getHarness(MatSelectHarness.with({ selector: `[data-automation-id="${dataAutomationId}"]` })); + } + + async getHost(): Promise { + const select = await this.get(); + return select.host(); + } + + async getOptions(isOpened = false): Promise { + const select = await this.get(); + if (!isOpened) { + await select.open(); + } + return select.getOptions(); + } + + async exists(): Promise { + return this.loader.hasHarness(MatSelectHarness); + } + + async open(): Promise { + const select = await this.get(); + await select.open(); + } +} + +class ChipUtils extends HarnessBase { + async getByDataAutomationId(dataAutomationId: string): Promise { + return this.loader.getHarness(MatChipHarness.with({ selector: `[data-automation-id="${dataAutomationId}"]` })); + } + + async existsByDataAutomationId(dataAutomationId: string): Promise { + return this.loader.hasHarness(MatChipHarness.with({ selector: `[data-automation-id="${dataAutomationId}"]` })); + } + + async click(dataAutomationId: string): Promise { + const chip = await this.getByDataAutomationId(dataAutomationId); + const host = await chip.host(); + await host.click(); + } + + async getAll(): Promise { + return this.loader.getAllHarnesses(MatChipHarness); + } +} + +class ChipListboxUtils extends HarnessBase { + async getByDataAutomationId(dataAutomationId: string): Promise { + return this.loader.getHarness(MatChipListboxHarness.with({ selector: `[data-automation-id="${dataAutomationId}"]` })); + } + + async click(dataAutomationId: string): Promise { + const chipList = await this.getByDataAutomationId(dataAutomationId); + const host = await chipList.host(); + await host.click(); + } +} + +class ChipGridUtils extends HarnessBase { + async exists(): Promise { + return this.loader.hasHarness(MatChipGridHarness); + } +} + +class ChipInputUtils extends HarnessBase { + async get(): Promise { + return this.loader.getHarness(MatChipInputHarness); + } + + async getByDataAutomationId(dataAutomationId: string): Promise { + return this.loader.getHarness(MatChipInputHarness.with({ selector: `[data-automation-id="${dataAutomationId}"]` })); + } + + async getByCSS(selector: string): Promise { + return this.loader.getHarness(MatChipInputHarness.with({ selector })); + } +} + +class FormFieldUtils extends HarnessBase { + async get(): Promise { + return this.loader.getHarness(MatFormFieldHarness); + } + + async getByCSS(selector: string): Promise { + return this.loader.getHarness(MatFormFieldHarness.with({ selector })); + } +} + +class InputUtils extends HarnessBase { + async get(): Promise { + return this.loader.getHarness(MatInputHarness); + } + + async getByDataAutomationId(dataAutomationId: string): Promise { + return this.loader.getHarness(MatInputHarness.with({ selector: `[data-automation-id="${dataAutomationId}"]` })); + } + + async getByPlaceholder(placeholder: string): Promise { + return this.loader.getHarness(MatInputHarness.with({ placeholder })); + } + + async getHost(): Promise { + const input = await this.get(); + return input.host(); + } + + async exists(): Promise { + return this.loader.hasHarness(MatInputHarness); + } + + async existsByPlaceholder(placeholder: string): Promise { + return this.loader.hasHarness(MatInputHarness.with({ placeholder })); + } + + async click(): Promise { + const input = await this.get(); + const host = await input.host(); + await host.click(); + } + + async fill(value: string): Promise { + const input = await this.get(); + await input.setValue(value); + } + + async fillByDataAutomationId(dataAutomationId: string, value: string): Promise { + const input = await this.getByDataAutomationId(dataAutomationId); + await input.setValue(value); + await (await input.host()).dispatchEvent('input'); + } + + async focus(): Promise { + const input = await this.get(); + await input.focus(); + } + + async blur(): Promise { + const input = await this.get(); + await input.blur(); + } + + async getValue(): Promise { + const input = await this.get(); + return input.getValue(); + } + + async getValueByDataAutomationId(dataAutomationId: string): Promise { + const input = await this.getByDataAutomationId(dataAutomationId); + return input.getValue(); + } + + async sendKeys(keys: (string | TestKey)[]): Promise { + const input = await this.get(); + const host = await input.host(); + await host.sendKeys(...keys); + } +} + +class AutocompleteUtils extends HarnessBase { + async typeAndGetOptions(fixture: ComponentFixture, value: string): Promise { + const autocomplete = await this.loader.getHarness(MatAutocompleteHarness); + await autocomplete.enterText(value); + fixture.detectChanges(); + return autocomplete.getOptions(); + } +} + +class TabGroupUtils extends HarnessBase { + async getSelectedTab(): Promise { + const tabs = await this.loader.getHarness(MatTabGroupHarness); + return tabs.getSelectedTab(); + } + + async getSelectedTabLabel(): Promise { + const tab = await this.getSelectedTab(); + return tab.getLabel(); + } +} + +class ToolbarUtils extends HarnessBase { + async getHost(): Promise { + const toolbar = await this.loader.getHarness(MatToolbarHarness); + return toolbar.host(); + } +} + +class SnackbarUtils extends HarnessBase { + async exists(): Promise { + return this.loader.hasHarness(MatSnackBarHarness); + } +} + +class ProgressBarUtils extends HarnessBase { + async getHost(): Promise { + const progress = await this.loader.getHarness(MatProgressBarHarness); + return progress.host(); + } +} + +class ListOptionUtils extends HarnessBase { + async get(): Promise { + return this.loader.getHarness(MatListOptionHarness); + } + + async getAll(): Promise { + return this.loader.getAllHarnesses(MatListOptionHarness); + } +} + +class CellUtils extends HarnessBase { + async getByColumnName(columnName: string): Promise { + return this.loader.getHarness(MatCellHarness.with({ columnName })); + } +} + +class ProgressSpinnerUtils extends HarnessBase { + async getWithAncestorByCSS(selector: string): Promise { + return this.loader.getHarness(MatProgressSpinnerHarness.with({ ancestor: selector })); + } + + async getWithAncestorByDataAutomationId(dataAutomationId: string): Promise { + return this.loader.getHarness(MatProgressSpinnerHarness.with({ ancestor: `[data-automation-id="${dataAutomationId}"]` })); + } +} + +class MenuUtils extends HarnessBase { + async get(): Promise { + return this.loader.getHarness(MatMenuHarness); + } + + async getByCSS(selector: string): Promise { + return this.loader.getHarness(MatMenuHarness.with({ selector })); + } +} + +class SidenavUtils extends HarnessBase { + async get(): Promise { + return this.loader.getHarness(MatSidenavHarness); + } +} + export class UnitTestingUtils { + readonly button: ButtonUtils; + readonly checkbox: CheckboxUtils; + readonly icon: IconUtils; + readonly select: SelectUtils; + readonly chip: ChipUtils; + readonly chipListbox: ChipListboxUtils; + readonly chipGrid: ChipGridUtils; + readonly chipInput: ChipInputUtils; + readonly formField: FormFieldUtils; + readonly input: InputUtils; + readonly autocomplete: AutocompleteUtils; + readonly tabGroup: TabGroupUtils; + readonly toolbar: ToolbarUtils; + readonly snackbar: SnackbarUtils; + readonly progressBar: ProgressBarUtils; + readonly listOption: ListOptionUtils; + readonly cell: CellUtils; + readonly progressSpinner: ProgressSpinnerUtils; + readonly menu: MenuUtils; + readonly sidenav: SidenavUtils; + constructor( private debugElement?: DebugElement, - private loader?: HarnessLoader + loader?: HarnessLoader ) { - this.debugElement = debugElement; - this.loader = loader; + this.button = new ButtonUtils(loader); + this.checkbox = new CheckboxUtils(loader); + this.icon = new IconUtils(loader); + this.select = new SelectUtils(loader); + this.chip = new ChipUtils(loader); + this.chipListbox = new ChipListboxUtils(loader); + this.chipGrid = new ChipGridUtils(loader); + this.chipInput = new ChipInputUtils(loader); + this.formField = new FormFieldUtils(loader); + this.input = new InputUtils(loader); + this.autocomplete = new AutocompleteUtils(loader); + this.tabGroup = new TabGroupUtils(loader); + this.toolbar = new ToolbarUtils(loader); + this.snackbar = new SnackbarUtils(loader); + this.progressBar = new ProgressBarUtils(loader); + this.listOption = new ListOptionUtils(loader); + this.cell = new CellUtils(loader); + this.progressSpinner = new ProgressSpinnerUtils(loader); + this.menu = new MenuUtils(loader); + this.sidenav = new SidenavUtils(loader); } setDebugElement(debugElement: DebugElement): void { this.debugElement = debugElement; } - setLoader(loader: HarnessLoader): void { - this.loader = loader; - } - getByCSS(selector: string): DebugElement { return this.debugElement.query(By.css(selector)); } @@ -168,353 +559,4 @@ export class UnitTestingUtils { input.value = value; input.dispatchEvent(new Event('input')); } - - /** MatButton related methods */ - - async getMatButton(): Promise { - return this.loader.getHarness(MatButtonHarness); - } - - async getMatButtonByCSS(selector: string): Promise { - return this.loader.getHarness(MatButtonHarness.with({ selector })); - } - - async getMatButtonByDataAutomationId(dataAutomationId: string): Promise { - return this.loader.getHarness(MatButtonHarness.with({ selector: `[data-automation-id="${dataAutomationId}"]` })); - } - - async checkIfMatButtonExists(): Promise { - return this.loader.hasHarness(MatButtonHarness); - } - - async checkIfMatButtonExistsWithDataAutomationId(dataAutomationId: string): Promise { - return this.loader.hasHarness(MatButtonHarness.with({ selector: `[data-automation-id="${dataAutomationId}"]` })); - } - - async clickMatButton(): Promise { - const button = await this.getMatButton(); - await button.click(); - } - - async clickMatButtonByCSS(selector: string): Promise { - const button = await this.getMatButtonByCSS(selector); - await button.click(); - } - - async clickMatButtonByDataAutomationId(dataAutomationId: string): Promise { - const button = await this.getMatButtonByDataAutomationId(dataAutomationId); - await button.click(); - } - - async sendKeysToMatButton(keys: (string | TestKey)[]): Promise { - const button = await this.getMatButton(); - const host = await button.host(); - await host.sendKeys(...keys); - } - - /** MatCheckbox related methods */ - - async getMatCheckbox(): Promise { - return this.loader.getHarness(MatCheckboxHarness); - } - - async getMatCheckboxByDataAutomationId(dataAutomationId: string): Promise { - return this.loader.getHarness(MatCheckboxHarness.with({ selector: `[data-automation-id="${dataAutomationId}"]` })); - } - - async getMatCheckboxHost(): Promise { - const checkbox = await this.getMatCheckbox(); - return checkbox.host(); - } - - async getAllMatCheckboxes(): Promise { - return this.loader.getAllHarnesses(MatCheckboxHarness); - } - - async checkIfMatCheckboxIsChecked(): Promise { - const checkbox = await this.getMatCheckbox(); - return checkbox.isChecked(); - } - - async checkIfMatCheckboxesHaveClass(className: string): Promise { - const checkboxes = await this.getAllMatCheckboxes(); - return checkboxes.every(async (checkbox) => (await checkbox.host()).hasClass(className)); - } - - async hoverOverMatCheckbox(): Promise { - const host = await this.getMatCheckboxHost(); - await host.hover(); - } - - /** MatIcon related methods */ - - async getMatIconOrNull(): Promise { - return this.loader.getHarnessOrNull(MatIconHarness); - } - - async getMatIconWithAncestorByDataAutomationId(dataAutomationId: string): Promise { - return this.loader.getHarness(MatIconHarness.with({ ancestor: `[data-automation-id="${dataAutomationId}"]` })); - } - - async getMatIconWithAncestorByCSS(selector: string): Promise { - return this.loader.getHarness(MatIconHarness.with({ ancestor: selector })); - } - - async checkIfMatIconExistsWithAncestorByDataAutomationId(dataAutomationId: string): Promise { - return this.loader.hasHarness(MatIconHarness.with({ ancestor: `[data-automation-id="${dataAutomationId}"]` })); - } - - async checkIfMatIconExistsWithAncestorByCSSAndName(selector: string, name: string): Promise { - return this.loader.hasHarness(MatIconHarness.with({ ancestor: selector, name })); - } - - async clickMatIconWithAncestorByDataAutomationId(dataAutomationId: string): Promise { - const icon = await this.getMatIconWithAncestorByDataAutomationId(dataAutomationId); - const host = await icon.host(); - await host.click(); - } - - /** MatSelect related methods */ - - async getMatSelectOptions(isOpened = false): Promise { - const select = await this.loader.getHarness(MatSelectHarness); - if (!isOpened) { - await select.open(); - } - return select.getOptions(); - } - - async getMatSelect(): Promise { - return this.loader.getHarness(MatSelectHarness); - } - - async getMatSelectByDataAutomationId(dataAutomationId: string): Promise { - return this.loader.getHarness(MatSelectHarness.with({ selector: `[data-automation-id="${dataAutomationId}"]` })); - } - - async getMatSelectHost(): Promise { - const select = await this.loader.getHarness(MatSelectHarness); - return select.host(); - } - - async checkIfMatSelectExists(): Promise { - return this.loader.hasHarness(MatSelectHarness); - } - - async openMatSelect(): Promise { - const select = await this.loader.getHarness(MatSelectHarness); - await select.open(); - } - - /** MatChips related methods */ - - async getMatChipByDataAutomationId(dataAutomationId: string): Promise { - return this.loader.getHarness(MatChipHarness.with({ selector: `[data-automation-id="${dataAutomationId}"]` })); - } - - async checkIfMatChipExistsWithDataAutomationId(dataAutomationId: string): Promise { - return this.loader.hasHarness(MatChipHarness.with({ selector: `[data-automation-id="${dataAutomationId}"]` })); - } - - async clickMatChip(dataAutomationId: string): Promise { - const chip = await this.getMatChipByDataAutomationId(dataAutomationId); - const host = await chip.host(); - await host.click(); - } - - async getMatChips(): Promise { - return this.loader.getAllHarnesses(MatChipHarness); - } - - /** MatChipListbox related methods */ - - async getMatChipListboxByDataAutomationId(dataAutomationId: string): Promise { - return this.loader.getHarness(MatChipListboxHarness.with({ selector: `[data-automation-id="${dataAutomationId}"]` })); - } - - async clickMatChipListbox(dataAutomationId: string): Promise { - const chipList = await this.getMatChipListboxByDataAutomationId(dataAutomationId); - const host = await chipList.host(); - await host.click(); - } - - /** MatChipGrid related methods */ - - async checkIfMatChipGridExists(): Promise { - return this.loader.hasHarness(MatChipGridHarness); - } - - /** MatChipInput related methods */ - - async getMatChipInput(): Promise { - return this.loader.getHarness(MatChipInputHarness); - } - - async getMatChipInputByDataAutomationId(dataAutomationId: string): Promise { - return this.loader.getHarness(MatChipInputHarness.with({ selector: `[data-automation-id="${dataAutomationId}"]` })); - } - - async getMatChipInputByCSS(selector: string): Promise { - return this.loader.getHarness(MatChipInputHarness.with({ selector })); - } - - /** MatFromField related methods */ - - async getMatFormField(): Promise { - return this.loader.getHarness(MatFormFieldHarness); - } - - async getMatFormFieldByCSS(selector: string): Promise { - return this.loader.getHarness(MatFormFieldHarness.with({ selector })); - } - - /** MatInput related methods */ - - async getMatInput(): Promise { - return this.loader.getHarness(MatInputHarness); - } - - async getMatInputByDataAutomationId(dataAutomationId: string): Promise { - return this.loader.getHarness(MatInputHarness.with({ selector: `[data-automation-id="${dataAutomationId}"]` })); - } - - async getMatInputByPlaceholder(placeholder: string): Promise { - return this.loader.getHarness(MatInputHarness.with({ placeholder })); - } - - async getMatInputHost(): Promise { - const input = await this.getMatInput(); - return input.host(); - } - - async checkIfMatInputExists(): Promise { - return this.loader.hasHarness(MatInputHarness); - } - - async checkIfMatInputExistsWithPlaceholder(placeholder: string): Promise { - return this.loader.hasHarness(MatInputHarness.with({ placeholder })); - } - - async clickMatInput(): Promise { - const input = await this.getMatInput(); - const host = await input.host(); - await host.click(); - } - - async fillMatInput(value: string): Promise { - const input = await this.getMatInput(); - await input.setValue(value); - } - - async fillMatInputByDataAutomationId(dataAutomationId: string, value: string): Promise { - const input = await this.getMatInputByDataAutomationId(dataAutomationId); - await input.setValue(value); - await (await input.host()).dispatchEvent('input'); - } - - async focusMatInput(): Promise { - const input = await this.getMatInput(); - await input.focus(); - } - - async blurMatInput(): Promise { - const input = await this.getMatInput(); - await input.blur(); - } - - async getMatInputValue(): Promise { - const input = await this.getMatInput(); - return input.getValue(); - } - - async getMatInputValueByDataAutomationId(dataAutomationId: string): Promise { - const input = await this.getMatInputByDataAutomationId(dataAutomationId); - return input.getValue(); - } - - async sendKeysToMatInput(keys: (string | TestKey)[]): Promise { - const input = await this.getMatInput(); - const host = await input.host(); - await host.sendKeys(...keys); - } - - /** MatAutoComplete related methods */ - - async typeAndGetOptionsForMatAutoComplete(fixture: ComponentFixture, value: string): Promise { - const autocomplete = await this.loader.getHarness(MatAutocompleteHarness); - await autocomplete.enterText(value); - fixture.detectChanges(); - - return autocomplete.getOptions(); - } - - /** MatTabGroup related methods */ - - async getSelectedTabFromMatTabGroup(): Promise { - const tabs = await this.loader.getHarness(MatTabGroupHarness); - return tabs.getSelectedTab(); - } - - async getSelectedTabLabelFromMatTabGroup(): Promise { - const tab = await this.getSelectedTabFromMatTabGroup(); - return tab.getLabel(); - } - - /** MatToolbar related methods */ - - async getMatToolbarHost(): Promise { - const toolbar = await this.loader.getHarness(MatToolbarHarness); - return toolbar.host(); - } - - /** MatSnackbar related methods */ - - async checkIfMatSnackbarExists(): Promise { - return this.loader.hasHarness(MatSnackBarHarness); - } - - /** MatProgressBar related methods */ - - async getMatProgressBarHost(): Promise { - const progress = await this.loader.getHarness(MatProgressBarHarness); - return progress.host(); - } - - /** MatListOption related methods */ - - async getMatListOption(): Promise { - return this.loader.getHarness(MatListOptionHarness); - } - - async getAllMatListOptions(): Promise { - return this.loader.getAllHarnesses(MatListOptionHarness); - } - - /** MatCell related methods */ - - async getMatCellByColumnName(columnName: string): Promise { - return this.loader.getHarness(MatCellHarness.with({ columnName })); - } - - /** MatProgressSpinner related methods */ - - async getMatProgressSpinnerWithAncestorByCSS(selector: string): Promise { - return this.loader.getHarness(MatProgressSpinnerHarness.with({ ancestor: selector })); - } - - async getMatProgressSpinnerWithAncestorByDataAutomationId(dataAutomationId: string): Promise { - return this.loader.getHarness(MatProgressSpinnerHarness.with({ ancestor: `[data-automation-id="${dataAutomationId}"]` })); - } - - /** MatMenu related methods */ - - async getMatMenuByCSS(selector: string): Promise { - return this.loader.getHarness(MatMenuHarness.with({ selector })); - } - - /** MatSidenav related methods */ - - async getMatSidenav(): Promise { - return this.loader.getHarness(MatSidenavHarness); - } } diff --git a/lib/process-services-cloud/src/lib/form/components/widgets/date/date-cloud.widget.spec.ts b/lib/process-services-cloud/src/lib/form/components/widgets/date/date-cloud.widget.spec.ts index c20f57aedb..92ad58661e 100644 --- a/lib/process-services-cloud/src/lib/form/components/widgets/date/date-cloud.widget.spec.ts +++ b/lib/process-services-cloud/src/lib/form/components/widgets/date/date-cloud.widget.spec.ts @@ -470,7 +470,7 @@ describe('DateCloudWidgetComponent', () => { it('should be able to display label with asterisk', async () => { fixture.detectChanges(); - const formField = await testingUtils.getMatFormField(); + const formField = await testingUtils.formField.get(); const formControl = await formField.getControl(); expect(formControl.isRequired).toBeTruthy(); @@ -557,7 +557,7 @@ describe('DateCloudWidgetComponent', () => { fixture.detectChanges(); await fixture.whenStable(); - await testingUtils.fillMatInput('25-03-2025'); + await testingUtils.input.fill('25-03-2025'); expect(field.value).toEqual(jasmine.any(Date)); expect(field.value.getFullYear()).toBe(2025); @@ -578,7 +578,7 @@ describe('DateCloudWidgetComponent', () => { fixture.detectChanges(); await fixture.whenStable(); - await testingUtils.fillMatInput('03-25-2025'); + await testingUtils.input.fill('03-25-2025'); expect(field.value).toEqual(jasmine.any(Date)); expect(field.value.getFullYear()).toBe(2025); @@ -599,7 +599,7 @@ describe('DateCloudWidgetComponent', () => { fixture.detectChanges(); await fixture.whenStable(); - await testingUtils.fillMatInput('03/25/2025'); + await testingUtils.input.fill('03/25/2025'); expect(widget.dateInputControl.invalid).toBeTrue(); expect(field.isValid).toBeFalse(); @@ -620,12 +620,12 @@ describe('DateCloudWidgetComponent', () => { fixture.detectChanges(); await fixture.whenStable(); - await testingUtils.fillMatInput('invalid-text'); + await testingUtils.input.fill('invalid-text'); expect(widget.dateInputControl.invalid).toBeTrue(); expect(field.isValid).toBeFalse(); - await testingUtils.fillMatInput(''); + await testingUtils.input.fill(''); expect(widget.dateInputControl.valid).toBeTrue(); expect(field.isValid).toBeTrue(); diff --git a/lib/process-services-cloud/src/lib/form/components/widgets/display-external-property/display-external-property.widget.spec.ts b/lib/process-services-cloud/src/lib/form/components/widgets/display-external-property/display-external-property.widget.spec.ts index 6f99fd4b80..08ac0e5a36 100644 --- a/lib/process-services-cloud/src/lib/form/components/widgets/display-external-property/display-external-property.widget.spec.ts +++ b/lib/process-services-cloud/src/lib/form/components/widgets/display-external-property/display-external-property.widget.spec.ts @@ -148,7 +148,7 @@ describe('DisplayExternalPropertyWidgetComponent', () => { }); it('should be able to display label with asterisk', async () => { - const formField = await testingUtils.getMatFormField(); + const formField = await testingUtils.formField.get(); const formControl = await formField.getControl(); expect(formControl.isRequired).toBeTruthy();