mab 0.0.2 → 0.0.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (113) hide show
  1. checksums.yaml +15 -0
  2. data/Gemfile +5 -1
  3. data/Gemfile.lock +3 -3
  4. data/Rakefile +10 -2
  5. data/lib/mab.rb +1 -0
  6. data/lib/mab/indentation.rb +2 -2
  7. data/lib/mab/mixin.rb +57 -57
  8. data/lib/mab/rails.rb +20 -0
  9. data/lib/mab/version.rb +1 -1
  10. data/test/rails/Rakefile +7 -0
  11. data/test/rails/app/assets/images/rails.png +0 -0
  12. data/test/rails/app/assets/javascripts/application.js +15 -0
  13. data/test/rails/app/assets/stylesheets/application.css +13 -0
  14. data/test/rails/app/controllers/application_controller.rb +17 -0
  15. data/test/rails/app/helpers/application_helper.rb +2 -0
  16. data/test/rails/app/views/application/content_for.html.mab +6 -0
  17. data/test/rails/app/views/application/normal.html.mab +2 -0
  18. data/test/rails/app/views/application/variables.html.mab +2 -0
  19. data/test/rails/app/views/layouts/application.html.mab +15 -0
  20. data/test/rails/config.ru +4 -0
  21. data/test/rails/config/application.rb +54 -0
  22. data/test/rails/config/boot.rb +6 -0
  23. data/test/rails/config/environment.rb +5 -0
  24. data/test/rails/config/environments/development.rb +27 -0
  25. data/test/rails/config/environments/production.rb +67 -0
  26. data/test/rails/config/environments/test.rb +29 -0
  27. data/test/rails/config/initializers/backtrace_silencers.rb +7 -0
  28. data/test/rails/config/initializers/inflections.rb +15 -0
  29. data/test/rails/config/initializers/mime_types.rb +5 -0
  30. data/test/rails/config/initializers/secret_token.rb +7 -0
  31. data/test/rails/config/initializers/session_store.rb +8 -0
  32. data/test/rails/config/initializers/wrap_parameters.rb +14 -0
  33. data/test/rails/config/locales/en.yml +5 -0
  34. data/test/rails/config/routes.rb +3 -0
  35. data/test/rails/script/rails +6 -0
  36. data/test/rails/test/helper.rb +7 -0
  37. data/test/rails/test/test_mab.rb +40 -0
  38. data/test/test_mab_mixin.rb +10 -6
  39. metadata +46 -88
  40. data/bench.rb +0 -37
  41. data/mab-0.0.1.gem +0 -0
  42. data/markaby/CHANGELOG.rdoc +0 -106
  43. data/markaby/Markaby.gemspec +0 -109
  44. data/markaby/README.rdoc +0 -317
  45. data/markaby/Rakefile +0 -78
  46. data/markaby/VERSION +0 -1
  47. data/markaby/garlic.rb +0 -29
  48. data/markaby/init.rb +0 -6
  49. data/markaby/lib/markaby.rb +0 -30
  50. data/markaby/lib/markaby/builder.rb +0 -314
  51. data/markaby/lib/markaby/builder_tags.rb +0 -64
  52. data/markaby/lib/markaby/cssproxy.rb +0 -55
  53. data/markaby/lib/markaby/kernel_method.rb +0 -7
  54. data/markaby/lib/markaby/rails.rb +0 -75
  55. data/markaby/lib/markaby/rails/current.rb +0 -85
  56. data/markaby/lib/markaby/rails/deprecated.rb +0 -124
  57. data/markaby/lib/markaby/rails/rails_builder.rb +0 -91
  58. data/markaby/lib/markaby/sinatra.rb +0 -18
  59. data/markaby/lib/markaby/tags.rb +0 -200
  60. data/markaby/lib/markaby/tilt.rb +0 -8
  61. data/markaby/spec/markaby/builder_spec.rb +0 -118
  62. data/markaby/spec/markaby/css_proxy_test.rb +0 -47
  63. data/markaby/spec/markaby/fragment_test.rb +0 -10
  64. data/markaby/spec/markaby/markaby_other_static.mab +0 -1
  65. data/markaby/spec/markaby/markaby_spec.rb +0 -184
  66. data/markaby/spec/markaby/markaby_test.rb +0 -251
  67. data/markaby/spec/markaby/rails/spec_helper.rb +0 -29
  68. data/markaby/spec/markaby/rails/views/layouts/layout.mab +0 -11
  69. data/markaby/spec/markaby/rails/views/markaby/_a_partial.mab +0 -3
  70. data/markaby/spec/markaby/rails/views/markaby/_form_for_with_body_in_erb.erb +0 -1
  71. data/markaby/spec/markaby/rails/views/markaby/_partial_child_with_locals.mab +0 -1
  72. data/markaby/spec/markaby/rails/views/markaby/access_to_helpers.mab +0 -1
  73. data/markaby/spec/markaby/rails/views/markaby/broken.mab +0 -7
  74. data/markaby/spec/markaby/rails/views/markaby/commented_out_template.mab +0 -1
  75. data/markaby/spec/markaby/rails/views/markaby/correct_template_values.mab +0 -5
  76. data/markaby/spec/markaby/rails/views/markaby/double_output.mab +0 -8
  77. data/markaby/spec/markaby/rails/views/markaby/form_for.mab +0 -2
  78. data/markaby/spec/markaby/rails/views/markaby/form_for_with_fields.mab +0 -3
  79. data/markaby/spec/markaby/rails/views/markaby/form_for_with_multiple_fields.mab +0 -4
  80. data/markaby/spec/markaby/rails/views/markaby/no_values_passed.mab +0 -3
  81. data/markaby/spec/markaby/rails/views/markaby/partial_parent.mab +0 -1
  82. data/markaby/spec/markaby/rails/views/markaby/partial_parent_with_locals.mab +0 -7
  83. data/markaby/spec/markaby/rails/views/markaby/render_erb_without_explicit_render_call.erb +0 -1
  84. data/markaby/spec/markaby/rails/views/markaby/render_explicit_but_empty_markaby_layout.mab +0 -0
  85. data/markaby/spec/markaby/rails/views/markaby/render_mab_without_explicit_render_call.mab +0 -3
  86. data/markaby/spec/markaby/rails/views/markaby/render_with_ivar.mab +0 -3
  87. data/markaby/spec/markaby/rails/views/markaby/renders_erb.rhtml +0 -1
  88. data/markaby/spec/markaby/rails/views/markaby/renders_form_for_with_erb_body.mab +0 -3
  89. data/markaby/spec/markaby/rails/views/markaby/routes.mab +0 -1
  90. data/markaby/spec/markaby/rails/views/markaby/yielding.mab +0 -3
  91. data/markaby/spec/markaby/rails/views/markaby/yielding_content_for_with_block_helper.mab +0 -5
  92. data/markaby/spec/markaby/rails/views/markaby/yielding_two.mab +0 -7
  93. data/markaby/spec/markaby/rails/views/markaby/yielding_with_content_for.mab +0 -3
  94. data/markaby/spec/markaby/rails_test.rb +0 -380
  95. data/markaby/spec/markaby/rails_version_spec.rb +0 -37
  96. data/markaby/spec/markaby/sinatra/app.rb +0 -49
  97. data/markaby/spec/markaby/sinatra/sinatra_spec.rb +0 -67
  98. data/markaby/spec/markaby/sinatra/views/helpers.mab +0 -1
  99. data/markaby/spec/markaby/sinatra/views/layout.mab +0 -7
  100. data/markaby/spec/markaby/sinatra/views/markaby_template.mab +0 -0
  101. data/markaby/spec/markaby/sinatra/views/scope_instance_variables.mab +0 -3
  102. data/markaby/spec/markaby/sinatra/views/simple_html.mab +0 -4
  103. data/markaby/spec/markaby/sinatra/views/variables.mab +0 -3
  104. data/markaby/spec/markaby/tilt/erb.erb +0 -1
  105. data/markaby/spec/markaby/tilt/locals.mab +0 -1
  106. data/markaby/spec/markaby/tilt/markaby.mab +0 -1
  107. data/markaby/spec/markaby/tilt/markaby_other_static.mab +0 -1
  108. data/markaby/spec/markaby/tilt/render_twice.mab +0 -1
  109. data/markaby/spec/markaby/tilt/scope.mab +0 -1
  110. data/markaby/spec/markaby/tilt/yielding.mab +0 -2
  111. data/markaby/spec/markaby/tilt_spec.rb +0 -75
  112. data/markaby/spec/spec.opts +0 -2
  113. data/markaby/spec/spec_helper.rb +0 -44
