From 8bbf6720845e6fc10d138bac3851cfa45767d2df Mon Sep 17 00:00:00 2001 From: Miles Malerba Date: Tue, 16 Aug 2022 00:28:28 +0000 Subject: [PATCH] fix CI issues --- .../testing/snack-bar-harness.ts | 18 +++---- .../snack-bar/testing/snack-bar-harness.ts | 50 ++++++++++++------- .../material/legacy-snack-bar-testing.md | 7 ++- .../material/snack-bar-testing.md | 17 +++++-- 4 files changed, 53 insertions(+), 39 deletions(-) diff --git a/src/material/legacy-snack-bar/testing/snack-bar-harness.ts b/src/material/legacy-snack-bar/testing/snack-bar-harness.ts index 918e67569a22..1696abebdc8c 100644 --- a/src/material/legacy-snack-bar/testing/snack-bar-harness.ts +++ b/src/material/legacy-snack-bar/testing/snack-bar-harness.ts @@ -5,21 +5,18 @@ * Use of this source code is governed by an MIT-style license that can be * found in the LICENSE file at https://angular.io/license */ -import {ComponentHarnessConstructor, HarnessPredicate} from '@angular/cdk/testing'; -import { - MatSnackBarHarness as SnackBarHarnessBase, - SnackBarHarnessFilters, -} from '@angular/material/snack-bar/testing'; +import {HarnessPredicate} from '@angular/cdk/testing'; +import {_MatSnackBarHarnessBase, SnackBarHarnessFilters} from '@angular/material/snack-bar/testing'; /** Harness for interacting with a standard mat-snack-bar in tests. */ -export class MatLegacySnackBarHarness extends SnackBarHarnessBase { +export class MatLegacySnackBarHarness extends _MatSnackBarHarnessBase { // Developers can provide a custom component or template for the snackbar. The canonical snack-bar // parent is the "MatSnackBarContainer". We use `:not([mat-exit])` to exclude snack bars that // are in the process of being dismissed, because the element only gets removed after the // animation is finished and since it runs outside of Angular, we don't have a way of being // notified when it's done. /** The selector for the host element of a `MatSnackBar` instance. */ - static override hostSelector = '.mat-snack-bar-container'; + static hostSelector = '.mat-snack-bar-container'; protected override _messageSelector = '.mat-simple-snackbar > span'; protected override _actionButtonSelector = '.mat-simple-snackbar-action > button'; @@ -28,11 +25,8 @@ export class MatLegacySnackBarHarness extends SnackBarHarnessBase { * @param options Options for filtering which snack bar instances are considered a match. * @return a `HarnessPredicate` configured with the given options. */ - static override with( - this: ComponentHarnessConstructor, - options: SnackBarHarnessFilters = {}, - ): HarnessPredicate { - return new HarnessPredicate(this, options); + static with(options: SnackBarHarnessFilters = {}): HarnessPredicate { + return new HarnessPredicate(MatLegacySnackBarHarness, options); } protected override async _assertContentAnnotated() { diff --git a/src/material/snack-bar/testing/snack-bar-harness.ts b/src/material/snack-bar/testing/snack-bar-harness.ts index 0e30f887756e..59b358c4d367 100644 --- a/src/material/snack-bar/testing/snack-bar-harness.ts +++ b/src/material/snack-bar/testing/snack-bar-harness.ts @@ -10,25 +10,11 @@ import {ContentContainerComponentHarness, HarnessPredicate, parallel} from '@ang import {AriaLivePoliteness} from '@angular/cdk/a11y'; import {SnackBarHarnessFilters} from './snack-bar-harness-filters'; -/** Harness for interacting with an MDC-based mat-snack-bar in tests. */ -export class MatSnackBarHarness extends ContentContainerComponentHarness { - // Developers can provide a custom component or template for the - // snackbar. The canonical snack-bar parent is the "MatSnackBarContainer". - /** The selector for the host element of a `MatSnackBar` instance. */ - static hostSelector = '.mat-mdc-snack-bar-container:not([mat-exit])'; - protected _messageSelector = '.mdc-snackbar__label'; - protected _actionButtonSelector = '.mat-mdc-snack-bar-action'; - private _snackBarLiveRegion = this.locatorFor('[aria-live]'); +export abstract class _MatSnackBarHarnessBase extends ContentContainerComponentHarness { + protected abstract _messageSelector: string; + protected abstract _actionButtonSelector: string; - /** - * Gets a `HarnessPredicate` that can be used to search for a `MatSnackBarHarness` that meets - * certain criteria. - * @param options Options for filtering which snack bar instances are considered a match. - * @return a `HarnessPredicate` configured with the given options. - */ - static with(options: SnackBarHarnessFilters = {}): HarnessPredicate { - return new HarnessPredicate(MatSnackBarHarness, options); - } + private _snackBarLiveRegion = this.locatorFor('[aria-live]'); /** * Gets the role of the snack-bar. The role of a snack-bar is determined based @@ -104,7 +90,7 @@ export class MatSnackBarHarness extends ContentContainerComponentHarness * Asserts that the current snack-bar has annotated content. Promise reject * if content is not annotated. */ - protected async _assertContentAnnotated(): Promise {} + protected abstract _assertContentAnnotated(): Promise; /** * Asserts that the current snack-bar has an action defined. Otherwise the @@ -122,3 +108,29 @@ export class MatSnackBarHarness extends ContentContainerComponentHarness return this.locatorForOptional(this._actionButtonSelector)(); } } + +/** Harness for interacting with an MDC-based mat-snack-bar in tests. */ +export class MatSnackBarHarness extends _MatSnackBarHarnessBase { + // Developers can provide a custom component or template for the + // snackbar. The canonical snack-bar parent is the "MatSnackBarContainer". + /** The selector for the host element of a `MatSnackBar` instance. */ + static hostSelector = '.mat-mdc-snack-bar-container:not([mat-exit])'; + protected override _messageSelector = '.mdc-snackbar__label'; + protected override _actionButtonSelector = '.mat-mdc-snack-bar-action'; + + /** + * Gets a `HarnessPredicate` that can be used to search for a `MatSnackBarHarness` that meets + * certain criteria. + * @param options Options for filtering which snack bar instances are considered a match. + * @return a `HarnessPredicate` configured with the given options. + */ + static with(options: SnackBarHarnessFilters = {}): HarnessPredicate { + return new HarnessPredicate(MatSnackBarHarness, options); + } + + /** + * Asserts that the current snack-bar has annotated content. Promise reject + * if content is not annotated. + */ + protected override async _assertContentAnnotated() {} +} diff --git a/tools/public_api_guard/material/legacy-snack-bar-testing.md b/tools/public_api_guard/material/legacy-snack-bar-testing.md index fade1269e695..15dc94c1f081 100644 --- a/tools/public_api_guard/material/legacy-snack-bar-testing.md +++ b/tools/public_api_guard/material/legacy-snack-bar-testing.md @@ -4,15 +4,14 @@ ```ts -import { ComponentHarnessConstructor } from '@angular/cdk/testing'; import { HarnessPredicate } from '@angular/cdk/testing'; import { SnackBarHarnessFilters as LegacySnackBarHarnessFilters } from '@angular/material/snack-bar/testing'; -import { MatSnackBarHarness } from '@angular/material/snack-bar/testing'; +import { _MatSnackBarHarnessBase } from '@angular/material/snack-bar/testing'; export { LegacySnackBarHarnessFilters } // @public -export class MatLegacySnackBarHarness extends MatSnackBarHarness { +export class MatLegacySnackBarHarness extends _MatSnackBarHarnessBase { // (undocumented) protected _actionButtonSelector: string; // (undocumented) @@ -20,7 +19,7 @@ export class MatLegacySnackBarHarness extends MatSnackBarHarness { static hostSelector: string; // (undocumented) protected _messageSelector: string; - static with(this: ComponentHarnessConstructor, options?: LegacySnackBarHarnessFilters): HarnessPredicate; + static with(options?: LegacySnackBarHarnessFilters): HarnessPredicate; } // (No @packageDocumentation comment for this package) diff --git a/tools/public_api_guard/material/snack-bar-testing.md b/tools/public_api_guard/material/snack-bar-testing.md index 5f321d6f9a62..69306db61429 100644 --- a/tools/public_api_guard/material/snack-bar-testing.md +++ b/tools/public_api_guard/material/snack-bar-testing.md @@ -10,10 +10,21 @@ import { ContentContainerComponentHarness } from '@angular/cdk/testing'; import { HarnessPredicate } from '@angular/cdk/testing'; // @public -export class MatSnackBarHarness extends ContentContainerComponentHarness { +export class MatSnackBarHarness extends _MatSnackBarHarnessBase { // (undocumented) protected _actionButtonSelector: string; protected _assertContentAnnotated(): Promise; + static hostSelector: string; + // (undocumented) + protected _messageSelector: string; + static with(options?: SnackBarHarnessFilters): HarnessPredicate; +} + +// @public (undocumented) +export abstract class _MatSnackBarHarnessBase extends ContentContainerComponentHarness { + // (undocumented) + protected abstract _actionButtonSelector: string; + protected abstract _assertContentAnnotated(): Promise; protected _assertHasAction(): Promise; dismissWithAction(): Promise; getActionDescription(): Promise; @@ -22,11 +33,9 @@ export class MatSnackBarHarness extends ContentContainerComponentHarness // @deprecated getRole(): Promise<'alert' | 'status' | null>; hasAction(): Promise; - static hostSelector: string; isDismissed(): Promise; // (undocumented) - protected _messageSelector: string; - static with(options?: SnackBarHarnessFilters): HarnessPredicate; + protected abstract _messageSelector: string; } // @public