{"version":3,"file":"testing.mjs","sources":["../../../../../../../src/material/slide-toggle/testing/slide-toggle-harness.ts","../../../../../../../src/material/slide-toggle/testing/public-api.ts","../../../../../../../src/material/slide-toggle/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 {\n  AsyncFactoryFn,\n  ComponentHarness,\n  HarnessPredicate,\n  TestElement,\n} from '@angular/cdk/testing';\nimport {coerceBooleanProperty} from '@angular/cdk/coercion';\nimport {SlideToggleHarnessFilters} from './slide-toggle-harness-filters';\n\nexport abstract class _MatSlideToggleHarnessBase extends ComponentHarness {\n  private _label = this.locatorFor('label');\n  protected abstract _nativeElement: AsyncFactoryFn<TestElement>;\n\n  /** Toggle the checked state of the slide-toggle. */\n  abstract toggle(): Promise<void>;\n\n  /** Whether the slide-toggle is checked. */\n  abstract isChecked(): Promise<boolean>;\n\n  /** Whether the slide-toggle is disabled. */\n  async isDisabled(): Promise<boolean> {\n    const disabled = (await this._nativeElement()).getAttribute('disabled');\n    return coerceBooleanProperty(await disabled);\n  }\n\n  /** Whether the slide-toggle is required. */\n  async isRequired(): Promise<boolean> {\n    const required = (await this._nativeElement()).getAttribute('required');\n    return coerceBooleanProperty(await required);\n  }\n\n  /** Whether the slide-toggle is valid. */\n  async isValid(): Promise<boolean> {\n    const invalid = (await this.host()).hasClass('ng-invalid');\n    return !(await invalid);\n  }\n\n  /** Gets the slide-toggle's name. */\n  async getName(): Promise<string | null> {\n    return (await this._nativeElement()).getAttribute('name');\n  }\n\n  /** Gets the slide-toggle's aria-label. */\n  async getAriaLabel(): Promise<string | null> {\n    return (await this._nativeElement()).getAttribute('aria-label');\n  }\n\n  /** Gets the slide-toggle's aria-labelledby. */\n  async getAriaLabelledby(): Promise<string | null> {\n    return (await this._nativeElement()).getAttribute('aria-labelledby');\n  }\n\n  /** Gets the slide-toggle's label text. */\n  async getLabelText(): Promise<string> {\n    return (await this._label()).text();\n  }\n\n  /** Focuses the slide-toggle. */\n  async focus(): Promise<void> {\n    return (await this._nativeElement()).focus();\n  }\n\n  /** Blurs the slide-toggle. */\n  async blur(): Promise<void> {\n    return (await this._nativeElement()).blur();\n  }\n\n  /** Whether the slide-toggle is focused. */\n  async isFocused(): Promise<boolean> {\n    return (await this._nativeElement()).isFocused();\n  }\n\n  /**\n   * Puts the slide-toggle in a checked state by toggling it if it is currently unchecked, or doing\n   * nothing if it is already checked.\n   */\n  async check(): Promise<void> {\n    if (!(await this.isChecked())) {\n      await this.toggle();\n    }\n  }\n\n  /**\n   * Puts the slide-toggle in an unchecked state by toggling it if it is currently checked, or doing\n   * nothing if it is already unchecked.\n   */\n  async uncheck(): Promise<void> {\n    if (await this.isChecked()) {\n      await this.toggle();\n    }\n  }\n}\n\n\n\n/** Harness for interacting with a standard mat-slide-toggle in tests. */\nexport class MatSlideToggleHarness extends _MatSlideToggleHarnessBase {\n  private _inputContainer = this.locatorFor('.mat-slide-toggle-bar');\n  protected _nativeElement = this.locatorFor('input');\n\n  /** The selector for the host element of a `MatSlideToggle` instance. */\n  static hostSelector = '.mat-slide-toggle';\n\n  /**\n   * Gets a `HarnessPredicate` that can be used to search for a `MatSlideToggleHarness` that meets\n   * certain criteria.\n   * @param options Options for filtering which slide toggle instances are considered a match.\n   * @return a `HarnessPredicate` configured with the given options.\n   */\n  static with(options: SlideToggleHarnessFilters = {}): HarnessPredicate<MatSlideToggleHarness> {\n    return new HarnessPredicate(MatSlideToggleHarness, options)\n        .addOption('label', options.label,\n            (harness, label) => HarnessPredicate.stringMatches(harness.getLabelText(), label))\n        // We want to provide a filter option for \"name\" because the name of the slide-toggle is\n        // only set on the underlying input. This means that it's not possible for developers\n        // to retrieve the harness of a specific checkbox with name through a CSS selector.\n        .addOption('name', options.name, async (harness, name) => await harness.getName() === name);\n  }\n\n  /** Toggle the checked state of the slide-toggle. */\n  async toggle(): Promise<void> {\n    return (await this._inputContainer()).click();\n  }\n\n  /** Whether the slide-toggle is checked. */\n  async isChecked(): Promise<boolean> {\n    const checked = (await this._nativeElement()).getProperty<boolean>('checked');\n    return coerceBooleanProperty(await checked);\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 * from './slide-toggle-harness';\nexport * from './slide-toggle-harness-filters';\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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"}