UNPKG

@angular/material

Version:
1 lines 29.3 kB
{"version":3,"file":"testing.mjs","sources":["../../../../../../../src/material/legacy-chips/testing/chip-avatar-harness.ts","../../../../../../../src/material/legacy-chips/testing/chip-remove-harness.ts","../../../../../../../src/material/legacy-chips/testing/chip-harness.ts","../../../../../../../src/material/legacy-chips/testing/chip-input-harness.ts","../../../../../../../src/material/legacy-chips/testing/chip-list-harness.ts","../../../../../../../src/material/legacy-chips/testing/chip-option-harness.ts","../../../../../../../src/material/legacy-chips/testing/chip-listbox-harness.ts","../../../../../../../src/material/legacy-chips/testing/public-api.ts","../../../../../../../src/material/legacy-chips/testing/index.ts"],"sourcesContent":["/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {HarnessPredicate, ComponentHarness} from '@angular/cdk/testing';\nimport {LegacyChipAvatarHarnessFilters} from './chip-harness-filters';\n\n/**\n * Harness for interacting with a standard Material chip avatar in tests.\n * @deprecated Use `MatChipAvatarHarness` from `@angular/material/chips/testing` instead. See https://material.angular.io/guide/mdc-migration for information about migrating.\n * @breaking-change 17.0.0\n */\nexport class MatLegacyChipAvatarHarness extends ComponentHarness {\n static hostSelector = '.mat-chip-avatar';\n\n /**\n * Gets a `HarnessPredicate` that can be used to search for a `MatChipAvatarHarness` that meets\n * certain criteria.\n * @param options Options for filtering which input instances are considered a match.\n * @return a `HarnessPredicate` configured with the given options.\n */\n static with(\n options: LegacyChipAvatarHarnessFilters = {},\n ): HarnessPredicate<MatLegacyChipAvatarHarness> {\n return new HarnessPredicate(MatLegacyChipAvatarHarness, options);\n }\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {HarnessPredicate, ComponentHarness} from '@angular/cdk/testing';\nimport {LegacyChipRemoveHarnessFilters} from './chip-harness-filters';\n\n/**\n * Harness for interacting with a standard Material chip remove button in tests.\n * @deprecated Use `MatChipRemoveHarness` from `@angular/material/chips/testing` instead. See https://material.angular.io/guide/mdc-migration for information about migrating.\n * @breaking-change 17.0.0\n */\nexport class MatLegacyChipRemoveHarness extends ComponentHarness {\n static hostSelector = '.mat-chip-remove';\n\n /**\n * Gets a `HarnessPredicate` that can be used to search for a `MatChipRemoveHarness` that meets\n * certain criteria.\n * @param options Options for filtering which input instances are considered a match.\n * @return a `HarnessPredicate` configured with the given options.\n */\n static with(\n options: LegacyChipRemoveHarnessFilters = {},\n ): HarnessPredicate<MatLegacyChipRemoveHarness> {\n return new HarnessPredicate(MatLegacyChipRemoveHarness, options);\n }\n\n /** Clicks the remove button. */\n async click(): Promise<void> {\n return (await this.host()).click();\n }\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {ContentContainerComponentHarness, HarnessPredicate, TestKey} from '@angular/cdk/testing';\nimport {MatLegacyChipAvatarHarness} from './chip-avatar-harness';\nimport {\n LegacyChipAvatarHarnessFilters,\n LegacyChipHarnessFilters,\n LegacyChipRemoveHarnessFilters,\n} from './chip-harness-filters';\nimport {MatLegacyChipRemoveHarness} from './chip-remove-harness';\n\n/**\n * Harness for interacting with a standard selectable Angular Material chip in tests.\n * @deprecated Use `MatChipHarness` from `@angular/material/chips/testing` instead. See https://material.angular.io/guide/mdc-migration for information about migrating.\n * @breaking-change 17.0.0\n */\nexport class MatLegacyChipHarness extends ContentContainerComponentHarness {\n /** The selector for the host element of a `MatChip` instance. */\n static hostSelector = '.mat-chip';\n\n /**\n * Gets a `HarnessPredicate` that can be used to search for a `MatChipHarness` that meets\n * certain criteria.\n * @param options Options for filtering which chip instances are considered a match.\n * @return a `HarnessPredicate` configured with the given options.\n */\n static with(options: LegacyChipHarnessFilters = {}): HarnessPredicate<MatLegacyChipHarness> {\n return new HarnessPredicate(MatLegacyChipHarness, options)\n .addOption('text', options.text, (harness, label) =>\n HarnessPredicate.stringMatches(harness.getText(), label),\n )\n .addOption(\n 'selected',\n options.selected,\n async (harness, selected) => (await harness.isSelected()) === selected,\n );\n }\n\n /** Gets the text of the chip. */\n async getText(): Promise<string> {\n return (await this.host()).text({\n exclude: '.mat-chip-avatar, .mat-chip-trailing-icon, .mat-icon',\n });\n }\n\n /**\n * Whether the chip is selected.\n * @deprecated Use `MatChipOptionHarness.isSelected` instead.\n * @breaking-change 12.0.0\n */\n async isSelected(): Promise<boolean> {\n return (await this.host()).hasClass('mat-chip-selected');\n }\n\n /** Whether the chip is disabled. */\n async isDisabled(): Promise<boolean> {\n return (await this.host()).hasClass('mat-chip-disabled');\n }\n\n /**\n * Selects the given chip. Only applies if it's selectable.\n * @deprecated Use `MatChipOptionHarness.select` instead.\n * @breaking-change 12.0.0\n */\n async select(): Promise<void> {\n if (!(await this.isSelected())) {\n await this.toggle();\n }\n }\n\n /**\n * Deselects the given chip. Only applies if it's selectable.\n * @deprecated Use `MatChipOptionHarness.deselect` instead.\n * @breaking-change 12.0.0\n */\n async deselect(): Promise<void> {\n if (await this.isSelected()) {\n await this.toggle();\n }\n }\n\n /**\n * Toggles the selected state of the given chip. Only applies if it's selectable.\n * @deprecated Use `MatChipOptionHarness.toggle` instead.\n * @breaking-change 12.0.0\n */\n async toggle(): Promise<void> {\n return (await this.host()).sendKeys(' ');\n }\n\n /** Removes the given chip. Only applies if it's removable. */\n async remove(): Promise<void> {\n await (await this.host()).sendKeys(TestKey.DELETE);\n }\n\n /**\n * Gets the remove button inside of a chip.\n * @param filter Optionally filters which remove buttons are included.\n */\n async getRemoveButton(\n filter: LegacyChipRemoveHarnessFilters = {},\n ): Promise<MatLegacyChipRemoveHarness> {\n return this.locatorFor(MatLegacyChipRemoveHarness.with(filter))();\n }\n\n /**\n * Gets the avatar inside a chip.\n * @param filter Optionally filters which avatars are included.\n */\n async getAvatar(\n filter: LegacyChipAvatarHarnessFilters = {},\n ): Promise<MatLegacyChipAvatarHarness | null> {\n return this.locatorForOptional(MatLegacyChipAvatarHarness.with(filter))();\n }\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {HarnessPredicate, ComponentHarness, TestKey} from '@angular/cdk/testing';\nimport {LegacyChipInputHarnessFilters} from './chip-harness-filters';\n\n/**\n * Harness for interacting with a standard Material chip inputs in tests.\n * @deprecated Use `MatChipInputHarness` from `@angular/material/chips/testing` instead. See https://material.angular.io/guide/mdc-migration for information about migrating.\n * @breaking-change 17.0.0\n */\nexport class MatLegacyChipInputHarness extends ComponentHarness {\n static hostSelector = '.mat-chip-input';\n\n /**\n * Gets a `HarnessPredicate` that can be used to search for a `MatChipInputHarness` that meets\n * certain criteria.\n * @param options Options for filtering which input instances are considered a match.\n * @return a `HarnessPredicate` configured with the given options.\n */\n static with(\n options: LegacyChipInputHarnessFilters = {},\n ): HarnessPredicate<MatLegacyChipInputHarness> {\n return new HarnessPredicate(MatLegacyChipInputHarness, options)\n .addOption('value', options.value, async (harness, value) => {\n return (await harness.getValue()) === value;\n })\n .addOption('placeholder', options.placeholder, async (harness, placeholder) => {\n return (await harness.getPlaceholder()) === placeholder;\n });\n }\n\n /** Whether the input is disabled. */\n async isDisabled(): Promise<boolean> {\n return (await this.host()).getProperty('disabled')!;\n }\n\n /** Whether the input is required. */\n async isRequired(): Promise<boolean> {\n return (await this.host()).getProperty('required')!;\n }\n\n /** Gets the value of the input. */\n async getValue(): Promise<string> {\n // The \"value\" property of the native input is never undefined.\n return (await (await this.host()).getProperty('value'))!;\n }\n\n /** Gets the placeholder of the input. */\n async getPlaceholder(): Promise<string> {\n return await (await this.host()).getProperty('placeholder');\n }\n\n /**\n * Focuses the input and returns a promise that indicates when the\n * action is complete.\n */\n async focus(): Promise<void> {\n return (await this.host()).focus();\n }\n\n /**\n * Blurs the input and returns a promise that indicates when the\n * action is complete.\n */\n async blur(): Promise<void> {\n return (await this.host()).blur();\n }\n\n /** Whether the input is focused. */\n async isFocused(): Promise<boolean> {\n return (await this.host()).isFocused();\n }\n\n /**\n * Sets the value of the input. The value will be set by simulating\n * keypresses that correspond to the given value.\n */\n async setValue(newValue: string): Promise<void> {\n const inputEl = await this.host();\n await inputEl.clear();\n\n // We don't want to send keys for the value if the value is an empty\n // string in order to clear the value. Sending keys with an empty string\n // still results in unnecessary focus events.\n if (newValue) {\n await inputEl.sendKeys(newValue);\n }\n }\n\n /** Sends a chip separator key to the input element. */\n async sendSeparatorKey(key: TestKey | string): Promise<void> {\n const inputEl = await this.host();\n return inputEl.sendKeys(key);\n }\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {ComponentHarness, HarnessPredicate, parallel} from '@angular/cdk/testing';\nimport {MatLegacyChipHarness} from './chip-harness';\nimport {MatLegacyChipInputHarness} from './chip-input-harness';\nimport {\n LegacyChipListHarnessFilters,\n LegacyChipHarnessFilters,\n LegacyChipInputHarnessFilters,\n} from './chip-harness-filters';\n\n/**\n * Base class for chip list harnesses.\n * @deprecated Use `class` from `@angular/material/chips/testing` instead. See https://material.angular.io/guide/mdc-migration for information about migrating.\n * @breaking-change 17.0.0\n */\nexport abstract class _MatChipListHarnessBase extends ComponentHarness {\n /** Gets whether the chip list is disabled. */\n async isDisabled(): Promise<boolean> {\n return (await (await this.host()).getAttribute('aria-disabled')) === 'true';\n }\n\n /** Gets whether the chip list is required. */\n async isRequired(): Promise<boolean> {\n return (await (await this.host()).getAttribute('aria-required')) === 'true';\n }\n\n /** Gets whether the chip list is invalid. */\n async isInvalid(): Promise<boolean> {\n return (await (await this.host()).getAttribute('aria-invalid')) === 'true';\n }\n\n /** Gets whether the chip list is in multi selection mode. */\n async isMultiple(): Promise<boolean> {\n return (await (await this.host()).getAttribute('aria-multiselectable')) === 'true';\n }\n\n /** Gets whether the orientation of the chip list. */\n async getOrientation(): Promise<'horizontal' | 'vertical'> {\n const orientation = await (await this.host()).getAttribute('aria-orientation');\n return orientation === 'vertical' ? 'vertical' : 'horizontal';\n }\n}\n\n/**\n * Harness for interacting with a standard chip list in tests.\n * @deprecated Use `MatChipListHarness` from `@angular/material/chips/testing` instead. See https://material.angular.io/guide/mdc-migration for information about migrating.\n * @breaking-change 17.0.0\n */\nexport class MatLegacyChipListHarness extends _MatChipListHarnessBase {\n /** The selector for the host element of a `MatChipList` instance. */\n static hostSelector = '.mat-chip-list';\n\n /**\n * Gets a `HarnessPredicate` that can be used to search for a `MatChipListHarness` that meets\n * certain criteria.\n * @param options Options for filtering which chip list instances are considered a match.\n * @return a `HarnessPredicate` configured with the given options.\n */\n static with(\n options: LegacyChipListHarnessFilters = {},\n ): HarnessPredicate<MatLegacyChipListHarness> {\n return new HarnessPredicate(MatLegacyChipListHarness, options);\n }\n\n /**\n * Gets the list of chips inside the chip list.\n * @param filter Optionally filters which chips are included.\n */\n async getChips(filter: LegacyChipHarnessFilters = {}): Promise<MatLegacyChipHarness[]> {\n return this.locatorForAll(MatLegacyChipHarness.with(filter))();\n }\n\n /**\n * Selects a chip inside the chip list.\n * @param filter An optional filter to apply to the child chips.\n * All the chips matching the filter will be selected.\n * @deprecated Use `MatChipListboxHarness.selectChips` instead.\n * @breaking-change 12.0.0\n */\n async selectChips(filter: LegacyChipHarnessFilters = {}): Promise<void> {\n const chips = await this.getChips(filter);\n if (!chips.length) {\n throw Error(`Cannot find chip matching filter ${JSON.stringify(filter)}`);\n }\n await parallel(() => chips.map(chip => chip.select()));\n }\n\n /**\n * Gets the `MatChipInput` inside the chip list.\n * @param filter Optionally filters which chip input is included.\n */\n async getInput(filter: LegacyChipInputHarnessFilters = {}): Promise<MatLegacyChipInputHarness> {\n // The input isn't required to be a descendant of the chip list so we have to look it up by id.\n const inputId = await (await this.host()).getAttribute('data-mat-chip-input');\n\n if (!inputId) {\n throw Error(`Chip list is not associated with an input`);\n }\n\n return this.documentRootLocatorFactory().locatorFor(\n MatLegacyChipInputHarness.with({...filter, selector: `#${inputId}`}),\n )();\n }\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {HarnessPredicate} from '@angular/cdk/testing';\nimport {MatLegacyChipHarness} from './chip-harness';\nimport {LegacyChipOptionHarnessFilters} from './chip-harness-filters';\n\n/**\n * @deprecated Use `MatChipOptionHarness` from `@angular/material/chips/testing` instead. See https://material.angular.io/guide/mdc-migration for information about migrating.\n * @breaking-change 17.0.0\n */\nexport class MatLegacyChipOptionHarness extends MatLegacyChipHarness {\n /** The selector for the host element of a selectable chip instance. */\n static override hostSelector = '.mat-chip';\n\n /**\n * Gets a `HarnessPredicate` that can be used to search for a `MatChipOptionHarness`\n * that meets certain criteria.\n * @param options Options for filtering which chip instances are considered a match.\n * @return a `HarnessPredicate` configured with the given options.\n */\n static override with(\n options: LegacyChipOptionHarnessFilters = {},\n ): HarnessPredicate<MatLegacyChipOptionHarness> {\n return new HarnessPredicate(MatLegacyChipOptionHarness, options)\n .addOption('text', options.text, (harness, label) =>\n HarnessPredicate.stringMatches(harness.getText(), label),\n )\n .addOption(\n 'selected',\n options.selected,\n async (harness, selected) => (await harness.isSelected()) === selected,\n );\n }\n\n /** Whether the chip is selected. */\n override async isSelected(): Promise<boolean> {\n return (await this.host()).hasClass('mat-chip-selected');\n }\n\n /** Selects the given chip. Only applies if it's selectable. */\n override async select(): Promise<void> {\n if (!(await this.isSelected())) {\n await this.toggle();\n }\n }\n\n /** Deselects the given chip. Only applies if it's selectable. */\n override async deselect(): Promise<void> {\n if (await this.isSelected()) {\n await this.toggle();\n }\n }\n\n /** Toggles the selected state of the given chip. */\n override async toggle(): Promise<void> {\n return (await this.host()).sendKeys(' ');\n }\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {HarnessPredicate, parallel} from '@angular/cdk/testing';\nimport {MatLegacyChipOptionHarness} from './chip-option-harness';\nimport {\n LegacyChipListboxHarnessFilters,\n LegacyChipOptionHarnessFilters,\n} from './chip-harness-filters';\nimport {_MatChipListHarnessBase} from './chip-list-harness';\n\n/**\n * Harness for interacting with a standard selectable chip list in tests.\n * @deprecated Use `MatChipListboxHarness` from `@angular/material/chips/testing` instead. See https://material.angular.io/guide/mdc-migration for information about migrating.\n * @breaking-change 17.0.0\n */\nexport class MatLegacyChipListboxHarness extends _MatChipListHarnessBase {\n /** The selector for the host element of a `MatChipList` instance. */\n static hostSelector = '.mat-chip-list';\n\n /**\n * Gets a `HarnessPredicate` that can be used to search for a `MatChipListHarness` that meets\n * certain criteria.\n * @param options Options for filtering which chip list instances are considered a match.\n * @return a `HarnessPredicate` configured with the given options.\n */\n static with(\n options: LegacyChipListboxHarnessFilters = {},\n ): HarnessPredicate<MatLegacyChipListboxHarness> {\n return new HarnessPredicate(MatLegacyChipListboxHarness, options);\n }\n\n /**\n * Gets the list of chips inside the chip list.\n * @param filter Optionally filters which chips are included.\n */\n async getChips(\n filter: LegacyChipOptionHarnessFilters = {},\n ): Promise<MatLegacyChipOptionHarness[]> {\n return this.locatorForAll(MatLegacyChipOptionHarness.with(filter))();\n }\n\n /**\n * Selects a chip inside the chip list.\n * @param filter An optional filter to apply to the child chips.\n * All the chips matching the filter will be selected.\n */\n async selectChips(filter: LegacyChipOptionHarnessFilters = {}): Promise<void> {\n const chips = await this.getChips(filter);\n if (!chips.length) {\n throw Error(`Cannot find chip matching filter ${JSON.stringify(filter)}`);\n }\n await parallel(() => chips.map(chip => chip.select()));\n }\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nexport {MatLegacyChipHarness} from './chip-harness';\nexport {\n LegacyChipHarnessFilters,\n LegacyChipOptionHarnessFilters,\n LegacyChipListHarnessFilters,\n LegacyChipListboxHarnessFilters,\n LegacyChipInputHarnessFilters,\n LegacyChipRemoveHarnessFilters,\n LegacyChipAvatarHarnessFilters,\n} from './chip-harness-filters';\nexport {MatLegacyChipListHarness} from './chip-list-harness';\nexport {MatLegacyChipInputHarness} from './chip-input-harness';\nexport {MatLegacyChipRemoveHarness} from './chip-remove-harness';\nexport {MatLegacyChipOptionHarness} from './chip-option-harness';\nexport {MatLegacyChipListboxHarness} from './chip-listbox-harness';\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}