@@ -1,251 +0,0 @@
1
- require File.expand_path(File.dirname(__FILE__) + "/../spec_helper")
2
-
3
- class MarkabyTest < Test::Unit::TestCase
4
- def teardown
5
- Markaby::Builder.restore_defaults!
6
- end
7
-
8
- def test_simple
9
- assert_equal "<hr/>", mab { hr }
10
- assert_equal "<hr/><br/>", mab { hr; br }
11
- assert_equal "<p>foo</p>", mab { p 'foo' }
12
- assert_equal "<p>foo</p>", mab { p { 'foo' } }
13
- end
14
-
15
- def test_classes_and_ids
16
- assert_equal %{<div class="one"></div>}, mab { div.one '' }
17
- assert_equal %{<div class="one two"></div>}, mab { div.one.two '' }
18
- assert_equal %{<div id="three"></div>}, mab { div.three! '' }
19
- assert_equal %{<hr class="hidden"/>}, mab { hr.hidden }
20
-
21
- out = mab { input.foo :id => 'bar' }
22
- out.should match("<input.*class=\"foo\".*/>")
23
- out.should match("<input.*name=\"bar\".*/>")
24
- end
25
-
26
- def test_escaping
27
- assert_equal "<h1>Apples &amp; Oranges</h1>", mab { h1 'Apples & Oranges' }
28
- assert_equal "<h1>Apples & Oranges</h1>", mab { h1 { 'Apples & Oranges' } }
29
- assert_equal "<h1 class=\"fruits&amp;floots\">Apples</h1>", mab { h1 'Apples', :class => 'fruits&floots' }
30
- end
31
-
32
- def test_capture
33
- builder = Markaby::Builder.new
34
- assert builder.to_s.empty?
35
- assert_equal "<h1>TEST</h1>", builder.capture { h1 'TEST' }
36
- assert builder.to_s.empty?
37
- assert mab { capture { h1 'hello world' }; nil }.empty?
38
- assert_equal mab { div { h1 'TEST' } }, mab { div { capture { h1 'TEST' } } }
39
- end
40
-
41
- def test_ivars
42
- html = "<div><h1>Steve</h1><div><h2>Gerald</h2></div><h3>Gerald</h3></div>"
43
- assert_equal html, mab { div { @name = 'Steve'; h1 @name; div { @name = 'Gerald'; h2 @name }; h3 @name } }
44
- assert_equal html, mab { div { @name = 'Steve'; h1 @name; self << capture { div { @name = 'Gerald'; h2 @name } }; h3 @name } }
45
- assert_equal html, mab(:name => 'Steve') { div { h1 @name; self << capture { div { @name = 'Gerald'; h2 @name } }; h3 @name } }
46
- end
47
-
48
- def test_ivars_without_at_symbol
49
- assert_equal "<h1>Hello World</h1>", mab { @message = 'Hello World'; h1 message }
50
- end
51
-
52
- def spec_helpers
53
- Markaby::Builder.ignored_helpers.clear
54
- assert_equal %{squirrels}, mab({}, MarkabyTestHelpers) { pluralize('squirrel') }
55
- assert_equal %{<a href="">edit</a>}, mab({}, MarkabyTestHelpers) { link_to('edit') }
56
- assert mab({}, MarkabyTestHelpers) { @output_helpers = false; link_to('edit'); nil }.empty?
57
- Markaby::Builder.ignore_helpers :pluralize
58
- assert_exception(NoMethodError, "undefined method `pluralize'", {}, MarkabyTestHelpers) { pluralize('squirrel') }
59
- end
60
-
61
- def test_uses_helper_instance_variable
62
- helper = Module.new do
63
- @some_ivar = :ivar_value
64
- end
65
-
66
- builder = Markaby::Builder.new({}, helper)
67
- assert_equal :ivar_value, builder.some_ivar
68
- end
69
- end
70
-
71
- describe Markaby do
72
- it "can assign helpers after instantiation" do
73
- helper = mock 'helper', :foo => :bar
74
-
75
- builder = Markaby::Builder.new
76
- builder.helper = helper
77
- builder.foo.should == :bar
78
- end
79
-
80
- it "should be able to set a local" do
81
- builder = Markaby::Builder.new
82
- builder.locals = { :foo => "bar" }
83
- builder.foo.should == "bar"
84
- end
85
-
86
- it "should be able to set a different local value" do
87
- builder = Markaby::Builder.new
88
- builder.locals = { :foo => "baz" }
89
- builder.foo.should == "baz"
90
- end
91
-
92
- it "should assign the correct key" do
93
- builder = Markaby::Builder.new
94
- builder.locals = { :key => :value }
95
- builder.key.should == :value
96
- end
97
-
98
- it "should be able to assign multiple locals" do
99
- builder = Markaby::Builder.new
100
-
101
- builder.locals = { :one => "two", :three => "four" }
102
-
103
- builder.one.should == "two"
104
- builder.three.should == "four"
105
- end
106
-
107
- def test_builder_bang_methods
108
- assert_equal "<?xml version=\"1.0\" encoding=\"UTF-8\"?>", mab { instruct! }
109
- end
110
-
111
- it "should be able to produce the correct html from a fragment" do
112
- str = ""
113
- str += "<div>"
114
- str += "<h1>Monkeys</h1>"
115
- str += "<h2>Giraffes <small>Miniature</small> and <strong>Large</strong></h2>"
116
- str += "<h3>Donkeys</h3>"
117
- str += "<h4>Parakeet <b><i>Innocent IV</i></b> in Classic Chartreuse</h4>"
118
- str += "</div>"
119
-
120
- generated = mab {
121
- div {
122
- h1 "Monkeys"
123
- h2 {
124
- "Giraffes #{small('Miniature')} and #{strong 'Large'}"
125
- }
126
- h3 "Donkeys"
127
- h4 { "Parakeet #{b { i 'Innocent IV' }} in Classic Chartreuse" }
128
- }
129
- }
130
-
131
- generated.should == str
132
- end
133
-
134
- def test_fragments
135
- assert_equal %{<div><h1>Monkeys</h1><h2>Giraffes <strong>Miniature</strong></h2><h3>Donkeys</h3></div>},
136
- mab { div { h1 "Monkeys"; h2 { "Giraffes #{strong 'Miniature' }" }; h3 "Donkeys" } }
137
-
138
- assert_equal %{<div><h1>Monkeys</h1><h2>Giraffes <small>Miniature</small> and <strong>Large</strong></h2><h3>Donkeys</h3><h4>Parakeet <strong>Large</strong> as well...</h4></div>},
139
- mab { div { @a = small 'Miniature'; @b = strong 'Large'; h1 "Monkeys"; h2 { "Giraffes #{@a} and #{@b}" }; h3 "Donkeys"; h4 { "Parakeet #{@b} as well..." } } }
140
- end
141
-
142
- def test_invalid_xhtml
143
- assert_exception(NoMethodError, "undefined method `dav'") { dav {} }
144
- assert_exception(Markaby::InvalidXhtmlError, "no attribute `styl' on div elements") { div(:styl => 'ok') {} }
145
- assert_exception(Markaby::InvalidXhtmlError, "no attribute `class' on tbody elements") { tbody.okay {} }
146
- end
147
-
148
- def test_full_doc_transitional
149
- doc = mab { xhtml_transitional { head { title 'OKay' } } }
150
- assert doc =~ /^<\?xml version="1.0" encoding="UTF-8"\?>/
151
- assert doc.include?(%{"-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">})
152
- assert doc.include?(%{<title>OKay</title>})
153
- end
154
-
155
- def test_full_doc_strict
156
- doc = mab { xhtml_strict { head { title 'OKay' } } }
157
- assert doc =~ /^<\?xml version="1.0" encoding="UTF-8"\?>/
158
- assert doc.include?(%{"-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">})
159
- assert doc.include?(%{<title>OKay</title>})
160
- end
161
-
162
- def test_full_doc_frameset
163
- doc = mab { xhtml_frameset { head { title 'OKay' } } }
164
- assert doc =~ /^<\?xml version="1.0" encoding="UTF-8"\?>/
165
- assert doc.include?(%{"-//W3C//DTD XHTML 1.0 Frameset//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd">})
166
- assert doc.include?(%{<title>OKay</title>})
167
- end
168
-
169
- def test_root_attributes_can_be_changed
170
- doc = mab { xhtml_strict(:lang => 'fr') { head { title { 'Salut!' } } } }
171
- assert doc.include?(%{"-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">})
172
- assert doc.include?(%{<title>Salut!</title>})
173
- assert doc.include?(%{ lang="fr"})
174
- end
175
-
176
- def version_file
177
- File.expand_path(File.dirname(__FILE__) + "/../../VERSION")
178
- end
179
-
180
- def test_markaby_should_have_correct_version
181
- assert_equal Markaby::VERSION, File.read(version_file).strip
182
- end
183
-
184
- def test_duplicate_usage_of_same_id
185
- assert_raises Markaby::InvalidXhtmlError do
186
- mab do
187
- p.one!
188
- p.one!
189
- end
190
- end
191
- end
192
-
193
- # auto validation
194
-
195
- def test_tagging_with_invalid_tag_should_raise_error
196
- assert_raises Markaby::InvalidXhtmlError do
197
- mab do
198
- tag! :an_invalid_tag
199
- end
200
- end
201
- end
202
-
203
- def test_self_closing_html_tag_with_block_throws_errors
204
- assert_raises Markaby::InvalidXhtmlError do
205
- mab do
206
- html_tag :img do
207
- end
208
- end
209
- end
210
- end
211
-
212
- def test_local_assigning
213
- builder = Markaby::Builder.new(:variable => :a_value)
214
-
215
- assert_equal :a_value, builder.variable
216
- end
217
-
218
- def test_local_assignment_with_strings
219
- builder = Markaby::Builder.new("variable" => :a_value)
220
- assert_equal :a_value, builder.variable
221
- end
222
-
223
- def test_local_assignment_prefers_symbols_to_strings
224
- builder = Markaby::Builder.new("variable" => "string_value", :variable => :symbol_value)
225
- assert_equal :symbol_value, builder.variable
226
- end
227
-
228
- def test_method_missing_should_call_tag_if_no_tagset_present
229
- Markaby::Builder.set(:tagset, nil)
230
-
231
- builder = Markaby::Builder.new
232
- builder.something.should == "<something/>"
233
- end
234
-
235
- it "should copy instance variables from a helper object" do
236
- klass = Class.new do
237
- def initialize
238
- @hello = "hello there"
239
- end
240
- end
241
-
242
- builder = Markaby::Builder.new({}, klass.new)
243
- builder.capture { @hello }.should == "hello there"
244
- end
245
-
246
- describe Markaby::InvalidXhtmlError do
247
- it "should inherit from StandardError" do
248
- Markaby::InvalidXhtmlError.superclass.should == StandardError
249
- end
250
- end
251
- end
@@ -1,29 +0,0 @@
1
- require 'test/unit'
2
-
3
- unless defined?(RUNNING_RAILS)
4
- MARKABY_ROOT = File.join(File.dirname(__FILE__), "..", "..", "..")
5
- rails_root = File.join(MARKABY_ROOT, "..", "..", "..")
6
- RAILS_BOOT_FILE = File.join(rails_root, "config", "boot.rb")
7
-
8
- RUNNING_RAILS = File.exists?(RAILS_BOOT_FILE) ? true : false
9
- end
10
-
11
- if RUNNING_RAILS
12
- ENV["RAILS_ENV"] ||= "test"
13
- require RAILS_BOOT_FILE
14
- Rails::Initializer.run
15
- require 'action_controller/test_process'
16
-
17
- $:.unshift MARKABY_ROOT
18
- require 'init'
19
-
20
- ActionController::Routing::Routes.draw do |map|
21
- map.new_user "/users/new", :controller => "users", :action => "new"
22
-
23
- # default routes
24
- map.connect ':controller/:action/:id.:format'
25
- map.connect ':controller/:action/:id'
26
- end
27
- else
28
- warn "Skipping rails specific tests"
29
- end
@@ -1,11 +0,0 @@
1
- div :id => "main" do
2
- yield
3
- end
4
-
5
- str = yield(:foo)
6
-
7
- unless str.blank?
8
- div :id => "foo" do
9
- str
10
- end
11
- end
@@ -1,3 +0,0 @@
1
- ul do
2
- li "smtlaissezfaire"
3
- end
@@ -1 +0,0 @@
1
- link_to "bar", "/foo"
@@ -1,7 +0,0 @@
1
- div {
2
- ul {
3
- li 'one'
4
- li 'two'
5
- li supercalifragilisticexpialidocious
6
- }
7
- }
@@ -1 +0,0 @@
1
- # <!-- raise an ruby error -->
@@ -1,5 +0,0 @@
1
- ul do
2
- li "smt"
3
- li "joho"
4
- li "spox"
5
- end
@@ -1,8 +0,0 @@
1
- content_for :foo do
2
- form_for :foo do |f|
3
- p :class => "foo" do
4
- f.text_field :foo
5
- f.submit "foo"
6
- end
7
- end
8
- end
@@ -1,2 +0,0 @@
1
- form_for :obj do
2
- end
@@ -1,3 +0,0 @@
1
- form_for :foo do |f|
2
- f.text_field :foo
3
- end
@@ -1,4 +0,0 @@
1
- form_for :foo do |f|
2
- f.text_field :foo
3
- f.text_field :baz
4
- end
@@ -1,3 +0,0 @@
1
- ul do
2
- li "Scott"
3
- end
@@ -1 +0,0 @@
1
- render :partial => "a_partial"
@@ -1,7 +0,0 @@
1
- ul do
2
- authors = ["smtlaissezfaire"]
3
-
4
- authors.each do |author|
5
- render :partial => "partial_child_with_locals", :locals => {:author => author}
6
- end
7
- end
@@ -1,3 +0,0 @@
1
- form_for :foo do |f|
2
- render :partial => "form_for_with_body_in_erb", :locals => { :f => f }
3
- end
@@ -1 +0,0 @@
1
- link_to("Foo", new_user_path)
@@ -1,3 +0,0 @@
1
- p :class => "hey" do
2
- "hi there"
3
- end
@@ -1,5 +0,0 @@
1
- content_for :foo do
2
- form_for :foo do |f|
3
- f.text_field :foo
4
- end
5
- end
@@ -1,7 +0,0 @@
1
- p :class => "hi" do
2
- "hi there"
3
- end
4
-
5
- p :class => "hi" do
6
- "hi again"
7
- end
@@ -1,3 +0,0 @@
1
- content_for :foo do
2
- p "in foo content_for"
3
- end
@@ -1,380 +0,0 @@
1
- require File.expand_path('../rails/spec_helper', __FILE__)
2
-
3
- if RUNNING_RAILS
4
- class NonSpecificTestController < ActionController::Base
5
- VIEW_PATH = File.expand_path(File.join(File.dirname(__FILE__), 'rails', 'views'))
6
-
7
- around_filter :catch_exceptions
8
-
9
- attr_reader :last_exception
10
-
11
- def catch_exceptions
12
- yield
13
- rescue Exception => @last_exception
14
- raise @last_exception
15
- end
16
- end
17
-
18
- if Markaby::Rails.deprecated_rails_version?
19
- class ActionController::TestCase < Test::Unit::TestCase; end
20
-
21
- class TestController < NonSpecificTestController
22
- self.template_root = VIEW_PATH
23
- end
24
- else
25
- class TestController < NonSpecificTestController
26
- append_view_path(VIEW_PATH)
27
- end
28
- end
29
-
30
- class MarkabyController < TestController
31
- def renders_nothing
32
- render :text => ""
33
- end
34
-
35
- def renders_erb_with_explicit_template
36
- render :template => "markaby/renders_erb"
37
- end
38
-
39
- def render_inline_content
40
- mab_content = mab do
41
- ul do
42
- li "Scott"
43
- end
44
- end
45
-
46
- render :inline => mab_content
47
- end
48
-
49
- def render_explicit_but_empty_markaby_layout
50
- render :template => "markaby/render_explicit_but_empty_markaby_layout.mab"
51
- end
52
-
53
- def no_values_passed
54
- render :template => "markaby/no_values_passed"
55
- end
56
-
57
- def correct_template_values
58
- render :template => "markaby/correct_template_values"
59
- end
60
-
61
- def render_erb_without_explicit_render_call
62
- end
63
-
64
- def render_mab_without_explicit_render_call
65
- end
66
-
67
- def render_with_ivar
68
- @user = "smtlaissezfaire"
69
- render :template => "markaby/render_with_ivar"
70
- end
71
-
72
- def access_to_helpers
73
- render :template => "markaby/access_to_helpers"
74
- end
75
-
76
- def renders_partial
77
- render :template => "markaby/partial_parent"
78
- end
79
-
80
- def renders_partial_with_locals
81
- render :template => "markaby/partial_parent_with_locals"
82
- end
83
-
84
- def render_which_raises_error
85
- render :template => "markaby/broken"
86
- end
87
-
88
- def renders_form_for
89
- @obj = Object.new
90
- render :template => "markaby/form_for"
91
- end
92
-
93
- def render_form_for_with_fields
94
- @obj = Object.new
95
- def @obj.foo
96
- "bar"
97
- end
98
-
99
- render :template => "markaby/form_for_with_fields"
100
- end
101
-
102
- def render_form_for_with_multiple_fields
103
- @obj = Object.new
104
-
105
- def @obj.foo
106
- "bar"
107
- end
108
-
109
- def @obj.baz
110
- "quxx"
111
- end
112
-
113
- render :template => "markaby/form_for_with_multiple_fields"
114
- end
115
-
116
- def routes
117
- end
118
-
119
- def commented_out_template
120
- end
121
-
122
- def render_with_yielding
123
- render :layout => "layout.mab",
124
- :template => "markaby/yielding"
125
- end
126
-
127
- def render_with_yielding_where_template_has_two_elements
128
- render :layout => "layout.mab",
129
- :template => "markaby/yielding_two"
130
- end
131
-
132
- def render_with_yielding_content_for_block
133
- render :layout => "layout.mab",
134
- :template => "markaby/yielding_with_content_for"
135
- end
136
-
137
- def render_content_for_with_block_helper
138
- @obj = Object.new
139
- def @obj.foo
140
- "bar"
141
- end
142
-
143
- render :layout => "layout.mab",
144
- :template => "markaby/yielding_content_for_with_block_helper"
145
- end
146
-
147
- def renders_content_for_with_form_for_without_double_render
148
- @obj = Object.new
149
- def @obj.foo
150
- "bar"
151
- end
152
-
153
- render :layout => "layout.mab",
154
- :template => "markaby/double_output"
155
- end
156
-
157
- def renders_form_for_with_erb_body
158
- @obj = Object.new
159
-
160
- def @obj.foo
161
- "bar"
162
- end
163
- end
164
- end
165
-
166
- class MarkabyOnRailsTest < ActionController::TestCase
167
- def setup
168
- Markaby::Builder.restore_defaults!
169
-
170
- @request = ActionController::TestRequest.new
171
- @response = ActionController::TestResponse.new
172
- @controller = MarkabyController.new
173
- end
174
-
175
- def test_renders_nothing
176
- get :renders_nothing
177
- assert_response :success
178
- end
179
-
180
- def test_renders_erb_with_explicit_template
181
- get :renders_erb_with_explicit_template
182
- assert_response :success
183
- # TODO: - fix this test environment issue so that assert_template works
184
- # correctly in these tests
185
- # assert_template "renders_erb.erb"
186
- end
187
-
188
- def test_renders_explicit_but_empty_markaby_layout
189
- get :render_explicit_but_empty_markaby_layout
190
- assert_response :success
191
-
192
- assert_equal "", @response.body
193
- # TODO:
194
- # assert_template "markaby/render_explicit_but_empty_markaby_layout"
195
- end
196
-
197
- def test_renders_inline_markaby_content
198
- get :render_inline_content
199
- assert_response :success
200
- assert_equal "<ul><li>Scott</li></ul>", @response.body
201
- end
202
-
203
- def test_renders_mab_template_with_no_values_passed
204
- get :no_values_passed
205
- assert_response :success
206
- assert_equal "<ul><li>Scott</li></ul>", @response.body
207
- end
208
-
209
- def test_renders_mab_template_with_correct_values
210
- get :correct_template_values
211
- assert_response :success
212
-
213
- assert_equal "<ul><li>smt</li><li>joho</li><li>spox</li></ul>", @response.body
214
- end
215
-
216
- def test_renders_without_explicit_render_call
217
- get :render_mab_without_explicit_render_call
218
- assert_response :success
219
-
220
- assert_equal @response.body, "<ul><li>smtlaissezfaire</li></ul>"
221
- end
222
-
223
- def test_renders_with_ivar
224
- get :render_with_ivar
225
- assert_response :success
226
-
227
- assert_equal "<ul><li>smtlaissezfaire</li></ul>", @response.body
228
- end
229
-
230
- def test_access_to_helpers
231
- get :access_to_helpers
232
- assert_response :success
233
-
234
- assert_equal '<a href="/foo">bar</a>', @response.body
235
- end
236
-
237
- def test_renders_partial_from_template
238
- get :renders_partial
239
- assert_response :success
240
-
241
- assert_equal "<ul><li>smtlaissezfaire</li></ul>", @response.body
242
- end
243
-
244
- def test_renders_partial_with_locals
245
- get :renders_partial_with_locals
246
- assert_response :success
247
-
248
- assert_equal "<ul><li>smtlaissezfaire</li></ul>", @response.body
249
- end
250
-
251
- def test_raises_error_when_template_raises_error
252
- get :render_which_raises_error
253
-
254
- assert_response :error
255
-
256
- assert_equal ActionView::TemplateError, @controller.last_exception.class
257
- assert %r(undefined local variable or method `supercalifragilisticexpialidocious' for #<Markaby::.*Builder.*) =~
258
- @controller.last_exception.message.to_s
259
- end
260
-
261
- def test_routes_work
262
- get :routes
263
- assert_response :success
264
-
265
- expected_output = '<a href="/users/new">Foo</a>'
266
- assert_equal expected_output, @response.body
267
- end
268
-
269
- def test_commented_out_template_cant_raise_errors
270
- get :commented_out_template
271
- assert_response :success
272
-
273
- expected_output = ""
274
- assert_equal expected_output, @response.body
275
- end
276
-
277
- if Rails::VERSION::MAJOR >= 2
278
- def test_renders_form_for_properly
279
- get :renders_form_for
280
-
281
- assert_response :success
282
-
283
- assert %r(<form.*></form>) =~ @response.body
284
- end
285
-
286
- def test_renders_form_for_with_fields_for
287
- get :render_form_for_with_fields
288
-
289
- assert_response :success
290
-
291
- assert_equal '<form action="/markaby/render_form_for_with_fields" method="post"><input id="foo_foo" name="foo[foo]" size="30" type="text" /></form>',
292
- @response.body
293
- end
294
-
295
- def test_renders_form_for_with_multiple_fields
296
- get :render_form_for_with_multiple_fields
297
-
298
- assert_response :success
299
-
300
- expected_output = '<form action="/markaby/render_form_for_with_multiple_fields" method="post">'
301
- expected_output << '<input id="foo_foo" name="foo[foo]" size="30" type="text" />'
302
- expected_output << '<input id="foo_baz" name="foo[baz]" size="30" type="text" />'
303
- expected_output << '</form>'
304
-
305
- assert_equal expected_output,
306
- @response.body
307
- end
308
-
309
- def test_rendering_with_yield_works
310
- get :render_with_yielding
311
- assert_response :success
312
-
313
- expected_output = '<div id="main"><p class="hey">hi there</p></div>'
314
- assert_equal expected_output, @response.body
315
- end
316
-
317
- def test_render_with_yielding_where_template_has_two_elements
318
- get :render_with_yielding_where_template_has_two_elements
319
- assert_response :success
320
-
321
- expected_output = '<div id="main"><p class="hi">hi there</p><p class="hi">hi again</p></div>'
322
- assert_equal expected_output, @response.body
323
- end
324
-
325
- def test_render_with_yielding_content_for_block
326
- get :render_with_yielding_content_for_block
327
- assert_response :success
328
-
329
- expected_output = '<div id="main"></div><div id="foo"><p>in foo content_for</p></div>'
330
- assert_equal expected_output, @response.body
331
- end
332
-
333
- def test_render_content_for_with_block_helper
334
- get :render_content_for_with_block_helper
335
- assert_response :success
336
-
337
- expected_output = '<div id="main"></div><div id="foo">'
338
- expected_output << '<form action="/markaby/render_content_for_with_block_helper" method="post">'
339
- expected_output << '<input id="foo_foo" name="foo[foo]" size="30" type="text" />'
340
- expected_output << '</form>'
341
- expected_output << '</div>'
342
-
343
- assert_equal expected_output, @response.body
344
- end
345
-
346
- def test_renders_content_for_with_form_for_without_double_render
347
- get :renders_content_for_with_form_for_without_double_render
348
- assert_response :success
349
-
350
- expected_output = '<div id="main"></div><div id="foo">'
351
- expected_output << '<form action="/markaby/renders_content_for_with_form_for_without_double_render" method="post">'
352
- expected_output << '<p class="foo">'
353
- expected_output << '<input id="foo_foo" name="foo[foo]" size="30" type="text" />'
354
- expected_output << '<input id="foo_submit" name="commit" type="submit" value="foo" />'
355
- expected_output << '</p>'
356
- expected_output << '</form>'
357
- expected_output << '</div>'
358
-
359
- assert_equal expected_output, @response.body
360
- end
361
-
362
- def test_renders_form_for_with_erb_render_in_body
363
- get :renders_form_for_with_erb_body
364
- assert_response :success
365
-
366
- str = '<form action="/markaby/renders_form_for_with_erb_body" method="post">'
367
- str << '<input id="foo_foo" name="foo[foo]" size="30" type="text" />'
368
- str << '</form>'
369
-
370
- assert_equal str, @response.body
371
- end
372
- end
373
- end
374
-
375
- describe "rails version" do
376
- it "should support the current rails version" do
377
- Markaby::Rails::SUPPORTED_RAILS_VERSIONS.should include(::Rails::VERSION::STRING)
378
- end
379
- end
380
- end