@@ -50,6 +50,59 @@ def to_rb(string)
50
50
to_rb ( '<><h1/><h2/></>' ) . must_equal (
51
51
[ '_ do' , '_h1' , '_h2' , 'end' ] . join ( "\n " ) )
52
52
end
53
+
54
+ describe "errors" do
55
+ it "should detect invalid element name" do
56
+ _ ( assert_raises { to_rb '<<' } . message ) .
57
+ must_equal 'invalid character in element name: "<"'
58
+ end
59
+
60
+ it "should detect invalid character after element close" do
61
+ _ ( assert_raises { to_rb '</->' } . message ) .
62
+ must_equal 'invalid character in element: "-"'
63
+ end
64
+
65
+ it "should detect invalid character after void element close" do
66
+ _ ( assert_raises { to_rb '<a/a>' } . message ) .
67
+ must_equal 'invalid character in element: "/"'
68
+ end
69
+
70
+ it "should detect invalid attribute name" do
71
+ _ ( assert_raises { to_rb '<a b/>' } . message ) .
72
+ must_equal 'invalid character in attribute name: "/"'
73
+ end
74
+
75
+ it "should detect missing attribute value" do
76
+ _ ( assert_raises { to_rb '<a b>' } . message ) .
77
+ must_equal 'missing "=" after attribute "b" in element "a"'
78
+ end
79
+
80
+ it "should detect missing attribute value quotes" do
81
+ _ ( assert_raises { to_rb '<a b=1>' } . message ) .
82
+ must_equal 'invalid value for attribute "b" in element "a"'
83
+ end
84
+
85
+ it "should detect unclosed element" do
86
+ _ ( assert_raises { to_rb '<a' } . message ) .
87
+ must_equal 'unclosed element "a"'
88
+ _ ( assert_raises { to_rb '<a b' } . message ) .
89
+ must_equal 'unclosed element "a"'
90
+ _ ( assert_raises { to_rb '<a b=' } . message ) .
91
+ must_equal 'unclosed element "a"'
92
+ end
93
+
94
+ it "should detect unclosed string" do
95
+ _ ( assert_raises { to_rb '<a b="' } . message ) .
96
+ must_equal 'unclosed quote in "a"'
97
+ _ ( assert_raises { to_rb "<a b='" } . message ) .
98
+ must_equal 'unclosed quote in "a"'
99
+ end
100
+
101
+ it "should detect unclosed value" do
102
+ _ ( assert_raises { to_rb '<a b={x' } . message ) .
103
+ must_equal 'unclosed value in "a"'
104
+ end
105
+ end
53
106
end
54
107
55
108
describe "ruby/wunderbar to JSX" do
0 commit comments