slim 0.6.1 → 0.7.0.beta.2

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,12 @@
1
+ require 'helper'
2
+
3
+ class TestSlimHelpers < TestSlim
4
+ def test_list_of
5
+ source = %q{
6
+ == list_of([1, 2, 3]) do |i|
7
+ = i
8
+ }
9
+
10
+ assert_html "<li>1</li>\n<li>2</li>\n<li>3</li>", source, :helpers => true
11
+ end
12
+ end
@@ -0,0 +1,116 @@
1
+ require 'helper'
2
+
3
+ class TestSlimCodeOutput < TestSlim
4
+ def test_render_with_call
5
+ source = %q{
6
+ p
7
+ = hello_world
8
+ }
9
+
10
+ assert_html '<p>Hello World from @env</p>', source
11
+ end
12
+
13
+ def test_render_with_conditional_call
14
+ source = %q{
15
+ p
16
+ = hello_world if true
17
+ }
18
+
19
+ assert_html '<p>Hello World from @env</p>', source
20
+ end
21
+
22
+ def test_render_with_parameterized_call
23
+ source = %q{
24
+ p
25
+ = hello_world("Hello Ruby!")
26
+ }
27
+
28
+ assert_html '<p>Hello Ruby!</p>', source
29
+ end
30
+
31
+ def test_render_with_spaced_parameterized_call
32
+ source = %q{
33
+ p
34
+ = hello_world "Hello Ruby!"
35
+ }
36
+
37
+ assert_html '<p>Hello Ruby!</p>', source
38
+ end
39
+
40
+ def test_render_with_spaced_parameterized_call_2
41
+ source = %q{
42
+ p
43
+ = hello_world "Hello Ruby!", :dummy => "value"
44
+ }
45
+
46
+ assert_html '<p>Hello Ruby!dummy value</p>', source
47
+ end
48
+
49
+ def test_render_with_call_and_inline_text
50
+ source = %q{
51
+ h1 This is my title
52
+ p
53
+ = hello_world
54
+ }
55
+
56
+ assert_html '<h1>This is my title</h1><p>Hello World from @env</p>', source
57
+ end
58
+
59
+ def test_render_with_attribute_starts_with_keyword
60
+ source = %q{
61
+ p = hello_world in_keyword
62
+ }
63
+
64
+ assert_html '<p>starts with keyword</p>', source
65
+ end
66
+
67
+ def test_hash_call
68
+ source = %q{
69
+ p = hash[:a]
70
+ }
71
+
72
+ assert_html '<p>The letter a</p>', source
73
+ end
74
+
75
+ def test_tag_output_without_space
76
+ source = %q{
77
+ p= hello_world
78
+ p=hello_world
79
+ }
80
+
81
+ assert_html '<p>Hello World from @env</p><p>Hello World from @env</p>', source
82
+ end
83
+
84
+ def test_class_output_without_space
85
+ source = %q{
86
+ .test=hello_world
87
+ #test==hello_world
88
+ }
89
+
90
+ assert_html '<div class="test">Hello World from @env</div><div id="test">Hello World from @env</div>', source
91
+ end
92
+
93
+ def test_attribute_output_without_space
94
+ source = %q{
95
+ p id="test"=hello_world
96
+ p(id="test")==hello_world
97
+ }
98
+
99
+ assert_html '<p id="test">Hello World from @env</p><p id="test">Hello World from @env</p>', source
100
+ end
101
+
102
+ def test_render_with_backslash_end
103
+ source = %q{
104
+ p = \
105
+ "Hello" + \
106
+ " Ruby!"
107
+ - variable = 1 + \
108
+ 2 + \
109
+ 3
110
+ = variable + \
111
+ 1
112
+ }
113
+
114
+ assert_html '<p>Hello Ruby!</p>7', source
115
+ end
116
+ end
@@ -0,0 +1,84 @@
1
+ require 'helper'
2
+
3
+ class TestSlimCodeStructure < TestSlim
4
+ def test_render_with_conditional
5
+ source = %q{
6
+ div
7
+ - if show_first?
8
+ p The first paragraph
9
+ - else
10
+ p The second paragraph
11
+ }
12
+
13
+ assert_html '<div><p>The second paragraph</p></div>', source
14
+ end
15
+
16
+ def test_render_with_conditional_and_end
17
+ source = %q{
18
+ div
19
+ - if show_first?
20
+ p The first paragraph
21
+ - else
22
+ p The second paragraph
23
+ - end
24
+ }
25
+
26
+ assert_html '<div><p>The second paragraph</p></div>', source
27
+ end
28
+
29
+ def test_render_with_consecutive_conditionals
30
+ source = %q{
31
+ div
32
+ - if show_first? true
33
+ p The first paragraph
34
+ - if show_first? true
35
+ p The second paragraph
36
+ }
37
+
38
+ assert_html '<div><p>The first paragraph</p><p>The second paragraph</p></div>', source
39
+ end
40
+
41
+ def test_render_with_parameterized_conditional
42
+ source = %q{
43
+ div
44
+ - if show_first? false
45
+ p The first paragraph
46
+ - else
47
+ p The second paragraph
48
+ }
49
+
50
+ assert_html '<div><p>The second paragraph</p></div>', source
51
+ end
52
+
53
+ def test_render_with_inline_condition
54
+ source = %q{
55
+ p = hello_world if true
56
+ }
57
+
58
+ assert_html '<p>Hello World from @env</p>', source
59
+ end
60
+
61
+ def test_render_with_case
62
+ source = %q{
63
+ p
64
+ - case 42
65
+ - when 41
66
+ | 1
67
+ - when 42
68
+ | 42
69
+ | is the answer
70
+ }
71
+
72
+ assert_html '<p>42 is the answer</p>', source
73
+ end
74
+
75
+ def test_render_with_comments
76
+ source = %q{
77
+ p Hello
78
+ / This is a comment
79
+ / Another comment
80
+ }
81
+
82
+ assert_html '<p>Hello</p>', source
83
+ end
84
+ end
@@ -0,0 +1,55 @@
1
+ require 'helper'
2
+ require 'erb'
3
+
4
+ class TestSlimEmbeddedEngines < TestSlim
5
+ def test_render_with_embedded_template
6
+ source = %q{
7
+ p
8
+ - text = 'before erb block'
9
+ erb:
10
+ <b>Hello from <%= text.upcase %>!</b>
11
+ Second Line!
12
+ <% if true %><%= true %><% end %>
13
+ }
14
+
15
+ assert_html "<p><b>Hello from BEFORE ERB BLOCK!</b>\nSecond Line!\ntrue\n</p>", source
16
+ end
17
+
18
+ def test_render_with_interpolated_embedded_template
19
+ source = %q{
20
+ markdown:
21
+ #Header
22
+ Hello from #{"Markdown!"}
23
+ Second Line!
24
+ }
25
+ assert_html "<h1>Header</h1>\n\n<p>Hello from Markdown!\nSecond Line!</p>\n", source
26
+ end
27
+
28
+ def test_render_with_javascript
29
+ source = %q{
30
+ javascript:
31
+ $(function() {});
32
+ }
33
+ assert_html '<script type="text/javascript">$(function() {});</script>', source
34
+ end
35
+
36
+ def test_render_with_ruby
37
+ source = %q{
38
+ ruby:
39
+ variable = 1 +
40
+ 2
41
+ = variable
42
+ }
43
+ assert_html '3', source
44
+ end
45
+
46
+ def test_render_with_liquid
47
+ source = %q{
48
+ p
49
+ - text = 'before liquid block'
50
+ liquid:
51
+ <span>{{text}}</span>
52
+ }
53
+ assert_html "<p><span>before liquid block</span>\n</p>", source
54
+ end
55
+ end
@@ -0,0 +1,32 @@
1
+ require 'helper'
2
+
3
+ class TestSlimHtmlEscaping < TestSlim
4
+ def test_html_will_not_be_escaped
5
+ source = %q{
6
+ p <Hello> World, meet "Slim".
7
+ }
8
+
9
+ assert_html '<p><Hello> World, meet "Slim".</p>', source
10
+ end
11
+
12
+ def test_html_with_newline_will_not_be_escaped
13
+ source = %q{
14
+ p
15
+ |
16
+ <Hello> World,
17
+ meet "Slim".
18
+ }
19
+
20
+ assert_html '<p><Hello> World, meet "Slim".</p>', source
21
+ end
22
+
23
+ def test_html_with_escaped_interpolation
24
+ source = %q{
25
+ - x = '"'
26
+ - content = '<x>'
27
+ p class="#{x}" test #{content}
28
+ }
29
+
30
+ assert_html '<p class="&quot;">test &lt;x&gt;</p>', source
31
+ end
32
+ end
@@ -0,0 +1,181 @@
1
+ require 'helper'
2
+
3
+ class TestSlimHtmlStructure < TestSlim
4
+ def test_simple_render
5
+ source = %q{
6
+ html
7
+ head
8
+ title Simple Test Title
9
+ body
10
+ p Hello World, meet Slim.
11
+ }
12
+
13
+ assert_html '<html><head><title>Simple Test Title</title></head><body><p>Hello World, meet Slim.</p></body></html>', source
14
+ end
15
+
16
+ def test_render_with_shortcut_attributes
17
+ source = %q{
18
+ h1#title This is my title
19
+ #notice.hello.world
20
+ = hello_world
21
+ }
22
+
23
+ assert_html '<h1 id="title">This is my title</h1><div id="notice" class="hello world">Hello World from @env</div>', source
24
+ end
25
+
26
+ def test_render_with_text_block
27
+ source = %q{
28
+ p
29
+ `
30
+ Lorem ipsum dolor sit amet, consectetur adipiscing elit.
31
+ }
32
+
33
+ assert_html '<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit.</p>', source
34
+ end
35
+
36
+ def test_render_with_text_block_with_subsequent_markup
37
+ source = %q{
38
+ p
39
+ `
40
+ Lorem ipsum dolor sit amet, consectetur adipiscing elit.
41
+ p Some more markup
42
+ }
43
+
44
+ assert_html '<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit.</p><p>Some more markup</p>', source
45
+ end
46
+
47
+ def test_nested_text
48
+ source = %q{
49
+ p
50
+ |
51
+ This is line one.
52
+ This is line two.
53
+ This is line three.
54
+ This is line four.
55
+ p This is a new paragraph.
56
+ }
57
+
58
+ assert_html '<p>This is line one. This is line two. This is line three. This is line four.</p><p>This is a new paragraph.</p>', source
59
+ end
60
+
61
+ def test_nested_text_with_nested_html_one_same_line
62
+ source = %q{
63
+ p
64
+ | This is line one.
65
+ This is line two.
66
+ span.bold This is a bold line in the paragraph.
67
+ | This is more content.
68
+ }
69
+
70
+ assert_html '<p>This is line one. This is line two.<span class="bold">This is a bold line in the paragraph.</span> This is more content.</p>', source
71
+ end
72
+
73
+ def test_nested_text_with_nested_html_one_same_line2
74
+ source = %q{
75
+ p
76
+ |This is line one.
77
+ This is line two.
78
+ span.bold This is a bold line in the paragraph.
79
+ | This is more content.
80
+ }
81
+
82
+ assert_html '<p>This is line one. This is line two.<span class="bold">This is a bold line in the paragraph.</span> This is more content.</p>', source
83
+ end
84
+
85
+ def test_nested_text_with_nested_html
86
+ source = %q{
87
+ p
88
+ |
89
+ This is line one.
90
+ This is line two.
91
+ This is line three.
92
+ This is line four.
93
+ span.bold This is a bold line in the paragraph.
94
+ | This is more content.
95
+ }
96
+
97
+ assert_html '<p>This is line one. This is line two. This is line three. This is line four.<span class="bold">This is a bold line in the paragraph.</span> This is more content.</p>', source
98
+ end
99
+
100
+ def test_simple_paragraph_with_padding
101
+ source = %q{
102
+ p There will be 3 spaces in front of this line.
103
+ }
104
+
105
+ assert_html '<p> There will be 3 spaces in front of this line.</p>', source
106
+ end
107
+
108
+ def test_output_code_with_leading_spaces
109
+ source = %q{
110
+ p= hello_world
111
+ p = hello_world
112
+ p = hello_world
113
+ }
114
+
115
+ assert_html '<p>Hello World from @env</p><p>Hello World from @env</p><p>Hello World from @env</p>', source
116
+ end
117
+
118
+ def test_single_quoted_attributes
119
+ source = %q{
120
+ p class='underscored_class_name' = output_number
121
+ }
122
+
123
+ assert_html '<p class="underscored_class_name">1337</p>', source
124
+ end
125
+
126
+ def test_nonstandard_attributes
127
+ source = %q{
128
+ p id="dashed-id" class="underscored_class_name" = output_number
129
+ }
130
+
131
+ assert_html '<p id="dashed-id" class="underscored_class_name">1337</p>', source
132
+ end
133
+
134
+ def test_nonstandard_shortcut_attributes
135
+ source = %q{
136
+ p#dashed-id.underscored_class_name = output_number
137
+ }
138
+
139
+ assert_html '<p id="dashed-id" class="underscored_class_name">1337</p>', source
140
+ end
141
+
142
+ def test_dashed_attributes
143
+ source = %q{
144
+ p data-info="Illudium Q-36" = output_number
145
+ }
146
+
147
+ assert_html '<p data-info="Illudium Q-36">1337</p>', source
148
+ end
149
+
150
+ def test_dashed_attributes_with_shortcuts
151
+ source = %q{
152
+ p#marvin.martian data-info="Illudium Q-36" = output_number
153
+ }
154
+
155
+ assert_html '<p id="marvin" class="martian" data-info="Illudium Q-36">1337</p>', source
156
+ end
157
+
158
+ def test_parens_around_attributes
159
+ source = %q{
160
+ p(id="marvin" class="martian" data-info="Illudium Q-36") = output_number
161
+ }
162
+
163
+ assert_html '<p id="marvin" class="martian" data-info="Illudium Q-36">1337</p>', source
164
+ end
165
+
166
+ def test_square_brackets_around_attributes
167
+ source = %q{
168
+ p[id="marvin" class="martian" data-info="Illudium Q-36"] = output_number
169
+ }
170
+
171
+ assert_html '<p id="marvin" class="martian" data-info="Illudium Q-36">1337</p>', source
172
+ end
173
+
174
+ def test_parens_around_attributes_with_equal_sign_snug_to_right_paren
175
+ source = %q{
176
+ p(id="marvin" class="martian" data-info="Illudium Q-36")= output_number
177
+ }
178
+
179
+ assert_html '<p id="marvin" class="martian" data-info="Illudium Q-36">1337</p>', source
180
+ end
181
+ end