1- import { EventEmitter , HostBinding } from '@angular/core' ;
1+ // tslint:disable cyclomatic-complexity
2+
3+ import { EventEmitter } from '@angular/core' ;
24import { MockBuilder , MockRender , ngMocks } from 'ng-mocks' ;
35
46import {
@@ -141,10 +143,18 @@ describe('double-declarations', () => {
141143
142144 // renders component
143145 const html = ngMocks . formatHtml ( fixture ) ;
144- expect ( html ) . toContain ( 'base1="base1"' ) ;
145- expect ( html ) . toContain ( 'base2="override2"' ) ;
146- expect ( html ) . toContain ( 'override2="override2"' ) ;
147- expect ( html ) . toContain ( 'override1="override1"' ) ;
146+ if ( contextName === 'real' ) {
147+ expect ( html ) . toContain ( 'base1="base1"' ) ;
148+ expect ( html ) . toContain ( 'base2="override2"' ) ;
149+ expect ( html ) . toContain ( 'override2="override2"' ) ;
150+ expect ( html ) . toContain ( 'override1="override1"' ) ;
151+ } else {
152+ // but doesn't not render host bindings in mock declarations.
153+ expect ( html ) . not . toContain ( 'base1="base1"' ) ;
154+ expect ( html ) . not . toContain ( 'base2="override2"' ) ;
155+ expect ( html ) . not . toContain ( 'override2="override2"' ) ;
156+ expect ( html ) . not . toContain ( 'override1="override1"' ) ;
157+ }
148158 } ) ;
149159
150160 it ( 'fails on override2' , ( ) => {
@@ -194,9 +204,7 @@ describe('double-declarations', () => {
194204 MockRender (
195205 `<override1
196206 [prop1]="'prop1'"
197- [prop2alias]="'prop2alias'"
198207 [override2alias]="'override2alias'"
199- [prop3alias]="'prop3alias'"
200208 [override3alias]="'override3alias'"
201209 [propBase1]="'propBase1'"
202210 [propOverride1]="'propOverride1'"
@@ -224,9 +232,9 @@ describe('double-declarations', () => {
224232 const instance = ngMocks . findInstance ( OverrideCls ) ;
225233 ( instance . prop1 as EventEmitter < void > ) . emit ( ) ;
226234 expect ( data . value ) . toEqual ( 'prop1' ) ;
227- ( instance . propBase2 as EventEmitter < void > ) . emit ( ) ;
235+ instance . propBase2 . emit ( ) ;
228236 expect ( data . value ) . toEqual ( 'propBase2' ) ;
229- ( instance . propOverride2 as EventEmitter < void > ) . emit ( ) ;
237+ instance . propOverride2 . emit ( ) ;
230238 expect ( data . value ) . toEqual ( 'propOverride2' ) ;
231239 } ) ;
232240
@@ -241,9 +249,10 @@ describe('double-declarations', () => {
241249 } ) ;
242250 expect ( triggers ) . toEqual ( 0 ) ;
243251 ngMocks . trigger ( instanceEl , 'focus' ) ;
244- expect ( triggers ) . toEqual ( 1 ) ;
252+ // host listeners are not triggered in mock declarations
253+ expect ( triggers ) . toEqual ( contextName === 'real' ? 1 : 0 ) ;
245254 ngMocks . trigger ( instanceEl , 'click' ) ;
246- expect ( triggers ) . toEqual ( 2 ) ;
255+ expect ( triggers ) . toEqual ( contextName === 'real' ? 2 : 0 ) ;
247256 } ) ;
248257
249258 it ( 'respects content injections' , ( ) => {
@@ -253,36 +262,60 @@ describe('double-declarations', () => {
253262 ) ;
254263 const instance = ngMocks . findInstance ( OverrideCls ) ;
255264
256- expect ( instance . contentChildBase ?. prop ) . toEqual ( 1 ) ;
257- expect ( instance . contentChildrenBase ?. first . prop ) . toEqual ( 1 ) ;
258- expect ( instance . contentChildrenBase ?. length ) . toEqual ( 1 ) ;
259-
260- expect ( instance . contentChildOverride ?. prop ) . toEqual ( 1 ) ;
261265 expect (
262- instance . contentChildrenOverride ?. first . prop ,
266+ instance . contentChildBase &&
267+ instance . contentChildBase . prop ,
268+ ) . toEqual ( 1 ) ;
269+ expect (
270+ instance . contentChildrenBase &&
271+ instance . contentChildrenBase . first . prop ,
272+ ) . toEqual ( 1 ) ;
273+ expect (
274+ instance . contentChildrenBase &&
275+ instance . contentChildrenBase . length ,
263276 ) . toEqual ( 1 ) ;
264- expect ( instance . contentChildrenOverride ?. length ) . toEqual ( 1 ) ;
265277
266- // looks like parent views wins
267- expect ( instance . viewChildBase ) . toBeUndefined ( ) ;
268- expect ( instance . viewChildrenBase ?. length ) . toEqual ( 0 ) ;
278+ expect (
279+ instance . contentChildOverride &&
280+ instance . contentChildOverride . prop ,
281+ ) . toEqual ( 1 ) ;
282+ expect (
283+ instance . contentChildrenOverride &&
284+ instance . contentChildrenOverride . first . prop ,
285+ ) . toEqual ( 1 ) ;
286+ expect (
287+ instance . contentChildrenOverride &&
288+ instance . contentChildrenOverride . length ,
289+ ) . toEqual ( 1 ) ;
269290
270291 fixture . componentInstance . value = 2 ;
271292 fixture . detectChanges ( ) ;
272293
273- expect ( instance . contentChildBase ?. prop ) . toEqual ( 2 ) ;
274- expect ( instance . contentChildrenBase ?. first . prop ) . toEqual ( 2 ) ;
275- expect ( instance . contentChildrenBase ?. length ) . toEqual ( 1 ) ;
276-
277- expect ( instance . contentChildOverride ?. prop ) . toEqual ( 2 ) ;
278294 expect (
279- instance . contentChildrenOverride ?. first . prop ,
295+ instance . contentChildBase &&
296+ instance . contentChildBase . prop ,
297+ ) . toEqual ( 2 ) ;
298+ expect (
299+ instance . contentChildrenBase &&
300+ instance . contentChildrenBase . first . prop ,
280301 ) . toEqual ( 2 ) ;
281- expect ( instance . contentChildrenOverride ?. length ) . toEqual ( 1 ) ;
302+ expect (
303+ instance . contentChildrenBase &&
304+ instance . contentChildrenBase . length ,
305+ ) . toEqual ( 1 ) ;
282306
283- // looks like parent views wins
284- expect ( instance . viewChildBase ) . toBeUndefined ( ) ;
285- expect ( instance . viewChildrenBase ?. length ) . toEqual ( 0 ) ;
307+ expect (
308+ instance . contentChildOverride &&
309+ instance . contentChildOverride . prop ,
310+ ) . toEqual ( 2 ) ;
311+ expect (
312+ instance . contentChildrenOverride &&
313+ instance . contentChildrenOverride . first . prop ,
314+ ) . toEqual ( 2 ) ;
315+ expect (
316+ instance . contentChildrenOverride &&
317+ instance . contentChildrenOverride . length ,
318+ ) . toEqual ( 1 ) ;
286319 } ) ;
287320 } ) ;
288321 } ) ;
0 commit comments