@@ -2,7 +2,7 @@ import 'mocha';
22import { expect } from 'chai' ;
33import { JSDOM } from 'jsdom' ;
44import { IframeContent , IframeMessage , IframeMessageState } from '../../../src/dom/iframe/iframeLoader' ;
5- import { falsies } from '../../utils' ;
5+ import { falsies , getDelayPromise } from '../../utils' ;
66
77export function test_iframeLoader_content ( ) {
88 describe ( 'IframeContent - Standalone' , ( ) => {
@@ -130,7 +130,7 @@ export function test_iframeLoader_content() {
130130 _parent . postMessage ( 'end-the-unit-test' , 'http://localhost:81' ) ;
131131 } ) ;
132132
133- it ( 'should have all messages after handshake' , done => {
133+ it ( 'should have all messages after handshake' , async ( ) => {
134134 const messages = new Array < IframeMessage > ( ) ;
135135 const content = new IframeContent ( _win , 'http://localhost:81' ) ;
136136 const idValue = 'id-value' ;
@@ -141,80 +141,6 @@ export function test_iframeLoader_content() {
141141 }
142142
143143 _parent . addEventListener ( 'message' , e => {
144- if ( e . data === 'end-the-unit-test' ) {
145- try {
146- // console.log(JSON.stringify(messages, undefined, 2))
147- // expect(messages.length).to.be.eq(2);
148- let idx = 0 ;
149- // Handshake init event
150- expect ( messages [ idx ] . id ) . to . be . eq ( '' ) ;
151-
152- falsies . forEach ( f => {
153- idx ++ ;
154- expect ( messages [ idx ] . id ) . to . be . eq ( '' ) ;
155- expect ( messages [ idx ] . state ) . to . be . eq ( IframeMessageState . Mounted ) ;
156- expect ( messages [ idx ] . data ) . to . be . eq ( f ) ;
157- } ) ;
158-
159- idx ++ ;
160- // Handshake reply event
161- expect ( messages [ idx ] . id ) . to . be . eq ( '' ) ;
162- expect ( messages [ idx ] . state ) . to . be . eq ( IframeMessageState . Mounted ) ;
163- expect ( messages [ idx ] . data ) . to . be . eq ( 'id-hash' ) ;
164-
165- idx ++ ;
166- // Signal MOUNTED from INIT
167- expect ( messages [ idx ] . id ) . to . be . eq ( idValue ) ;
168- expect ( messages [ idx ] . state ) . to . be . eq ( IframeMessageState . Mounted ) ;
169- expect ( messages [ idx ] . data ) . to . be . eq ( undefined ) ;
170-
171- idx ++ ;
172- // Busy from EVT_PRE_HS
173- expect ( messages [ idx ] . id ) . to . be . eq ( idValue ) ;
174- expect ( messages [ idx ] . state ) . to . be . eq ( IframeMessageState . BeforeUpdate ) ;
175- expect ( messages [ idx ] . data ) . to . be . eq ( undefined ) ;
176-
177- idx ++ ;
178- // Signal busy from call
179- expect ( messages [ idx ] . id ) . to . be . eq ( idValue ) ;
180- expect ( messages [ idx ] . state ) . to . be . eq ( IframeMessageState . BeforeUpdate ) ;
181- expect ( messages [ idx ] . data ) . to . be . eq ( undefined ) ;
182-
183- idx ++ ;
184- // Signal not busy from call
185- expect ( messages [ idx ] . id ) . to . be . eq ( idValue ) ;
186- expect ( messages [ idx ] . state ) . to . be . eq ( IframeMessageState . Updated ) ;
187- expect ( messages [ idx ] . data ) . to . be . eq ( undefined ) ;
188-
189- idx ++ ;
190- // Signal busy from dispose
191- expect ( messages [ idx ] . id ) . to . be . eq ( idValue , `ID: ${ idx } ` ) ;
192- expect ( messages [ idx ] . state ) . to . be . eq ( IframeMessageState . BeforeUpdate ) ;
193- expect ( messages [ idx ] . data ) . to . be . eq ( undefined , `DATA: ${ idx } ` ) ;
194-
195- idx ++ ;
196- // Signal dispose
197- expect ( messages [ idx ] . id ) . to . be . eq ( idValue , `ID: ${ idx } ` ) ;
198- expect ( messages [ idx ] . state ) . to . be . eq ( IframeMessageState . Destroyed ) ;
199- expect ( messages [ idx ] . data ) . to . be . eq ( undefined , `DATA: ${ idx } ` ) ;
200-
201- } catch ( err ) {
202- messages . forEach ( f => console . log ( JSON . stringify ( f , undefined , 0 ) ) ) ;
203- throw err ;
204- }
205- finally {
206- done ( ) ;
207- }
208-
209- return ;
210- }
211-
212- if ( e . data === 'pre-end-the-unit-test' ) {
213- content . dispose ( ) ;
214- _parent . postMessage ( 'end-the-unit-test' , 'http://localhost:81' ) ;
215- return ;
216- }
217-
218144 messages . push ( e . data ) ;
219145 } ) ;
220146
@@ -240,7 +166,73 @@ export function test_iframeLoader_content() {
240166
241167 content . signalBusyState ( true ) ;
242168 content . signalBusyState ( false ) ;
243- _parent . postMessage ( 'pre-end-the-unit-test' , 'http://localhost:81' ) ;
169+
170+ await getDelayPromise ( 3 ) ;
171+
172+ content . dispose ( ) ;
173+
174+ await getDelayPromise ( 3 ) ;
175+
176+ try {
177+ // console.log(JSON.stringify(messages, undefined, 2))
178+ // expect(messages.length).to.be.eq(2);
179+ let idx = 0 ;
180+ // Handshake init event
181+ expect ( messages [ idx ] . id ) . to . be . eq ( '' ) ;
182+
183+ falsies . forEach ( f => {
184+ idx ++ ;
185+ expect ( messages [ idx ] . id ) . to . be . eq ( '' ) ;
186+ expect ( messages [ idx ] . state ) . to . be . eq ( IframeMessageState . Mounted ) ;
187+ expect ( messages [ idx ] . data ) . to . be . eq ( f ) ;
188+ } ) ;
189+
190+ idx ++ ;
191+ // Handshake reply event
192+ expect ( messages [ idx ] . id ) . to . be . eq ( '' ) ;
193+ expect ( messages [ idx ] . state ) . to . be . eq ( IframeMessageState . Mounted ) ;
194+ expect ( messages [ idx ] . data ) . to . be . eq ( 'id-hash' ) ;
195+
196+ idx ++ ;
197+ // Signal MOUNTED from INIT
198+ expect ( messages [ idx ] . id ) . to . be . eq ( idValue ) ;
199+ expect ( messages [ idx ] . state ) . to . be . eq ( IframeMessageState . Mounted ) ;
200+ expect ( messages [ idx ] . data ) . to . be . eq ( undefined ) ;
201+
202+ idx ++ ;
203+ // Busy from EVT_PRE_HS
204+ expect ( messages [ idx ] . id ) . to . be . eq ( idValue ) ;
205+ expect ( messages [ idx ] . state ) . to . be . eq ( IframeMessageState . BeforeUpdate ) ;
206+ expect ( messages [ idx ] . data ) . to . be . eq ( undefined ) ;
207+
208+ idx ++ ;
209+ // Signal busy from call
210+ expect ( messages [ idx ] . id ) . to . be . eq ( idValue ) ;
211+ expect ( messages [ idx ] . state ) . to . be . eq ( IframeMessageState . BeforeUpdate ) ;
212+ expect ( messages [ idx ] . data ) . to . be . eq ( undefined ) ;
213+
214+ idx ++ ;
215+ // Signal not busy from call
216+ expect ( messages [ idx ] . id ) . to . be . eq ( idValue ) ;
217+ expect ( messages [ idx ] . state ) . to . be . eq ( IframeMessageState . Updated ) ;
218+ expect ( messages [ idx ] . data ) . to . be . eq ( undefined ) ;
219+
220+ idx ++ ;
221+ // Signal busy from dispose
222+ expect ( messages [ idx ] . id ) . to . be . eq ( idValue , `ID: ${ idx } ` ) ;
223+ expect ( messages [ idx ] . state ) . to . be . eq ( IframeMessageState . BeforeUpdate ) ;
224+ expect ( messages [ idx ] . data ) . to . be . eq ( undefined , `DATA: ${ idx } ` ) ;
225+
226+ idx ++ ;
227+ // Signal dispose
228+ expect ( messages [ idx ] . id ) . to . be . eq ( idValue , `ID: ${ idx } ` ) ;
229+ expect ( messages [ idx ] . state ) . to . be . eq ( IframeMessageState . Destroyed ) ;
230+ expect ( messages [ idx ] . data ) . to . be . eq ( undefined , `DATA: ${ idx } ` ) ;
231+
232+ } catch ( err ) {
233+ messages . forEach ( f => console . log ( JSON . stringify ( f , undefined , 0 ) ) ) ;
234+ throw err ;
235+ }
244236 } ) ;
245237 } ) ;
246238}
0 commit comments