mirror of
https://github.com/angular/angular
synced 2026-05-24 09:28:37 +00:00
To increase the ease of development we are moving @angular/docs into the adev directory within this repo. While we are doing this to improve our development experience in the short term, efforts are also in place to maintain a division between this @angular/docs (shared) code and adev itself, so that it can be extracted back out in the future when components is ready to leverage it as well. PR Close #57132
60 lines
1.9 KiB
TypeScript
60 lines
1.9 KiB
TypeScript
/*!
|
|
* @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.dev/license
|
|
*/
|
|
|
|
import {ComponentFixture, TestBed} from '@angular/core/testing';
|
|
|
|
import {SlideToggle} from './slide-toggle.component';
|
|
import {provideExperimentalZonelessChangeDetection} from '@angular/core';
|
|
|
|
describe('SlideToggle', () => {
|
|
let component: SlideToggle;
|
|
let fixture: ComponentFixture<SlideToggle>;
|
|
|
|
beforeEach(() => {
|
|
TestBed.configureTestingModule({
|
|
imports: [SlideToggle],
|
|
providers: [provideExperimentalZonelessChangeDetection()],
|
|
});
|
|
fixture = TestBed.createComponent(SlideToggle);
|
|
component = fixture.componentInstance;
|
|
fixture.detectChanges();
|
|
});
|
|
|
|
it('should toggle the value when clicked', () => {
|
|
expect(component['checked']()).toBeFalse();
|
|
|
|
const buttonElement = fixture.nativeElement.querySelector('input');
|
|
buttonElement.click();
|
|
|
|
expect(component['checked']()).toBeTrue();
|
|
});
|
|
|
|
it('should call onChange and onTouched when toggled', () => {
|
|
const onChangeSpy = jasmine.createSpy('onChangeSpy');
|
|
const onTouchedSpy = jasmine.createSpy('onTouchedSpy');
|
|
component.registerOnChange(onChangeSpy);
|
|
component.registerOnTouched(onTouchedSpy);
|
|
|
|
component.toggle();
|
|
|
|
expect(onChangeSpy).toHaveBeenCalled();
|
|
expect(onChangeSpy).toHaveBeenCalledWith(true);
|
|
expect(onTouchedSpy).toHaveBeenCalled();
|
|
});
|
|
|
|
it('should set active class for button when is checked', () => {
|
|
component.writeValue(true);
|
|
fixture.detectChanges();
|
|
const buttonElement: HTMLButtonElement = fixture.nativeElement.querySelector('input');
|
|
expect(buttonElement.classList.contains('docs-toggle-active')).toBeTrue();
|
|
|
|
component.writeValue(false);
|
|
fixture.detectChanges();
|
|
expect(buttonElement.classList.contains('docs-toggle-active')).toBeFalse();
|
|
});
|
|
});
|