Skip to content

Commit

Permalink
fix(material/button): remove dependency on legacy button (#25579)
Browse files Browse the repository at this point in the history
Fixes that the non-legacy button was depending on the legacy button.
  • Loading branch information
crisbeto committed Sep 8, 2022
1 parent 9331866 commit 518b2b6
Show file tree
Hide file tree
Showing 14 changed files with 59 additions and 62 deletions.
1 change: 0 additions & 1 deletion src/material/button/BUILD.bazel
Expand Up @@ -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",
],
)
Expand Down
24 changes: 21 additions & 3 deletions src/material/button/testing/BUILD.bazel
Expand Up @@ -11,7 +11,6 @@ ts_library(
deps = [
"//src/cdk/coercion",
"//src/cdk/testing",
"//src/material/legacy-button/testing",
],
)

Expand All @@ -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",
],
)

Expand Down
15 changes: 15 additions & 0 deletions 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;
}
2 changes: 1 addition & 1 deletion 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';

Expand Down
4 changes: 2 additions & 2 deletions src/material/button/testing/button-harness.ts
Expand Up @@ -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 {
Expand All @@ -29,7 +29,7 @@ export class MatButtonHarness extends ContentContainerComponentHarness {
*/
static with<T extends MatButtonHarness>(
this: ComponentHarnessConstructor<T>,
options: LegacyButtonHarnessFilters = {},
options: ButtonHarnessFilters = {},
): HarnessPredicate<T> {
return new HarnessPredicate(this, options).addOption('text', options.text, (harness, text) =>
HarnessPredicate.stringMatches(harness.getText(), text),
Expand Down
2 changes: 1 addition & 1 deletion src/material/button/testing/public-api.ts
Expand Up @@ -7,4 +7,4 @@
*/

export * from './button-harness';
export {LegacyButtonHarnessFilters} from '@angular/material/legacy-button/testing';
export * from './button-harness-filters';
Expand Up @@ -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<ButtonHarnessTest>;
let loader: HarnessLoader;
Expand Down
20 changes: 2 additions & 18 deletions src/material/legacy-button/testing/BUILD.bazel
Expand Up @@ -12,6 +12,7 @@ ts_library(
deps = [
"//src/cdk/coercion",
"//src/cdk/testing",
"//src/material/button/testing",
],
)

Expand All @@ -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",
],
)
Expand Down
19 changes: 0 additions & 19 deletions src/material/legacy-button/testing/button-harness-filters.ts

This file was deleted.

4 changes: 2 additions & 2 deletions 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);
});
4 changes: 2 additions & 2 deletions src/material/legacy-button/testing/button-harness.ts
Expand Up @@ -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.
Expand All @@ -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<MatLegacyButtonHarness> {
static with(options: ButtonHarnessFilters = {}): HarnessPredicate<MatLegacyButtonHarness> {
return new HarnessPredicate(MatLegacyButtonHarness, options).addOption(
'text',
options.text,
Expand Down
2 changes: 1 addition & 1 deletion src/material/legacy-button/testing/public-api.ts
Expand Up @@ -7,4 +7,4 @@
*/

export {MatLegacyButtonHarness} from './button-harness';
export {LegacyButtonHarnessFilters} from './button-harness-filters';
export {ButtonHarnessFilters as LegacyButtonHarnessFilters} from '@angular/material/button/testing';
9 changes: 6 additions & 3 deletions tools/public_api_guard/material/button-testing.md
Expand Up @@ -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 {
Expand All @@ -23,7 +26,7 @@ export class MatButtonHarness extends ContentContainerComponentHarness {
static hostSelector: string;
isDisabled(): Promise<boolean>;
isFocused(): Promise<boolean>;
static with<T extends MatButtonHarness>(this: ComponentHarnessConstructor<T>, options?: LegacyButtonHarnessFilters): HarnessPredicate<T>;
static with<T extends MatButtonHarness>(this: ComponentHarnessConstructor<T>, options?: ButtonHarnessFilters): HarnessPredicate<T>;
}

// (No @packageDocumentation comment for this package)
Expand Down
7 changes: 2 additions & 5 deletions tools/public_api_guard/material/legacy-button-testing.md
Expand Up @@ -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 {
Expand Down

0 comments on commit 518b2b6

Please sign in to comment.