@@ -7,24 +7,24 @@ import {Platform} from '../platform/platform';
77
88describe ( 'FocusTrap' ,  ( )  =>  { 
99
10-   describe ( 'with default element' ,   ( )  =>  { 
11- 
12-     let   fixture :  ComponentFixture < FocusTrapTestApp > ; 
13-     let   focusTrapInstance :  FocusTrap ; 
14-     let   platform :  Platform   =   new   Platform ( ) ; 
10+   beforeEach ( async ( ( )  =>  { 
11+      TestBed . configureTestingModule ( { 
12+        declarations :  [ FocusTrapDirective ,   FocusTrapWithBindings ,   SimpleFocusTrap ,   FocusTrapTargets ] , 
13+        providers :  [ InteractivityChecker ,   Platform ,   FocusTrapFactory ] 
14+     } ) ; 
1515
16-     beforeEach ( async ( ( )  =>  { 
17-       TestBed . configureTestingModule ( { 
18-         declarations : [ FocusTrapDirective ,  FocusTrapTestApp ] , 
19-         providers : [ InteractivityChecker ,  Platform ,  FocusTrapFactory ] 
20-       } ) ; 
16+     TestBed . compileComponents ( ) ; 
17+   } ) ) ; 
2118
22-       TestBed . compileComponents ( ) ; 
19+   describe ( 'with default element' ,  ( )  =>  { 
20+     let  fixture : ComponentFixture < SimpleFocusTrap > ; 
21+     let  focusTrapInstance : FocusTrap ; 
2322
24-       fixture  =  TestBed . createComponent ( FocusTrapTestApp ) ; 
23+     beforeEach ( ( )  =>  { 
24+       fixture  =  TestBed . createComponent ( SimpleFocusTrap ) ; 
2525      fixture . detectChanges ( ) ; 
2626      focusTrapInstance  =  fixture . componentInstance . focusTrapDirective . focusTrap ; 
27-     } ) ) ; 
27+     } ) ; 
2828
2929    it ( 'wrap focus from end to start' ,  ( )  =>  { 
3030      // Because we can't mimic a real tab press focus change in a unit test, just call the 
@@ -41,12 +41,28 @@ describe('FocusTrap', () => {
4141      focusTrapInstance . focusLastTabbableElement ( ) ; 
4242
4343      // In iOS button elements are never tabbable, so the last element will be the input. 
44-       let  lastElement  =  platform . IOS  ? 'input'  : 'button' ; 
44+       let  lastElement  =  new   Platform ( ) . IOS  ? 'input'  : 'button' ; 
4545
4646      expect ( document . activeElement . nodeName . toLowerCase ( ) ) 
4747          . toBe ( lastElement ,  `Expected ${ lastElement }  ) ; 
4848    } ) ; 
4949
50+     it ( 'should be enabled by default' ,  ( )  =>  { 
51+       expect ( focusTrapInstance . enabled ) . toBe ( true ) ; 
52+     } ) ; 
53+ 
54+   } ) ; 
55+ 
56+   describe ( 'with bindings' ,  ( )  =>  { 
57+     let  fixture : ComponentFixture < FocusTrapWithBindings > ; 
58+     let  focusTrapInstance : FocusTrap ; 
59+ 
60+     beforeEach ( ( )  =>  { 
61+       fixture  =  TestBed . createComponent ( FocusTrapWithBindings ) ; 
62+       fixture . detectChanges ( ) ; 
63+       focusTrapInstance  =  fixture . componentInstance . focusTrapDirective . focusTrap ; 
64+     } ) ; 
65+ 
5066    it ( 'should clean up its anchor sibling elements on destroy' ,  ( )  =>  { 
5167      const  rootElement  =  fixture . debugElement . nativeElement  as  HTMLElement ; 
5268
@@ -73,21 +89,14 @@ describe('FocusTrap', () => {
7389  } ) ; 
7490
7591  describe ( 'with focus targets' ,  ( )  =>  { 
76-     let  fixture : ComponentFixture < FocusTrapTargetTestApp > ; 
92+     let  fixture : ComponentFixture < FocusTrapTargets > ; 
7793    let  focusTrapInstance : FocusTrap ; 
7894
79-     beforeEach ( async ( ( )  =>  { 
80-       TestBed . configureTestingModule ( { 
81-         declarations : [ FocusTrapDirective ,  FocusTrapTargetTestApp ] , 
82-         providers : [ InteractivityChecker ,  Platform ,  FocusTrapFactory ] 
83-       } ) ; 
84- 
85-       TestBed . compileComponents ( ) ; 
86- 
87-       fixture  =  TestBed . createComponent ( FocusTrapTargetTestApp ) ; 
95+     beforeEach ( ( )  =>  { 
96+       fixture  =  TestBed . createComponent ( FocusTrapTargets ) ; 
8897      fixture . detectChanges ( ) ; 
8998      focusTrapInstance  =  fixture . componentInstance . focusTrapDirective . focusTrap ; 
90-     } ) ) ; 
99+     } ) ; 
91100
92101    it ( 'should be able to prioritize the first focus target' ,  ( )  =>  { 
93102      // Because we can't mimic a real tab press focus change in a unit test, just call the 
@@ -106,6 +115,19 @@ describe('FocusTrap', () => {
106115} ) ; 
107116
108117
118+ @Component ( { 
119+   template : ` 
120+     <div cdkTrapFocus> 
121+       <input> 
122+       <button>SAVE</button> 
123+     </div> 
124+     ` 
125+ } ) 
126+ class  SimpleFocusTrap  { 
127+   @ViewChild ( FocusTrapDirective )  focusTrapDirective : FocusTrapDirective ; 
128+ } 
129+ 
130+ 
109131@Component ( { 
110132  template : ` 
111133    <div *ngIf="renderFocusTrap" [cdkTrapFocus]="isFocusTrapEnabled"> 
@@ -114,7 +136,7 @@ describe('FocusTrap', () => {
114136    </div> 
115137    ` 
116138} ) 
117- class  FocusTrapTestApp  { 
139+ class  FocusTrapWithBindings  { 
118140  @ViewChild ( FocusTrapDirective )  focusTrapDirective : FocusTrapDirective ; 
119141  renderFocusTrap  =  true ; 
120142  isFocusTrapEnabled  =  true ; 
@@ -131,6 +153,6 @@ class FocusTrapTestApp {
131153    </div> 
132154    ` 
133155} ) 
134- class  FocusTrapTargetTestApp  { 
156+ class  FocusTrapTargets  { 
135157  @ViewChild ( FocusTrapDirective )  focusTrapDirective : FocusTrapDirective ; 
136158} 
0 commit comments