From 518b2b63aa7fefbfc660dabb55ca663dbeaf0b12 Mon Sep 17 00:00:00 2001 From: Kristiyan Kostadinov Date: Thu, 8 Sep 2022 12:59:18 +0200 Subject: [PATCH] fix(material/button): remove dependency on legacy button (#25579) Fixes that the non-legacy button was depending on the legacy button. --- src/material/button/BUILD.bazel | 1 - src/material/button/testing/BUILD.bazel | 24 ++++++++++++++++--- .../button/testing/button-harness-filters.ts | 15 ++++++++++++ .../button/testing/button-harness.spec.ts | 2 +- src/material/button/testing/button-harness.ts | 4 ++-- src/material/button/testing/public-api.ts | 2 +- .../testing/shared.spec.ts | 8 +++---- .../legacy-button/testing/BUILD.bazel | 20 ++-------------- .../testing/button-harness-filters.ts | 19 --------------- .../testing/button-harness.spec.ts | 4 ++-- .../legacy-button/testing/button-harness.ts | 4 ++-- .../legacy-button/testing/public-api.ts | 2 +- .../material/button-testing.md | 9 ++++--- .../material/legacy-button-testing.md | 7 ++---- 14 files changed, 59 insertions(+), 62 deletions(-) create mode 100644 src/material/button/testing/button-harness-filters.ts rename src/material/{legacy-button => button}/testing/shared.spec.ts (95%) delete mode 100644 src/material/legacy-button/testing/button-harness-filters.ts diff --git a/src/material/button/BUILD.bazel b/src/material/button/BUILD.bazel index 82e5d36a6fc3..e1781e7b5c7b 100644 --- a/src/material/button/BUILD.bazel +++ b/src/material/button/BUILD.bazel @@ -100,7 +100,6 @@ ng_test_library( "//src/cdk/platform", "//src/cdk/testing/private", "//src/material/core", - "//src/material/legacy-button", "@npm//@angular/platform-browser", ], ) diff --git a/src/material/button/testing/BUILD.bazel b/src/material/button/testing/BUILD.bazel index 7d1c60a8358c..62a85140a6f3 100644 --- a/src/material/button/testing/BUILD.bazel +++ b/src/material/button/testing/BUILD.bazel @@ -11,7 +11,6 @@ ts_library( deps = [ "//src/cdk/coercion", "//src/cdk/testing", - "//src/material/legacy-button/testing", ], ) @@ -22,11 +21,30 @@ filegroup( ng_test_library( name = "unit_tests_lib", - srcs = glob(["**/*.spec.ts"]), + srcs = glob( + ["**/*.spec.ts"], + exclude = ["shared.spec.ts"], + ), + deps = [ + ":harness_tests_lib", + ":testing", + "//src/material/button", + ], +) + +ng_test_library( + name = "harness_tests_lib", + srcs = ["shared.spec.ts"], deps = [ ":testing", + "//src/cdk/platform", + "//src/cdk/testing", + "//src/cdk/testing/testbed", "//src/material/button", - "//src/material/legacy-button/testing:harness_tests_lib", + "//src/material/icon", + "//src/material/icon/testing", + "@npm//@angular/forms", + "@npm//@angular/platform-browser", ], ) diff --git a/src/material/button/testing/button-harness-filters.ts b/src/material/button/testing/button-harness-filters.ts new file mode 100644 index 000000000000..4363961feb40 --- /dev/null +++ b/src/material/button/testing/button-harness-filters.ts @@ -0,0 +1,15 @@ +/** + * @license + * Copyright Google LLC All Rights Reserved. + * + * 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 {BaseHarnessFilters} from '@angular/cdk/testing'; + +/** A set of criteria that can be used to filter a list of button harness instances. */ +export interface ButtonHarnessFilters extends BaseHarnessFilters { + /** Only find instances whose text matches the given value. */ + text?: string | RegExp; +} diff --git a/src/material/button/testing/button-harness.spec.ts b/src/material/button/testing/button-harness.spec.ts index ad3af5d1c07c..d9151564792b 100644 --- a/src/material/button/testing/button-harness.spec.ts +++ b/src/material/button/testing/button-harness.spec.ts @@ -1,4 +1,4 @@ -import {runHarnessTests} from '@angular/material/legacy-button/testing/shared.spec'; +import {runHarnessTests} from '@angular/material/button/testing/shared.spec'; import {MatButtonModule} from '../index'; import {MatButtonHarness} from './button-harness'; diff --git a/src/material/button/testing/button-harness.ts b/src/material/button/testing/button-harness.ts index fde909742c87..e4ac50c6ae8a 100644 --- a/src/material/button/testing/button-harness.ts +++ b/src/material/button/testing/button-harness.ts @@ -12,7 +12,7 @@ import { HarnessPredicate, } from '@angular/cdk/testing'; import {coerceBooleanProperty} from '@angular/cdk/coercion'; -import {LegacyButtonHarnessFilters} from '@angular/material/legacy-button/testing'; +import {ButtonHarnessFilters} from './button-harness-filters'; /** Harness for interacting with a MDC-based mat-button in tests. */ export class MatButtonHarness extends ContentContainerComponentHarness { @@ -29,7 +29,7 @@ export class MatButtonHarness extends ContentContainerComponentHarness { */ static with( this: ComponentHarnessConstructor, - options: LegacyButtonHarnessFilters = {}, + options: ButtonHarnessFilters = {}, ): HarnessPredicate { return new HarnessPredicate(this, options).addOption('text', options.text, (harness, text) => HarnessPredicate.stringMatches(harness.getText(), text), diff --git a/src/material/button/testing/public-api.ts b/src/material/button/testing/public-api.ts index 8c2b2df20444..bdb6d150e3c3 100644 --- a/src/material/button/testing/public-api.ts +++ b/src/material/button/testing/public-api.ts @@ -7,4 +7,4 @@ */ export * from './button-harness'; -export {LegacyButtonHarnessFilters} from '@angular/material/legacy-button/testing'; +export * from './button-harness-filters'; diff --git a/src/material/legacy-button/testing/shared.spec.ts b/src/material/button/testing/shared.spec.ts similarity index 95% rename from src/material/legacy-button/testing/shared.spec.ts rename to src/material/button/testing/shared.spec.ts index 3f71ad74a2c0..2a96d2045c3c 100644 --- a/src/material/legacy-button/testing/shared.spec.ts +++ b/src/material/button/testing/shared.spec.ts @@ -3,15 +3,15 @@ import {HarnessLoader} from '@angular/cdk/testing'; import {TestbedHarnessEnvironment} from '@angular/cdk/testing/testbed'; import {Component} from '@angular/core'; import {ComponentFixture, inject, TestBed} from '@angular/core/testing'; -import {MatLegacyButtonModule} from '@angular/material/legacy-button'; -import {MatLegacyButtonHarness} from '@angular/material/legacy-button/testing/button-harness'; +import {MatButtonModule} from '@angular/material/button'; +import {MatButtonHarness} from '@angular/material/button/testing/button-harness'; import {MatIconModule} from '@angular/material/icon'; import {MatIconHarness} from '@angular/material/icon/testing/icon-harness'; /** Shared tests to run on both the original and MDC-based buttons. */ export function runHarnessTests( - buttonModule: typeof MatLegacyButtonModule, - buttonHarness: typeof MatLegacyButtonHarness, + buttonModule: typeof MatButtonModule, + buttonHarness: typeof MatButtonHarness, ) { let fixture: ComponentFixture; let loader: HarnessLoader; diff --git a/src/material/legacy-button/testing/BUILD.bazel b/src/material/legacy-button/testing/BUILD.bazel index ace3b357807a..7dd1605c8fd7 100644 --- a/src/material/legacy-button/testing/BUILD.bazel +++ b/src/material/legacy-button/testing/BUILD.bazel @@ -12,6 +12,7 @@ ts_library( deps = [ "//src/cdk/coercion", "//src/cdk/testing", + "//src/material/button/testing", ], ) @@ -20,34 +21,17 @@ filegroup( srcs = glob(["**/*.ts"]), ) -ng_test_library( - name = "harness_tests_lib", - srcs = ["shared.spec.ts"], - deps = [ - ":testing", - "//src/cdk/platform", - "//src/cdk/testing", - "//src/cdk/testing/testbed", - "//src/material/icon", - "//src/material/icon/testing", - "//src/material/legacy-button", - "@npm//@angular/forms", - "@npm//@angular/platform-browser", - ], -) - ng_test_library( name = "unit_tests_lib", srcs = glob( ["**/*.spec.ts"], exclude = [ "**/*.e2e.spec.ts", - "shared.spec.ts", ], ), deps = [ - ":harness_tests_lib", ":testing", + "//src/material/button/testing:harness_tests_lib", "//src/material/legacy-button", ], ) diff --git a/src/material/legacy-button/testing/button-harness-filters.ts b/src/material/legacy-button/testing/button-harness-filters.ts deleted file mode 100644 index d8e923b1064d..000000000000 --- a/src/material/legacy-button/testing/button-harness-filters.ts +++ /dev/null @@ -1,19 +0,0 @@ -/** - * @license - * Copyright Google LLC All Rights Reserved. - * - * 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 {BaseHarnessFilters} from '@angular/cdk/testing'; - -/** - * A set of criteria that can be used to filter a list of button harness instances. - * @deprecated Use `ButtonHarnessFilters` from `@angular/material/button/testing` instead. See https://material.angular.io/guide/mdc-migration for information about migrating. - * @breaking-change 17.0.0 - */ -export interface LegacyButtonHarnessFilters extends BaseHarnessFilters { - /** Only find instances whose text matches the given value. */ - text?: string | RegExp; -} diff --git a/src/material/legacy-button/testing/button-harness.spec.ts b/src/material/legacy-button/testing/button-harness.spec.ts index 05ee78558671..dc657704d873 100644 --- a/src/material/legacy-button/testing/button-harness.spec.ts +++ b/src/material/legacy-button/testing/button-harness.spec.ts @@ -1,7 +1,7 @@ import {MatLegacyButtonModule} from '@angular/material/legacy-button'; -import {runHarnessTests} from '@angular/material/legacy-button/testing/shared.spec'; +import {runHarnessTests} from '@angular/material/button/testing/shared.spec'; import {MatLegacyButtonHarness} from './button-harness'; describe('Non-MDC-based MatLegacyButtonHarness', () => { - runHarnessTests(MatLegacyButtonModule, MatLegacyButtonHarness); + runHarnessTests(MatLegacyButtonModule, MatLegacyButtonHarness as any); }); diff --git a/src/material/legacy-button/testing/button-harness.ts b/src/material/legacy-button/testing/button-harness.ts index 7d337ed8ed5e..c6f9df3eb210 100644 --- a/src/material/legacy-button/testing/button-harness.ts +++ b/src/material/legacy-button/testing/button-harness.ts @@ -8,7 +8,7 @@ import {ContentContainerComponentHarness, HarnessPredicate} from '@angular/cdk/testing'; import {coerceBooleanProperty} from '@angular/cdk/coercion'; -import {LegacyButtonHarnessFilters} from './button-harness-filters'; +import {ButtonHarnessFilters} from '@angular/material/button/testing'; /** * Harness for interacting with a standard mat-button in tests. @@ -27,7 +27,7 @@ export class MatLegacyButtonHarness extends ContentContainerComponentHarness { * @param options Options for filtering which button instances are considered a match. * @return a `HarnessPredicate` configured with the given options. */ - static with(options: LegacyButtonHarnessFilters = {}): HarnessPredicate { + static with(options: ButtonHarnessFilters = {}): HarnessPredicate { return new HarnessPredicate(MatLegacyButtonHarness, options).addOption( 'text', options.text, diff --git a/src/material/legacy-button/testing/public-api.ts b/src/material/legacy-button/testing/public-api.ts index 20d86df41cc7..7663152c7846 100644 --- a/src/material/legacy-button/testing/public-api.ts +++ b/src/material/legacy-button/testing/public-api.ts @@ -7,4 +7,4 @@ */ export {MatLegacyButtonHarness} from './button-harness'; -export {LegacyButtonHarnessFilters} from './button-harness-filters'; +export {ButtonHarnessFilters as LegacyButtonHarnessFilters} from '@angular/material/button/testing'; diff --git a/tools/public_api_guard/material/button-testing.md b/tools/public_api_guard/material/button-testing.md index 57c6f99ca8fd..a29166dbe87c 100644 --- a/tools/public_api_guard/material/button-testing.md +++ b/tools/public_api_guard/material/button-testing.md @@ -4,12 +4,15 @@ ```ts +import { BaseHarnessFilters } from '@angular/cdk/testing'; import { ComponentHarnessConstructor } from '@angular/cdk/testing'; import { ContentContainerComponentHarness } from '@angular/cdk/testing'; import { HarnessPredicate } from '@angular/cdk/testing'; -import { LegacyButtonHarnessFilters } from '@angular/material/legacy-button/testing'; -export { LegacyButtonHarnessFilters } +// @public +export interface ButtonHarnessFilters extends BaseHarnessFilters { + text?: string | RegExp; +} // @public export class MatButtonHarness extends ContentContainerComponentHarness { @@ -23,7 +26,7 @@ export class MatButtonHarness extends ContentContainerComponentHarness { static hostSelector: string; isDisabled(): Promise; isFocused(): Promise; - static with(this: ComponentHarnessConstructor, options?: LegacyButtonHarnessFilters): HarnessPredicate; + static with(this: ComponentHarnessConstructor, options?: ButtonHarnessFilters): HarnessPredicate; } // (No @packageDocumentation comment for this package) diff --git a/tools/public_api_guard/material/legacy-button-testing.md b/tools/public_api_guard/material/legacy-button-testing.md index 94c682b7d9ba..faafeb384494 100644 --- a/tools/public_api_guard/material/legacy-button-testing.md +++ b/tools/public_api_guard/material/legacy-button-testing.md @@ -4,14 +4,11 @@ ```ts -import { BaseHarnessFilters } from '@angular/cdk/testing'; import { ContentContainerComponentHarness } from '@angular/cdk/testing'; import { HarnessPredicate } from '@angular/cdk/testing'; +import { ButtonHarnessFilters as LegacyButtonHarnessFilters } from '@angular/material/button/testing'; -// @public @deprecated -export interface LegacyButtonHarnessFilters extends BaseHarnessFilters { - text?: string | RegExp; -} +export { LegacyButtonHarnessFilters } // @public @deprecated export class MatLegacyButtonHarness extends ContentContainerComponentHarness {