mab 0.0.2 → 0.0.3

Sign up to get free protection for your applications and to get access to all the features.
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