@@ -26,16 +26,22 @@ import { LazyElementDirective } from './lazy-element.directive';
26
26
*axLazyElement="'http://elements.com/some-element'; loading: loading"
27
27
></some-element>
28
28
</div>
29
+ <div *ngIf="useModule">
30
+ <some-element
31
+ *axLazyElement="'http://elements.com/some-element-module'; module: true"
32
+ ></some-element>
33
+ </div>
29
34
`
30
35
} )
31
36
class TestHostComponent {
32
37
addSameElement = false ;
33
38
addOtherElement = false ;
34
39
useLoadingTemplate = false ;
40
+ useModule = false ;
35
41
}
36
42
37
43
describe ( 'LazyElementDirective' , ( ) => {
38
- let component : TestHostComponent ;
44
+ let testHostComponent : TestHostComponent ;
39
45
let fixture : ComponentFixture < TestHostComponent > ;
40
46
let appendChildSpy : jasmine . Spy ;
41
47
@@ -48,13 +54,13 @@ describe('LazyElementDirective', () => {
48
54
49
55
beforeEach ( ( ) => {
50
56
fixture = TestBed . createComponent ( TestHostComponent ) ;
51
- component = fixture . componentInstance ;
57
+ testHostComponent = fixture . componentInstance ;
52
58
appendChildSpy = spyOn ( document . body , 'appendChild' ) . and . stub ( ) ;
53
59
fixture . detectChanges ( ) ;
54
60
} ) ;
55
61
56
62
it ( 'should create' , ( ) => {
57
- expect ( component ) . toBeTruthy ( ) ;
63
+ expect ( testHostComponent ) . toBeTruthy ( ) ;
58
64
} ) ;
59
65
60
66
it ( 'adds a script tag into dom to load element bundle' , ( ) => {
@@ -65,7 +71,7 @@ describe('LazyElementDirective', () => {
65
71
} ) ;
66
72
67
73
it ( 'adds a script tag only once for elements with same url' , ( ) => {
68
- component . addSameElement = true ;
74
+ testHostComponent . addSameElement = true ;
69
75
fixture . detectChanges ( ) ;
70
76
71
77
expect ( appendChildSpy ) . toHaveBeenCalledTimes ( 1 ) ;
@@ -75,7 +81,7 @@ describe('LazyElementDirective', () => {
75
81
} ) ;
76
82
77
83
it ( 'adds multiple script tags if elements have different bundle url' , ( ) => {
78
- component . addOtherElement = true ;
84
+ testHostComponent . addOtherElement = true ;
79
85
fixture . detectChanges ( ) ;
80
86
81
87
expect ( appendChildSpy ) . toHaveBeenCalledTimes ( 2 ) ;
@@ -90,7 +96,7 @@ describe('LazyElementDirective', () => {
90
96
it ( 'renders loading template' , ( ) => {
91
97
expect ( document . querySelector ( '.loading' ) ) . toBe ( null ) ;
92
98
93
- component . useLoadingTemplate = true ;
99
+ testHostComponent . useLoadingTemplate = true ;
94
100
fixture . detectChanges ( ) ;
95
101
96
102
expect ( document . querySelector ( '.loading' ) . textContent ) . toBe ( 'Loading...' ) ;
@@ -99,7 +105,7 @@ describe('LazyElementDirective', () => {
99
105
it ( 'removes loading template when element is loaded' , done => {
100
106
expect ( document . querySelector ( '.loading' ) ) . toBe ( null ) ;
101
107
102
- component . useLoadingTemplate = true ;
108
+ testHostComponent . useLoadingTemplate = true ;
103
109
fixture . detectChanges ( ) ;
104
110
105
111
expect ( document . querySelector ( '.loading' ) . textContent ) . toBe ( 'Loading...' ) ;
@@ -113,4 +119,23 @@ describe('LazyElementDirective', () => {
113
119
done ( ) ;
114
120
} ) ;
115
121
} ) ;
122
+
123
+ it ( 'uses type module on script tag when specified' , ( ) => {
124
+ fixture . detectChanges ( ) ;
125
+
126
+ expect ( appendChildSpy ) . toHaveBeenCalledTimes ( 1 ) ;
127
+ expect ( appendChildSpy . calls . argsFor ( 0 ) [ 0 ] . src ) . toBe (
128
+ 'http://elements.com/some-element'
129
+ ) ;
130
+ expect ( appendChildSpy . calls . argsFor ( 0 ) [ 0 ] . type ) . toBe ( '' ) ;
131
+
132
+ testHostComponent . useModule = true ;
133
+ fixture . detectChanges ( ) ;
134
+
135
+ expect ( appendChildSpy ) . toHaveBeenCalledTimes ( 2 ) ;
136
+ expect ( appendChildSpy . calls . argsFor ( 1 ) [ 0 ] . src ) . toBe (
137
+ 'http://elements.com/some-element-module'
138
+ ) ;
139
+ expect ( appendChildSpy . calls . argsFor ( 1 ) [ 0 ] . type ) . toBe ( 'module' ) ;
140
+ } ) ;
116
141
} ) ;
0 commit comments