@@ -2,10 +2,10 @@ import basicRender from '../src/index.js';
2
2
import { render } from '../src/jsx.js' ;
3
3
import { h , Fragment } from 'preact' ;
4
4
import { expect } from 'chai' ;
5
- import { dedent } from './utils.js' ;
5
+ import { dedent , svgAttributes , htmlAttributes } from './utils.js' ;
6
6
7
7
describe ( 'pretty' , ( ) => {
8
- let prettyRender = ( jsx ) => render ( jsx , { } , { pretty : true } ) ;
8
+ let prettyRender = ( jsx , opts ) => render ( jsx , { } , { pretty : true , ... opts } ) ;
9
9
10
10
it ( 'should render no whitespace by default' , ( ) => {
11
11
let rendered = basicRender (
@@ -196,4 +196,56 @@ describe('pretty', () => {
196
196
it ( 'should not render function children' , ( ) => {
197
197
expect ( prettyRender ( < div > { ( ) => { } } </ div > ) ) . to . equal ( '<div></div>' ) ;
198
198
} ) ;
199
+
200
+ it ( 'should render SVG elements' , ( ) => {
201
+ let rendered = prettyRender (
202
+ < svg >
203
+ < image xlinkHref = "#" />
204
+ < foreignObject >
205
+ < div xlinkHref = "#" />
206
+ </ foreignObject >
207
+ < g >
208
+ < image xlinkHref = "#" />
209
+ </ g >
210
+ </ svg >
211
+ ) ;
212
+
213
+ expect ( rendered ) . to . equal (
214
+ `<svg>\n\t<image xlink:href="#"></image>\n\t<foreignObject>\n\t\t<div xlink:href="#"></div>\n\t</foreignObject>\n\t<g>\n\t\t<image xlink:href="#"></image>\n\t</g>\n</svg>`
215
+ ) ;
216
+ } ) ;
217
+
218
+ describe ( 'Attribute casing' , ( ) => {
219
+ it ( 'should have correct SVG casing' , ( ) => {
220
+ for ( let name in svgAttributes ) {
221
+ let value = svgAttributes [ name ] ;
222
+
223
+ let rendered = prettyRender (
224
+ < svg >
225
+ < path { ...{ [ name ] : 'foo' } } />
226
+ </ svg >
227
+ ) ;
228
+ expect ( rendered ) . to . equal (
229
+ `<svg>\n\t<path ${ value } ="foo"></path>\n</svg>`
230
+ ) ;
231
+ }
232
+ } ) ;
233
+
234
+ it ( 'should have correct HTML casing' , ( ) => {
235
+ for ( let name in htmlAttributes ) {
236
+ let value = htmlAttributes [ name ] ;
237
+
238
+ if ( name === 'checked' ) {
239
+ let rendered = prettyRender ( < input type = "checkbox" checked /> , {
240
+ jsx : false
241
+ } ) ;
242
+ expect ( rendered ) . to . equal ( `<input type="checkbox" checked />` ) ;
243
+ continue ;
244
+ } else {
245
+ let rendered = prettyRender ( < div { ...{ [ name ] : 'foo' } } /> ) ;
246
+ expect ( rendered ) . to . equal ( `<div ${ value } ="foo"></div>` ) ;
247
+ }
248
+ }
249
+ } ) ;
250
+ } ) ;
199
251
} ) ;
0 commit comments