1 import { Component } from '@angular/core';
2 import { ComponentFixture, TestBed } from '@angular/core/testing';
3 import { By } from '@angular/platform-browser';
5 import { configureTestBed } from '~/testing/unit-test-helper';
6 import { AutofocusDirective } from './autofocus.directive';
11 <input id="x" type="text" />
12 <input id="y" type="password" autofocus />
16 export class PasswordFormComponent {}
21 <input id="x" type="checkbox" [autofocus]="edit" />
22 <input id="y" type="text" />
26 export class CheckboxFormComponent {
33 <input id="x" type="text" [autofocus]="foo" />
37 export class TextFormComponent {
43 describe('AutofocusDirective', () => {
47 CheckboxFormComponent,
48 PasswordFormComponent,
53 it('should create an instance', () => {
54 const directive = new AutofocusDirective(null);
55 expect(directive).toBeTruthy();
58 it('should focus the password form field', () => {
59 const fixture: ComponentFixture<PasswordFormComponent> = TestBed.createComponent(
62 fixture.detectChanges();
63 const focused = fixture.debugElement.query(By.css(':focus'));
64 expect(focused.attributes.id).toBe('y');
65 expect(focused.attributes.type).toBe('password');
66 const element = document.getElementById('y');
67 expect(element === document.activeElement).toBeTruthy();
70 it('should focus the checkbox form field', () => {
71 const fixture: ComponentFixture<CheckboxFormComponent> = TestBed.createComponent(
74 fixture.detectChanges();
75 const focused = fixture.debugElement.query(By.css(':focus'));
76 expect(focused.attributes.id).toBe('x');
77 expect(focused.attributes.type).toBe('checkbox');
78 const element = document.getElementById('x');
79 expect(element === document.activeElement).toBeTruthy();
82 it('should not focus the text form field', () => {
83 const fixture: ComponentFixture<TextFormComponent> = TestBed.createComponent(TextFormComponent);
84 fixture.detectChanges();
85 const focused = fixture.debugElement.query(By.css(':focus'));
86 expect(focused).toBeNull();
87 const element = document.getElementById('x');
88 expect(element !== document.activeElement).toBeTruthy();