@@ -109,7 +109,7 @@ describe('@lumino/virtualdom', () => {
109109 describe ( '#constructor()' , ( ) => {
110110
111111 it ( 'should create a virtual element node' , ( ) => {
112- let vnode = new VirtualElementPass ( mockRenderer , 'div' , { } ) ;
112+ let vnode = new VirtualElementPass ( 'div' , { } , mockRenderer ) ;
113113 expect ( vnode ) . to . be . an . instanceof ( VirtualElementPass ) ;
114114 } ) ;
115115
@@ -118,26 +118,16 @@ describe('@lumino/virtualdom', () => {
118118 describe ( '#type' , ( ) => {
119119
120120 it ( 'should be `element`' , ( ) => {
121- let vnode = new VirtualElementPass ( mockRenderer , 'div' , { } ) ;
121+ let vnode = new VirtualElementPass ( 'div' , { } , mockRenderer ) ;
122122 expect ( vnode . type ) . to . equal ( 'passthru' ) ;
123123 } ) ;
124124
125125 } ) ;
126126
127- describe ( '#renderer' , ( ) => {
128-
129- it ( 'should be the element children renderer' , ( ) => {
130- let vnode = new VirtualElementPass ( mockRenderer , 'div' , { } ) ;
131- expect ( vnode . renderer . render ) . to . equal ( mockRenderer . render ) ;
132- expect ( vnode . renderer . unrender ) . to . equal ( mockRenderer . unrender ) ;
133- } ) ;
134-
135- } ) ;
136-
137127 describe ( '#tag' , ( ) => {
138128
139129 it ( 'should be the element tag name' , ( ) => {
140- let vnode = new VirtualElementPass ( mockRenderer , 'img' , { } ) ;
130+ let vnode = new VirtualElementPass ( 'img' , { } , mockRenderer ) ;
141131 expect ( vnode . tag ) . to . equal ( 'img' ) ;
142132 } ) ;
143133
@@ -147,12 +137,22 @@ describe('@lumino/virtualdom', () => {
147137
148138 it ( 'should be the element attrs' , ( ) => {
149139 let attrs = { className : 'baz' } ;
150- let vnode = new VirtualElementPass ( mockRenderer , 'img' , attrs ) ;
140+ let vnode = new VirtualElementPass ( 'img' , attrs , mockRenderer ) ;
151141 expect ( vnode . attrs ) . to . deep . equal ( attrs ) ;
152142 } ) ;
153143
154144 } ) ;
155145
146+ describe ( '#renderer' , ( ) => {
147+
148+ it ( 'should be the element children renderer' , ( ) => {
149+ let vnode = new VirtualElementPass ( 'div' , { } , mockRenderer ) ;
150+ expect ( vnode . renderer ! . render ) . to . equal ( mockRenderer . render ) ;
151+ expect ( vnode . renderer ! . unrender ) . to . equal ( mockRenderer . unrender ) ;
152+ } ) ;
153+
154+ } ) ;
155+
156156 } ) ;
157157
158158 describe ( 'h()' , ( ) => {
@@ -346,16 +346,57 @@ describe('@lumino/virtualdom', () => {
346346 } ) ;
347347
348348 describe ( 'hpass()' , ( ) => {
349+ let tag = 'div' ;
350+ let attrs = { className : 'baz' } ;
351+ let mockRenderer = {
352+ render : ( host : HTMLElement ) => { } ,
353+ unrender : ( host : HTMLElement ) => { }
354+ } ;
349355
350356 it ( 'should create a new virtual element passthru node' , ( ) => {
351357 let vnode = hpass (
352- {
353- render : ( host : HTMLElement ) => { } ,
354- unrender : ( host : HTMLElement ) => { }
355- } ,
358+ tag ,
359+ attrs ,
360+ mockRenderer
361+ ) ;
362+ expect ( vnode ) . to . be . an . instanceof ( VirtualElementPass ) ;
363+ expect ( vnode . tag ) . to . equal ( tag ) ;
364+ expect ( vnode . attrs ) . to . deep . equal ( attrs ) ;
365+ expect ( vnode . renderer ! . render ) . to . equal ( mockRenderer . render ) ;
366+ expect ( vnode . renderer ! . unrender ) . to . equal ( mockRenderer . unrender ) ;
367+ } ) ;
368+
369+ it ( 'should create a passthru vnode without attrs' , ( ) => {
370+ let vnode = hpass (
371+ 'div' ,
372+ mockRenderer
373+ ) ;
374+ expect ( vnode ) . to . be . an . instanceof ( VirtualElementPass ) ;
375+ expect ( vnode . tag ) . to . equal ( 'div' ) ;
376+ expect ( vnode . attrs ) . to . deep . equal ( { } ) ;
377+ expect ( vnode . renderer ! . render ) . to . equal ( mockRenderer . render ) ;
378+ expect ( vnode . renderer ! . unrender ) . to . equal ( mockRenderer . unrender ) ;
379+ } ) ;
380+
381+ it ( 'should create a passthru vnode without renderer' , ( ) => {
382+ let vnode = hpass (
383+ 'div' ,
384+ attrs
385+ ) ;
386+ expect ( vnode ) . to . be . an . instanceof ( VirtualElementPass ) ;
387+ expect ( vnode . tag ) . to . equal ( tag ) ;
388+ expect ( vnode . attrs ) . to . deep . equal ( attrs ) ;
389+ expect ( vnode . renderer ) . to . equal ( null ) ;
390+ } ) ;
391+
392+ it ( 'should create a passthru vnode without attrs or renderer' , ( ) => {
393+ let vnode = hpass (
356394 'div'
357395 ) ;
358396 expect ( vnode ) . to . be . an . instanceof ( VirtualElementPass ) ;
397+ expect ( vnode . tag ) . to . equal ( 'div' ) ;
398+ expect ( vnode . attrs ) . to . deep . equal ( { } ) ;
399+ expect ( vnode . renderer ) . to . equal ( null ) ;
359400 } ) ;
360401
361402 } ) ;
@@ -510,7 +551,7 @@ describe('@lumino/virtualdom', () => {
510551
511552 describe ( 'realize()' , ( ) => {
512553 it ( 'should realize successfully' , ( ) => {
513- let node = VirtualDOM . realize ( hpass ( rendererClosure ( ) , 'span' ) ) ;
554+ let node = VirtualDOM . realize ( hpass ( 'span' , rendererClosure ( ) ) ) ;
514555 expect ( node . tagName . toLowerCase ( ) ) . to . equal ( 'span' ) ;
515556 expect ( node . children [ 0 ] . tagName . toLowerCase ( ) ) . to . equal ( 'div' ) ;
516557 expect ( node . children [ 0 ] . className ) . to . equal ( 'p-render' ) ;
@@ -522,7 +563,7 @@ describe('@lumino/virtualdom', () => {
522563 it ( 'should render successfully at top of tree' , ( ) => {
523564 let host = document . createElement ( 'div' ) ;
524565
525- VirtualDOM . render ( hpass ( rendererClosure ( ) , 'span' ) , host ) ;
566+ VirtualDOM . render ( hpass ( 'span' , rendererClosure ( ) ) , host ) ;
526567 expect ( host . children [ 0 ] . tagName . toLowerCase ( ) ) . to . equal ( 'span' ) ;
527568 expect ( host . children [ 0 ] . children [ 0 ] . tagName . toLowerCase ( ) ) . to . equal ( 'div' ) ;
528569 expect ( host . children [ 0 ] . children [ 0 ] . className ) . to . equal ( 'p-render' ) ;
@@ -532,7 +573,7 @@ describe('@lumino/virtualdom', () => {
532573 let host = document . createElement ( 'div' ) ;
533574 let record : any = { child : undefined , cleanedUp : false } ;
534575
535- let children = [ h . a ( ) , h . span ( ) , h . div ( h . div ( ) , hpass ( rendererClosure ( record ) , 'span' ) , h . div ( ) ) ] ;
576+ let children = [ h . a ( ) , h . span ( ) , h . div ( h . div ( ) , hpass ( 'span' , rendererClosure ( record ) ) , h . div ( ) ) ] ;
536577 VirtualDOM . render ( children , host ) ;
537578 expect ( host . children [ 2 ] . children [ 1 ] . children [ 0 ] ) . to . equal ( record . child ) ;
538579 expect ( host . children [ 2 ] . children [ 1 ] . children [ 0 ] . className ) . to . equal ( 'p-render' ) ;
@@ -543,7 +584,7 @@ describe('@lumino/virtualdom', () => {
543584 let record : any = { child : undefined , cleanedUp : false } ;
544585
545586 // first pass, render the hpass children
546- let children0 = [ h . a ( ) , h . span ( ) , h . div ( h . div ( ) , hpass ( rendererClosure ( record ) , 'span' ) , h . div ( ) ) ] ;
587+ let children0 = [ h . a ( ) , h . span ( ) , h . div ( h . div ( ) , hpass ( 'span' , rendererClosure ( record ) ) , h . div ( ) ) ] ;
547588 VirtualDOM . render ( children0 , host ) ;
548589
549590 // second pass, explicitly unrender the hpass children
0 commit comments