@@ -9,7 +9,7 @@ import 'babel-core/register';
9
9
import uniqueId from './helpers/uniqueId' ;
10
10
import ElementPortal , { withElementPortal } from '../src' ;
11
11
12
- test ( 'can render to ElementPortal using element id ' , t => {
12
+ test ( 'can render to ElementPortal using id selector ' , t => {
13
13
const node = document . createElement ( 'div' ) ;
14
14
document . body . appendChild ( node ) ;
15
15
const headerId = uniqueId ( ) ;
@@ -32,7 +32,7 @@ test('can render to ElementPortal using element id', t => {
32
32
t . is ( document . getElementById ( headerId ) . textContent , 'Hello' ) ;
33
33
} ) ;
34
34
35
- test ( 'can render to ElementPortal using selector' , t => {
35
+ test ( 'can render to ElementPortal using class selector' , t => {
36
36
const node = document . createElement ( 'div' ) ;
37
37
document . body . appendChild ( node ) ;
38
38
const appId = uniqueId ( ) ;
@@ -83,6 +83,107 @@ test('can render to ElementPortal using selector with custom component', t => {
83
83
t . is ( elements [ 1 ] . textContent , 'Hello' ) ;
84
84
} ) ;
85
85
86
+ test ( 'can render to ElementPortal using nodes' , t => {
87
+ const node = document . createElement ( 'div' ) ;
88
+ document . body . appendChild ( node ) ;
89
+ const headerId = uniqueId ( ) ;
90
+ const appId = uniqueId ( ) ;
91
+ node . innerHTML = `
92
+ <div id="${ headerId } ">
93
+ </div>
94
+ <div id="${ appId } ">
95
+ </div>
96
+ ` ;
97
+ const Greeting = ( ) => ( < div > Hello</ div > ) ;
98
+ render (
99
+ < div >
100
+ < ElementPortal nodes = { document . getElementById ( headerId ) } >
101
+ < Greeting />
102
+ </ ElementPortal >
103
+ </ div > ,
104
+ document . getElementById ( appId )
105
+ ) ;
106
+ t . is ( document . getElementById ( headerId ) . textContent , 'Hello' ) ;
107
+ } ) ;
108
+
109
+ test ( 'can render to ElementPortal using nodes' , t => {
110
+ const node = document . createElement ( 'div' ) ;
111
+ document . body . appendChild ( node ) ;
112
+ const appId = uniqueId ( ) ;
113
+ node . innerHTML = `
114
+ <ul>
115
+ <li class="greeting"></li>
116
+ <li class="greeting"></li>
117
+ </ul>
118
+ <div id="${ appId } ">
119
+ </div>
120
+ ` ;
121
+ const Greeting = ( ) => ( < div > Hello</ div > ) ;
122
+ const elements = [ ] . slice . call ( node . querySelectorAll ( 'li.greeting' ) ) ;
123
+ render (
124
+ < div >
125
+ < ElementPortal nodes = { elements } >
126
+ < Greeting />
127
+ </ ElementPortal >
128
+ </ div > ,
129
+ document . getElementById ( appId )
130
+ ) ;
131
+ elements . forEach ( liNode => {
132
+ t . is ( liNode . textContent , 'Hello' ) ;
133
+ } ) ;
134
+ } ) ;
135
+
136
+ test ( 'can render to ElementPortal using nodes as a NodeList' , t => {
137
+ const node = document . createElement ( 'div' ) ;
138
+ document . body . appendChild ( node ) ;
139
+ const appId = uniqueId ( ) ;
140
+ node . innerHTML = `
141
+ <ul>
142
+ <li class="greeting"></li>
143
+ <li class="greeting"></li>
144
+ </ul>
145
+ <div id="${ appId } ">
146
+ </div>
147
+ ` ;
148
+ const Greeting = ( ) => ( < div > Hello</ div > ) ;
149
+ render (
150
+ < div >
151
+ < ElementPortal nodes = { node . querySelectorAll ( 'li.greeting' ) } >
152
+ < Greeting />
153
+ </ ElementPortal >
154
+ </ div > ,
155
+ document . getElementById ( appId )
156
+ ) ;
157
+ const elements = [ ] . slice . call ( node . querySelectorAll ( 'li.greeting' ) ) ;
158
+ elements . forEach ( liNode => {
159
+ t . is ( liNode . textContent , 'Hello' ) ;
160
+ } ) ;
161
+ } ) ;
162
+
163
+ test ( 'can render to ElementPortal using nodes with custom component' , t => {
164
+ const node = document . createElement ( 'div' ) ;
165
+ document . body . appendChild ( node ) ;
166
+ const appId = uniqueId ( ) ;
167
+ node . innerHTML = `
168
+ <ul>
169
+ <li class="greeting"></li>
170
+ <li class="greeting"></li>
171
+ </ul>
172
+ <div id="${ appId } ">
173
+ </div>
174
+ ` ;
175
+ const Greeting = ( ) => ( < div > Hello</ div > ) ;
176
+ const elements = [ ] . slice . call ( node . querySelectorAll ( 'li.greeting' ) ) ;
177
+ render (
178
+ < div >
179
+ < ElementPortal nodes = { elements } component = { Greeting } />
180
+ </ div > ,
181
+ document . getElementById ( appId )
182
+ ) ;
183
+ t . is ( elements [ 0 ] . textContent , 'Hello' ) ;
184
+ t . is ( elements [ 1 ] . textContent , 'Hello' ) ;
185
+ } ) ;
186
+
86
187
test ( 'map dom node to props' , t => {
87
188
const node = document . createElement ( 'div' ) ;
88
189
document . body . appendChild ( node ) ;
0 commit comments