@@ -7,7 +7,7 @@ import defaultHooks from "../htmlbars-runtime/hooks";
7
7
import { merge } from "../htmlbars-util/object-utils" ;
8
8
import DOMHelper from "../dom-helper" ;
9
9
import { equalTokens } from "../htmlbars-test-helpers" ;
10
- import { rehydrateNode , serializeNode } from "../htmlbars-runtime/render" ;
10
+ import { rehydrateNode , prepareAndSerializeNode } from "../htmlbars-runtime/render" ;
11
11
12
12
var hooks , helpers , partials , env ;
13
13
@@ -678,7 +678,7 @@ test("it is possible to serialize a render node tree", function() {
678
678
let original = result . fragment . firstChild ;
679
679
let newRoot = env . dom . createMorph ( null , original , original ) ;
680
680
newRoot . ownerNode = newRoot ;
681
- let node = rehydrateNode ( serializeNode ( env , result . root ) , newRoot ) ;
681
+ let node = rehydrateNode ( prepareAndSerializeNode ( env , result . root ) , newRoot ) ;
682
682
683
683
let scope = env . hooks . createFreshScope ( ) ;
684
684
@@ -703,7 +703,7 @@ test("it is possible to serialize a render node tree with recursive templates",
703
703
704
704
let newRoot = env . dom . createMorph ( null , original , original ) ;
705
705
newRoot . ownerNode = newRoot ;
706
- let node = rehydrateNode ( serializeNode ( env , result . root ) , newRoot ) ;
706
+ let node = rehydrateNode ( prepareAndSerializeNode ( env , result . root ) , newRoot ) ;
707
707
708
708
let scope = env . hooks . createFreshScope ( ) ;
709
709
@@ -718,3 +718,32 @@ test("it is possible to serialize a render node tree with recursive templates",
718
718
719
719
equalTokens ( newNode , '<p title="chancancode"><span>Godfrey</span></p>' ) ;
720
720
} ) ;
721
+
722
+ test ( "it is possible to serialize a template with adjacent text nodes" , function ( ) {
723
+ let template = compile ( "<p>{{salutation}} {{name}}</p>" ) ;
724
+ let obj = { salutation : 'Mr.' , name : 'Godfrey Chan' } ;
725
+ let result = template . render ( obj , env ) ;
726
+
727
+ equalTokens ( result . fragment , '<p>Mr. Godfrey Chan</p>' ) ;
728
+
729
+ let serializedChildNodes = prepareAndSerializeNode ( env , result . root ) ;
730
+ let serialized = result . fragment . cloneNode ( true ) . firstChild ;
731
+
732
+ // TODO: actually serialize and parse this, so it works with SimpleDOM and is more accurate
733
+ // at the moment, this is a sanity check that we didn't leave any adjacent text nodes
734
+ // around.
735
+ serialized . normalize ( ) ;
736
+
737
+ let newRoot = env . dom . createMorph ( null , serialized , serialized ) ;
738
+
739
+ let newNode = rehydrateNode ( serializedChildNodes , newRoot ) ;
740
+
741
+ let scope = env . hooks . createFreshScope ( ) ;
742
+
743
+ obj . name = "Yehuda Katz" ;
744
+ result = RenderResult . rehydrate ( env , scope , template . raw , { renderNode : newNode , self : obj } ) ;
745
+ newRoot . ownerNode = newRoot ;
746
+ result . render ( ) ;
747
+
748
+ equalTokens ( result . root . firstNode , '<p>Mr. Yehuda Katz</p>' ) ;
749
+ } ) ;
0 commit comments