1
- import { ComponentFixture , TestBed } from '@angular/core/testing' ;
1
+ import { ComponentFixture , TestBed , async } from '@angular/core/testing' ;
2
2
import { Component , ViewChild } from '@angular/core' ;
3
3
import { By } from '@angular/platform-browser' ;
4
- import { ConnectedOverlayDirective , OverlayModule } from './overlay-directives' ;
4
+ import { ConnectedOverlayDirective , OverlayModule , OverlayOrigin } from './overlay-directives' ;
5
5
import { OverlayContainer } from './overlay-container' ;
6
6
import { ConnectedPositionStrategy } from './position/connected-position-strategy' ;
7
7
import { ConnectedOverlayPositionChange } from './position/connected-position' ;
@@ -18,7 +18,7 @@ describe('Overlay directives', () => {
18
18
beforeEach ( ( ) => {
19
19
TestBed . configureTestingModule ( {
20
20
imports : [ OverlayModule ] ,
21
- declarations : [ ConnectedOverlayDirectiveTest ] ,
21
+ declarations : [ ConnectedOverlayDirectiveTest , ConnectedOverlayPropertyInitOrder ] ,
22
22
providers : [
23
23
{ provide : OverlayContainer , useFactory : ( ) => {
24
24
overlayContainerElement = document . createElement ( 'div' ) ;
@@ -111,6 +111,21 @@ describe('Overlay directives', () => {
111
111
'Expected overlay to have been detached.' ) ;
112
112
} ) ;
113
113
114
+ it ( 'should not depend on the order in which the `origin` and `open` are set' , async ( ( ) => {
115
+ fixture . destroy ( ) ;
116
+
117
+ const propOrderFixture = TestBed . createComponent ( ConnectedOverlayPropertyInitOrder ) ;
118
+ propOrderFixture . detectChanges ( ) ;
119
+
120
+ const overlayDirective = propOrderFixture . componentInstance . connectedOverlayDirective ;
121
+
122
+ expect ( ( ) => {
123
+ overlayDirective . open = true ;
124
+ overlayDirective . origin = propOrderFixture . componentInstance . trigger ;
125
+ propOrderFixture . detectChanges ( ) ;
126
+ } ) . not . toThrow ( ) ;
127
+ } ) ) ;
128
+
114
129
describe ( 'inputs' , ( ) => {
115
130
116
131
it ( 'should set the width' , ( ) => {
@@ -310,3 +325,14 @@ class ConnectedOverlayDirectiveTest {
310
325
311
326
@ViewChild ( ConnectedOverlayDirective ) connectedOverlayDirective : ConnectedOverlayDirective ;
312
327
}
328
+
329
+ @Component ( {
330
+ template : `
331
+ <button cdk-overlay-origin #trigger="cdkOverlayOrigin">Toggle menu</button>
332
+ <ng-template cdk-connected-overlay>Menu content</ng-template>` ,
333
+ } )
334
+ class ConnectedOverlayPropertyInitOrder {
335
+ @ViewChild ( ConnectedOverlayDirective ) connectedOverlayDirective : ConnectedOverlayDirective ;
336
+ @ViewChild ( 'trigger' ) trigger : OverlayOrigin ;
337
+ }
338
+
0 commit comments