@@ -22,40 +22,94 @@ function render(reactElement) {
22
22
/**
23
23
* Tests for `htmlToReact`.
24
24
*/
25
- describe ( 'html-to-react parser ' , function ( ) {
25
+ describe ( 'html-to-react' , function ( ) {
26
26
27
- it ( 'converts single HTML element to React' , function ( ) {
28
- var html = data . html . single ;
29
- var reactElement = Parser ( html ) ;
30
- assert . equal ( render ( reactElement ) , html ) ;
31
- } ) ;
27
+ /**
28
+ * Parser conversion.
29
+ */
30
+ describe ( 'parser' , function ( ) {
32
31
33
- it ( 'converts single HTML element and ignores comment' , function ( ) {
34
- var html = data . html . single ;
35
- // comment should be ignored
36
- var reactElement = Parser ( html + data . html . comment ) ;
37
- assert . equal ( render ( reactElement ) , html ) ;
38
- } ) ;
32
+ it ( 'converts single HTML element to React' , function ( ) {
33
+ var html = data . html . single ;
34
+ var reactElement = Parser ( html ) ;
35
+ assert . equal ( render ( reactElement ) , html ) ;
36
+ } ) ;
39
37
40
- it ( 'converts multiple HTML elements to React' , function ( ) {
41
- var html = data . html . multiple ;
42
- var reactElements = Parser ( html ) ;
43
- assert . equal (
44
- render ( React . createElement ( 'div' , { } , reactElements ) ) ,
45
- '<div>' + html + '</div>'
46
- ) ;
47
- } ) ;
38
+ it ( 'converts single HTML element and ignores comment' , function ( ) {
39
+ var html = data . html . single ;
40
+ // comment should be ignored
41
+ var reactElement = Parser ( html + data . html . comment ) ;
42
+ assert . equal ( render ( reactElement ) , html ) ;
43
+ } ) ;
44
+
45
+ it ( 'converts multiple HTML elements to React' , function ( ) {
46
+ var html = data . html . multiple ;
47
+ var reactElements = Parser ( html ) ;
48
+ assert . equal (
49
+ render ( React . createElement ( 'div' , { } , reactElements ) ) ,
50
+ '<div>' + html + '</div>'
51
+ ) ;
52
+ } ) ;
53
+
54
+ it ( 'converts complex HTML to React' , function ( ) {
55
+ var html = data . html . complex ;
56
+ var reactElement = Parser ( html ) ;
57
+ assert . equal ( render ( reactElement ) , html ) ;
58
+ } ) ;
59
+
60
+ it ( 'converts SVG to React' , function ( ) {
61
+ var svg = data . svg . complex ;
62
+ var reactElement = Parser ( svg ) ;
63
+ assert . equal ( render ( reactElement ) , svg ) ;
64
+ } ) ;
48
65
49
- it ( 'converts complex HTML to React' , function ( ) {
50
- var html = data . html . complex ;
51
- var reactElement = Parser ( html ) ;
52
- assert . equal ( render ( reactElement ) , html ) ;
53
66
} ) ;
54
67
55
- it ( 'converts SVG to React' , function ( ) {
56
- var svg = data . svg . complex ;
57
- var reactElement = Parser ( svg ) ;
58
- assert . equal ( render ( reactElement ) , svg ) ;
68
+ /**
69
+ * Options.
70
+ */
71
+ describe ( 'options' , function ( ) {
72
+
73
+ describe ( 'replace' , function ( ) {
74
+
75
+ it ( 'overrides the element if replace is valid' , function ( ) {
76
+ var html = data . html . complex ;
77
+ var reactElement = Parser ( html , {
78
+ replace : function ( node ) {
79
+ if ( node . name === 'title' ) {
80
+ return React . createElement ( 'meta' , { charSet : 'utf-8' } ) ;
81
+ }
82
+ }
83
+ } ) ;
84
+ assert . equal (
85
+ render ( reactElement ) ,
86
+ html . replace ( '<title>Title</title>' , '<meta charset="utf-8"/>' )
87
+ ) ;
88
+ } ) ;
89
+
90
+ it ( 'does not override the element if replace is invalid' , function ( ) {
91
+ var html = data . html . complex ;
92
+ var reactElement = Parser ( html , {
93
+ replace : function ( node ) {
94
+ if ( node . attribs && node . attribs . id === 'header' ) {
95
+ return {
96
+ type : 'h1' ,
97
+ props : { children : 'Heading' }
98
+ } ;
99
+ }
100
+ }
101
+ } ) ;
102
+ assert . notEqual (
103
+ render ( reactElement ) ,
104
+ html . replace (
105
+ '<header id="header">Header</header>' ,
106
+ '<h1>Heading</h1>'
107
+ )
108
+ ) ;
109
+ } ) ;
110
+
111
+ } ) ;
112
+
59
113
} ) ;
60
114
61
115
} ) ;
0 commit comments