sinatra_more 0.1.6 → 0.1.7
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.
- data/README.rdoc +6 -6
- data/VERSION +1 -1
- data/lib/sinatra_more/markup_plugin/form_builder/abstract_form_builder.rb +1 -1
- data/lib/sinatra_more/markup_plugin/form_builder/standard_form_builder.rb +5 -7
- data/lib/sinatra_more/markup_plugin/form_helpers.rb +2 -2
- data/lib/sinatra_more/markup_plugin/output_helpers.rb +14 -7
- data/lib/sinatra_more/markup_plugin/tag_helpers.rb +0 -1
- data/lib/sinatra_more/markup_plugin.rb +1 -0
- data/sinatra_more.gemspec +3 -1
- data/test/fixtures/markup_app/app.rb +9 -19
- data/test/fixtures/markup_app/views/form_for.erb +33 -0
- data/test/fixtures/markup_app/views/form_for.haml +27 -0
- data/test/fixtures/markup_app/views/form_tag.erb +1 -1
- data/test/fixtures/markup_app/views/form_tag.haml +1 -1
- data/test/markup_plugin/test_form_builder.rb +241 -2
- metadata +3 -1
data/README.rdoc
CHANGED
@@ -185,7 +185,7 @@ A form_for using these basic fields might look like:
|
|
185
185
|
- form_for @user, '/register', :id => 'register' do |f|
|
186
186
|
= f.error_messages
|
187
187
|
%p
|
188
|
-
= f.label :username
|
188
|
+
= f.label :username, :caption => "Nickname"
|
189
189
|
= f.text_field :username
|
190
190
|
%p
|
191
191
|
= f.label :email
|
@@ -194,7 +194,7 @@ A form_for using these basic fields might look like:
|
|
194
194
|
= f.label :password
|
195
195
|
= f.password_field :password
|
196
196
|
%p
|
197
|
-
= f.submit "Create"
|
197
|
+
= f.submit "Create", :class => 'button'
|
198
198
|
|
199
199
|
There is also a StandardFormBuilder which builds on the abstract fields that can be used within a form_for:
|
200
200
|
|
@@ -213,17 +213,17 @@ A form_for using these standard fields might look like:
|
|
213
213
|
|
214
214
|
- form_for @user, '/register', :id => 'register' do |f|
|
215
215
|
= f.error_messages
|
216
|
-
= f.text_field_block :
|
216
|
+
= f.text_field_block :name, :caption => "Full name"
|
217
217
|
= f.text_field_block :email
|
218
218
|
= f.password_field_block :password
|
219
|
-
= f.submit_block "Create"
|
219
|
+
= f.submit_block "Create", :class => 'button'
|
220
220
|
|
221
221
|
and would generate this html:
|
222
222
|
|
223
223
|
<form id="register" action="/register" method="post">
|
224
|
-
<p><label for="user_name">
|
224
|
+
<p><label for="user_name">Full name: </label><input type="text" id="user_name" name="user[name]"></p>
|
225
225
|
...omitted...
|
226
|
-
<p><input type="submit" value="Create"></p>
|
226
|
+
<p><input type="submit" value="Create" class="button"></p>
|
227
227
|
</form>
|
228
228
|
|
229
229
|
==== Format Helpers
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.1.
|
1
|
+
0.1.7
|
@@ -8,18 +8,16 @@ class StandardFormBuilder < AbstractFormBuilder
|
|
8
8
|
class_eval <<-EOF
|
9
9
|
def #{field_type}_block(field, options={}, label_options={})
|
10
10
|
label_options.reverse_merge!(:caption => options.delete(:caption)) if options[:caption]
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
end
|
11
|
+
field_html = label(field, label_options)
|
12
|
+
field_html << #{field_type}(field, options)
|
13
|
+
@template.content_tag(:p, field_html)
|
15
14
|
end
|
16
15
|
EOF
|
17
16
|
end
|
18
17
|
|
19
18
|
# submit_block("Update")
|
20
19
|
def submit_block(caption, options={})
|
21
|
-
@template.
|
22
|
-
|
23
|
-
end
|
20
|
+
submit_html = @template.submit_tag(caption, options)
|
21
|
+
@template.content_tag(:p, submit_html)
|
24
22
|
end
|
25
23
|
end
|
@@ -38,8 +38,8 @@ module SinatraMore
|
|
38
38
|
error_messages = record.errors.full_messages
|
39
39
|
error_items = error_messages.collect { |er| content_tag(:li, er) }.join("\n")
|
40
40
|
error_html = content_tag(:p, options.delete(:header_message))
|
41
|
-
error_html <<
|
42
|
-
|
41
|
+
error_html << content_tag(:ul, error_items, :class => 'errors-list')
|
42
|
+
content_tag(:div, error_html, :class => 'field-errors')
|
43
43
|
end
|
44
44
|
|
45
45
|
# Constructs a label tag from the given options
|
@@ -5,9 +5,11 @@ module SinatraMore
|
|
5
5
|
def capture_html(*args, &block)
|
6
6
|
if self.respond_to?(:is_haml?) && is_haml?
|
7
7
|
block_is_haml?(block) ? capture_haml(*args, &block) : block.call
|
8
|
-
|
8
|
+
elsif has_erb_buffer?
|
9
9
|
result_text = capture_erb(*args, &block)
|
10
|
-
result_text.present? ? result_text : block.call
|
10
|
+
result_text.present? ? result_text : (block_given? && block.call(*args))
|
11
|
+
else # theres no template to capture, invoke the block directly
|
12
|
+
block.call(*args)
|
11
13
|
end
|
12
14
|
end
|
13
15
|
|
@@ -16,9 +18,9 @@ module SinatraMore
|
|
16
18
|
def concat_content(text="")
|
17
19
|
if self.respond_to?(:is_haml?) && is_haml?
|
18
20
|
haml_concat(text)
|
19
|
-
elsif
|
21
|
+
elsif has_erb_buffer?
|
20
22
|
erb_concat(text)
|
21
|
-
else # theres no
|
23
|
+
else # theres no template to concat, return the text directly
|
22
24
|
text
|
23
25
|
end
|
24
26
|
end
|
@@ -32,17 +34,22 @@ module SinatraMore
|
|
32
34
|
|
33
35
|
protected
|
34
36
|
|
35
|
-
|
36
37
|
# Used to capture the html from a block of erb code
|
37
38
|
# capture_erb(&block) => '...html...'
|
38
39
|
def capture_erb(*args, &block)
|
39
|
-
erb_with_output_buffer { block.call(*args) }
|
40
|
+
erb_with_output_buffer { block_given? && block.call(*args) }
|
40
41
|
end
|
41
42
|
|
42
43
|
# Concats directly to an erb template
|
43
44
|
# erb_concat("Direct to buffer")
|
44
45
|
def erb_concat(text)
|
45
|
-
@_out_buf << text
|
46
|
+
@_out_buf << text if has_erb_buffer?
|
47
|
+
end
|
48
|
+
|
49
|
+
# Returns true if an erb buffer is detected
|
50
|
+
# has_erb_buffer? => true
|
51
|
+
def has_erb_buffer?
|
52
|
+
!@_out_buf.nil?
|
46
53
|
end
|
47
54
|
|
48
55
|
# Used to determine if a block is called from ERB.
|
@@ -18,7 +18,6 @@ module SinatraMore
|
|
18
18
|
tag_result = tag(name, options.merge(:content => tag_html))
|
19
19
|
block_is_template?(block) ? concat_content(tag_result) : tag_result
|
20
20
|
end
|
21
|
-
alias content_block_tag content_tag
|
22
21
|
|
23
22
|
# Creates an html tag with the given name and options
|
24
23
|
# tag(:br, :style => 'clear:both')
|
@@ -5,6 +5,7 @@ Dir[File.dirname(__FILE__) + '/markup_plugin/*.rb'].each {|file| load file }
|
|
5
5
|
module SinatraMore
|
6
6
|
module MarkupPlugin
|
7
7
|
def self.registered(app)
|
8
|
+
app.set :default_builder, 'StandardFormBuilder'
|
8
9
|
app.helpers OutputHelpers
|
9
10
|
app.helpers TagHelpers
|
10
11
|
app.helpers AssetTagHelpers
|
data/sinatra_more.gemspec
CHANGED
@@ -5,7 +5,7 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = %q{sinatra_more}
|
8
|
-
s.version = "0.1.
|
8
|
+
s.version = "0.1.7"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
11
|
s.authors = ["Nathan Esquenazi"]
|
@@ -43,6 +43,8 @@ Gem::Specification.new do |s|
|
|
43
43
|
"test/fixtures/markup_app/views/capture_concat.haml",
|
44
44
|
"test/fixtures/markup_app/views/content_tag.erb",
|
45
45
|
"test/fixtures/markup_app/views/content_tag.haml",
|
46
|
+
"test/fixtures/markup_app/views/form_for.erb",
|
47
|
+
"test/fixtures/markup_app/views/form_for.haml",
|
46
48
|
"test/fixtures/markup_app/views/form_tag.erb",
|
47
49
|
"test/fixtures/markup_app/views/form_tag.haml",
|
48
50
|
"test/fixtures/markup_app/views/link_to.erb",
|
@@ -10,11 +10,6 @@ class MarkupDemo < Sinatra::Base
|
|
10
10
|
set :root, File.dirname(__FILE__)
|
11
11
|
end
|
12
12
|
|
13
|
-
get '/:engine/form_tag' do
|
14
|
-
@user = User.new
|
15
|
-
show(params[:engine], 'form_tag')
|
16
|
-
end
|
17
|
-
|
18
13
|
get '/:engine/:file' do
|
19
14
|
show(params[:engine], params[:file].to_sym)
|
20
15
|
end
|
@@ -49,20 +44,15 @@ class MarkupDemo < Sinatra::Base
|
|
49
44
|
end
|
50
45
|
end
|
51
46
|
end
|
47
|
+
end
|
52
48
|
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
end
|
57
|
-
end
|
58
|
-
|
59
|
-
class Errors < Array
|
60
|
-
def initialize
|
61
|
-
self << [:fake, :second, :third]
|
62
|
-
end
|
49
|
+
class MarkupUser
|
50
|
+
def errors; Errors.new; end
|
51
|
+
end
|
63
52
|
|
64
|
-
|
65
|
-
|
66
|
-
|
53
|
+
class Errors < Array
|
54
|
+
def initialize; self << [:fake, :second, :third]; end
|
55
|
+
def full_messages
|
56
|
+
["This is a fake error", "This is a second fake error", "This is a third fake error"]
|
67
57
|
end
|
68
|
-
end
|
58
|
+
end
|
@@ -0,0 +1,33 @@
|
|
1
|
+
<% form_for MarkupUser.new, '/demo', :id => 'demo' do |f| %>
|
2
|
+
<%= f.error_messages(:header_message => "custom MarkupUser cannot be saved!") %>
|
3
|
+
<p>
|
4
|
+
<%= f.label :username, :caption => "Login", :class => 'user-label' %>
|
5
|
+
<%= f.text_field :username, :class => 'user-text', :value => "John" %>
|
6
|
+
</p>
|
7
|
+
<p>
|
8
|
+
<%= f.label :email, :caption => "Email", :class => 'user-email' %>
|
9
|
+
<%= f.text_field :email %>
|
10
|
+
</p>
|
11
|
+
<p>
|
12
|
+
<%= f.label :password %>
|
13
|
+
<%= f.password_field :password, :class => 'user-password', :value => "secret" %>
|
14
|
+
</p>
|
15
|
+
<p>
|
16
|
+
<%= f.label :photo %>
|
17
|
+
<%= f.file_field :photo, :class => 'user-photo' %>
|
18
|
+
</p>
|
19
|
+
<p>
|
20
|
+
<%= f.label :about, :caption => "About Me" %>
|
21
|
+
<%= f.text_area :about, :class => 'user-about' %>
|
22
|
+
</p>
|
23
|
+
<p><%= f.submit "Create", :class => 'success', :id => 'demo-button' %></p>
|
24
|
+
<% end %>
|
25
|
+
|
26
|
+
<% form_for MarkupUser.new, '/another_demo', :id => 'demo2', :method => 'get' do |f| %>
|
27
|
+
<%= f.error_messages :header_message => "custom MarkupUser cannot be saved!" %>
|
28
|
+
<%= f.text_field_block :username, { :class => 'input' }, { :caption => 'Nickname', :class => 'label' } %>
|
29
|
+
<%= f.password_field_block :code, { :class => 'input' } %>
|
30
|
+
<%= f.text_area_block :about, { :class => 'textarea' } %>
|
31
|
+
<%= f.file_field_block :photo, { :class => 'upload' } %>
|
32
|
+
<%= f.submit_block "Create", { :class => 'button', :class => 'button' } %>
|
33
|
+
<% end %>
|
@@ -0,0 +1,27 @@
|
|
1
|
+
- form_for MarkupUser.new, '/demo', :id => 'demo' do |f|
|
2
|
+
= f.error_messages(:header_message => "custom MarkupUser cannot be saved!")
|
3
|
+
%p
|
4
|
+
= f.label :username, :caption => "Login", :class => 'user-label'
|
5
|
+
= f.text_field :username, :class => 'user-text', :value => "John"
|
6
|
+
%p
|
7
|
+
= f.label :email, :caption => "Email", :class => 'user-email'
|
8
|
+
= f.text_field :email
|
9
|
+
%p
|
10
|
+
= f.label :password
|
11
|
+
= f.password_field :password, :class => 'user-password', :value => "secret"
|
12
|
+
%p
|
13
|
+
= f.label :photo
|
14
|
+
= f.file_field :photo, :class => 'user-photo'
|
15
|
+
%p
|
16
|
+
= f.label :about, :caption => "About Me"
|
17
|
+
= f.text_area :about, :class => 'user-about'
|
18
|
+
%p
|
19
|
+
= f.submit "Create", :class => 'success', :id => 'demo-button'
|
20
|
+
|
21
|
+
- form_for MarkupUser.new, '/another_demo', :id => 'demo2', :method => 'get' do |f|
|
22
|
+
= f.error_messages :header_message => "custom MarkupUser cannot be saved!"
|
23
|
+
= f.text_field_block :username, { :class => 'input' }, { :caption => 'Nickname', :class => 'label' }
|
24
|
+
= f.password_field_block :code, { :class => 'input' }
|
25
|
+
= f.text_area_block :about, { :class => 'textarea' }
|
26
|
+
= f.file_field_block :photo, { :class => 'upload' }
|
27
|
+
= f.submit_block "Create", { :class => 'button' }
|
@@ -10,7 +10,7 @@
|
|
10
10
|
<% end %>
|
11
11
|
|
12
12
|
<% form_tag '/advanced', :id => 'advanced', :class => 'advanced-form', :method => 'get' do %>
|
13
|
-
<%= error_messages_for
|
13
|
+
<%= error_messages_for MarkupUser.new, :header_message => "There are problems with saving user!" %>
|
14
14
|
<% field_set_tag "Advanced", :class => 'advanced-field-set' do %>
|
15
15
|
<p>
|
16
16
|
<%= label_tag :username, :class => 'first', :caption => "Nickname" %>
|
@@ -8,7 +8,7 @@
|
|
8
8
|
= submit_tag
|
9
9
|
|
10
10
|
- form_tag '/advanced', :id => 'advanced', :class => 'advanced-form', :method => 'get' do
|
11
|
-
= error_messages_for
|
11
|
+
= error_messages_for MarkupUser.new, :header_message => "There are problems with saving user!"
|
12
12
|
- field_set_tag "Advanced", :class => 'advanced-field-set' do
|
13
13
|
%p
|
14
14
|
= label_tag :username, :class => 'first', :caption => "Nickname"
|
@@ -8,12 +8,47 @@ class TestFormBuilder < Test::Unit::TestCase
|
|
8
8
|
MarkupDemo.tap { |app| app.set :environment, :test }
|
9
9
|
end
|
10
10
|
|
11
|
+
def setup
|
12
|
+
@user = stub(:errors => stub(:full_messages => ["1", "2"], :none? => false), :class => 'User', :first_name => "Joe")
|
13
|
+
@user_none = stub(:errors => stub(:none? => true), :class => 'User')
|
14
|
+
end
|
15
|
+
|
16
|
+
def standard_builder(object=@user)
|
17
|
+
StandardFormBuilder.new(self, object)
|
18
|
+
end
|
19
|
+
|
11
20
|
context 'for #form_for method' do
|
12
21
|
should "display correct form html" do
|
13
|
-
|
14
|
-
actual_html = form_for(user, '/register', :id => 'register') { "Demo" }
|
22
|
+
actual_html = form_for(@user, '/register', :id => 'register') { "Demo" }
|
15
23
|
assert_has_tag('form', :action => '/register', :id => 'register', :content => "Demo") { actual_html }
|
16
24
|
end
|
25
|
+
|
26
|
+
should "display correct form html with multipart" do
|
27
|
+
actual_html = form_for(@user, '/register', :multipart => true) { "Demo" }
|
28
|
+
assert_has_tag('form', :action => '/register', :enctype => "multipart/form-data") { actual_html }
|
29
|
+
end
|
30
|
+
|
31
|
+
should "support changing form builder type" do
|
32
|
+
form_html = lambda { form_for(@user, '/register', :builder => "AbstractFormBuilder") { |f| f.text_field_block(:name) } }
|
33
|
+
assert_raise(NoMethodError) { form_html.call }
|
34
|
+
end
|
35
|
+
|
36
|
+
should "support using default standard builder" do
|
37
|
+
actual_html = form_for(@user, '/register') { |f| f.text_field_block(:name) }
|
38
|
+
assert_has_tag('form p input[type=text]') { actual_html }
|
39
|
+
end
|
40
|
+
|
41
|
+
should "display correct form in haml" do
|
42
|
+
visit '/haml/form_for'
|
43
|
+
assert_have_selector :form, :action => '/demo', :id => 'demo'
|
44
|
+
assert_have_selector :form, :action => '/another_demo', :id => 'demo2', :method => 'get'
|
45
|
+
end
|
46
|
+
|
47
|
+
should "display correct form in erb" do
|
48
|
+
visit '/erb/form_for'
|
49
|
+
assert_have_selector :form, :action => '/demo', :id => 'demo'
|
50
|
+
assert_have_selector :form, :action => '/another_demo', :id => 'demo2', :method => 'get'
|
51
|
+
end
|
17
52
|
end
|
18
53
|
|
19
54
|
# ===========================
|
@@ -21,27 +56,154 @@ class TestFormBuilder < Test::Unit::TestCase
|
|
21
56
|
# ===========================
|
22
57
|
|
23
58
|
context 'for #error_messages method' do
|
59
|
+
should "display correct form html with no record" do
|
60
|
+
actual_html = standard_builder(@user_none).error_messages(:header_message => "Demo form cannot be saved")
|
61
|
+
assert actual_html.blank?
|
62
|
+
end
|
63
|
+
|
64
|
+
should "display correct form html with valid record" do
|
65
|
+
actual_html = standard_builder.error_messages(:header_message => "Demo form cannot be saved")
|
66
|
+
assert_has_tag('div.field-errors p', :content => "Demo form cannot be saved") { actual_html }
|
67
|
+
assert_has_tag('div.field-errors ul.errors-list li', :content => "1") { actual_html }
|
68
|
+
assert_has_tag('div.field-errors ul.errors-list li', :content => "2") { actual_html }
|
69
|
+
end
|
24
70
|
|
71
|
+
should "display correct form in haml" do
|
72
|
+
visit '/haml/form_for'
|
73
|
+
assert_have_selector '#demo div.field-errors p', :content => "custom MarkupUser cannot be saved!"
|
74
|
+
assert_have_selector '#demo div.field-errors ul.errors-list li', :content => "This is a fake error"
|
75
|
+
assert_have_selector '#demo2 div.field-errors p', :content => "custom MarkupUser cannot be saved!"
|
76
|
+
assert_have_selector '#demo2 div.field-errors ul.errors-list li', :content => "This is a fake error"
|
77
|
+
end
|
78
|
+
|
79
|
+
should "display correct form in erb" do
|
80
|
+
visit '/erb/form_for'
|
81
|
+
assert_have_selector '#demo div.field-errors p', :content => "custom MarkupUser cannot be saved!"
|
82
|
+
assert_have_selector '#demo div.field-errors ul.errors-list li', :content => "This is a fake error"
|
83
|
+
assert_have_selector '#demo2 div.field-errors p', :content => "custom MarkupUser cannot be saved!"
|
84
|
+
assert_have_selector '#demo2 div.field-errors ul.errors-list li', :content => "This is a fake error"
|
85
|
+
end
|
86
|
+
end
|
87
|
+
|
88
|
+
context 'for #label method' do
|
89
|
+
should "display correct label html" do
|
90
|
+
actual_html = standard_builder.label(:first_name, :class => 'large', :caption => "F. Name")
|
91
|
+
assert_has_tag('label', :class => 'large', :for => 'user_first_name', :content => "F. Name: ") { actual_html }
|
92
|
+
end
|
93
|
+
|
94
|
+
should "display correct label in haml" do
|
95
|
+
visit '/haml/form_for'
|
96
|
+
assert_have_selector '#demo label', :content => "Login: ", :class => 'user-label'
|
97
|
+
assert_have_selector '#demo label', :content => "About Me: "
|
98
|
+
assert_have_selector '#demo2 label', :content => "Nickname: ", :class => 'label'
|
99
|
+
end
|
100
|
+
|
101
|
+
should "display correct label in erb" do
|
102
|
+
visit '/erb/form_for'
|
103
|
+
assert_have_selector '#demo label', :content => "Login: ", :class => 'user-label'
|
104
|
+
assert_have_selector '#demo label', :content => "About Me: "
|
105
|
+
assert_have_selector '#demo2 label', :content => "Nickname: ", :class => 'label'
|
106
|
+
end
|
25
107
|
end
|
26
108
|
|
27
109
|
context 'for #text_field method' do
|
110
|
+
should "display correct text field html" do
|
111
|
+
actual_html = standard_builder.text_field(:first_name, :class => 'large')
|
112
|
+
assert_has_tag('input.large[type=text]', :value => "Joe", :id => 'user_first_name', :name => 'user[first_name]') { actual_html }
|
113
|
+
end
|
114
|
+
|
115
|
+
should "display correct text field in haml" do
|
116
|
+
visit '/haml/form_for'
|
117
|
+
assert_have_selector '#demo input.user-text[type=text]', :id => 'markup_user_username', :value => "John"
|
118
|
+
assert_have_selector '#demo2 input', :class => 'input', :name => 'markup_user[username]'
|
119
|
+
end
|
28
120
|
|
121
|
+
should "display correct text field in erb" do
|
122
|
+
visit '/erb/form_for'
|
123
|
+
assert_have_selector '#demo input.user-text[type=text]', :id => 'markup_user_username', :value => "John"
|
124
|
+
assert_have_selector '#demo2 input', :class => 'input', :name => 'markup_user[username]'
|
125
|
+
end
|
29
126
|
end
|
30
127
|
|
31
128
|
context 'for #text_area method' do
|
129
|
+
should "display correct text_area html" do
|
130
|
+
actual_html = standard_builder.text_area(:about, :class => 'large')
|
131
|
+
assert_has_tag('textarea.large', :id => 'user_about', :name => 'user[about]') { actual_html }
|
132
|
+
end
|
133
|
+
|
134
|
+
should "display correct text_area in haml" do
|
135
|
+
visit '/haml/form_for'
|
136
|
+
assert_have_selector '#demo textarea', :name => 'markup_user[about]', :id => 'markup_user_about', :class => 'user-about'
|
137
|
+
assert_have_selector '#demo2 textarea', :name => 'markup_user[about]', :id => 'markup_user_about', :class => 'textarea'
|
138
|
+
end
|
32
139
|
|
140
|
+
should "display correct text_area in erb" do
|
141
|
+
visit '/erb/form_for'
|
142
|
+
assert_have_selector '#demo textarea', :name => 'markup_user[about]', :id => 'markup_user_about', :class => 'user-about'
|
143
|
+
assert_have_selector '#demo2 textarea', :name => 'markup_user[about]', :id => 'markup_user_about', :class => 'textarea'
|
144
|
+
end
|
33
145
|
end
|
34
146
|
|
35
147
|
context 'for #password_field method' do
|
148
|
+
should "display correct password_field html" do
|
149
|
+
actual_html = standard_builder.password_field(:code, :class => 'large')
|
150
|
+
assert_has_tag('input.large[type=password]', :id => 'user_code', :name => 'user[code]') { actual_html }
|
151
|
+
end
|
152
|
+
|
153
|
+
should "display correct password_field in haml" do
|
154
|
+
visit '/haml/form_for'
|
155
|
+
assert_have_selector '#demo input', :type => 'password', :class => 'user-password', :value => 'secret'
|
156
|
+
assert_have_selector '#demo2 input', :type => 'password', :class => 'input', :name => 'markup_user[code]'
|
157
|
+
end
|
36
158
|
|
159
|
+
should "display correct password_field in erb" do
|
160
|
+
visit '/erb/form_for'
|
161
|
+
assert_have_selector '#demo input', :type => 'password', :class => 'user-password', :value => 'secret'
|
162
|
+
assert_have_selector '#demo2 input', :type => 'password', :class => 'input', :name => 'markup_user[code]'
|
163
|
+
end
|
37
164
|
end
|
38
165
|
|
39
166
|
context 'for #file_field method' do
|
167
|
+
should "display correct file_field html" do
|
168
|
+
actual_html = standard_builder.file_field(:photo, :class => 'large')
|
169
|
+
assert_has_tag('input.large[type=file]', :id => 'user_photo', :name => 'user[photo]') { actual_html }
|
170
|
+
end
|
40
171
|
|
172
|
+
should "display correct file_field in haml" do
|
173
|
+
visit '/haml/form_for'
|
174
|
+
assert_have_selector '#demo input.user-photo', :type => 'file', :name => 'markup_user[photo]', :id => 'markup_user_photo'
|
175
|
+
assert_have_selector '#demo2 input.upload', :type => 'file', :name => 'markup_user[photo]', :id => 'markup_user_photo'
|
176
|
+
end
|
177
|
+
|
178
|
+
should "display correct file_field in erb" do
|
179
|
+
visit '/erb/form_for'
|
180
|
+
assert_have_selector '#demo input.user-photo', :type => 'file', :name => 'markup_user[photo]', :id => 'markup_user_photo'
|
181
|
+
assert_have_selector '#demo2 input.upload', :type => 'file', :name => 'markup_user[photo]', :id => 'markup_user_photo'
|
182
|
+
end
|
41
183
|
end
|
42
184
|
|
43
185
|
context 'for #submit method' do
|
186
|
+
should "display correct submit button html with no options" do
|
187
|
+
actual_html = standard_builder.submit
|
188
|
+
assert_has_tag('input[type=submit]', :value => "Submit") { actual_html }
|
189
|
+
end
|
44
190
|
|
191
|
+
should "display correct submit button html" do
|
192
|
+
actual_html = standard_builder.submit("Commit", :class => 'large')
|
193
|
+
assert_has_tag('input.large[type=submit]', :value => "Commit") { actual_html }
|
194
|
+
end
|
195
|
+
|
196
|
+
should "display correct submit button in haml" do
|
197
|
+
visit '/haml/form_for'
|
198
|
+
assert_have_selector '#demo input', :type => 'submit', :id => 'demo-button', :class => 'success'
|
199
|
+
assert_have_selector '#demo2 input', :type => 'submit', :class => 'button', :value => "Create"
|
200
|
+
end
|
201
|
+
|
202
|
+
should "display correct submit button in erb" do
|
203
|
+
visit '/erb/form_for'
|
204
|
+
assert_have_selector '#demo input', :type => 'submit', :id => 'demo-button', :class => 'success'
|
205
|
+
assert_have_selector '#demo2 input', :type => 'submit', :class => 'button', :value => "Create"
|
206
|
+
end
|
45
207
|
end
|
46
208
|
|
47
209
|
# ===========================
|
@@ -49,22 +211,99 @@ class TestFormBuilder < Test::Unit::TestCase
|
|
49
211
|
# ===========================
|
50
212
|
|
51
213
|
context 'for #text_field_block method' do
|
214
|
+
should "display correct text field block html" do
|
215
|
+
actual_html = standard_builder.text_field_block(:first_name, :class => 'large', :caption => "FName")
|
216
|
+
assert_has_tag('p label', :for => 'user_first_name', :content => "FName: ") { actual_html }
|
217
|
+
assert_has_tag('p input.large[type=text]', :value => "Joe", :id => 'user_first_name', :name => 'user[first_name]') { actual_html }
|
218
|
+
end
|
219
|
+
|
220
|
+
should "display correct text field block in haml" do
|
221
|
+
visit '/haml/form_for'
|
222
|
+
assert_have_selector '#demo2 p label', :for => 'markup_user_username', :content => "Nickname: ", :class => 'label'
|
223
|
+
assert_have_selector '#demo2 p input', :type => 'text', :name => 'markup_user[username]', :id => 'markup_user_username'
|
224
|
+
end
|
52
225
|
|
226
|
+
should "display correct text field block in erb" do
|
227
|
+
visit '/erb/form_for'
|
228
|
+
assert_have_selector '#demo2 p label', :for => 'markup_user_username', :content => "Nickname: ", :class => 'label'
|
229
|
+
assert_have_selector '#demo2 p input', :type => 'text', :name => 'markup_user[username]', :id => 'markup_user_username'
|
230
|
+
end
|
53
231
|
end
|
54
232
|
|
55
233
|
context 'for #text_area_block method' do
|
234
|
+
should "display correct text area block html" do
|
235
|
+
actual_html = standard_builder.text_area_block(:about, :class => 'large', :caption => "About Me")
|
236
|
+
assert_has_tag('p label', :for => 'user_about', :content => "About Me: ") { actual_html }
|
237
|
+
assert_has_tag('p textarea', :id => 'user_about', :name => 'user[about]') { actual_html }
|
238
|
+
end
|
56
239
|
|
240
|
+
should "display correct text area block in haml" do
|
241
|
+
visit '/haml/form_for'
|
242
|
+
assert_have_selector '#demo2 p label', :for => 'markup_user_about', :content => "About: "
|
243
|
+
assert_have_selector '#demo2 p textarea', :name => 'markup_user[about]', :id => 'markup_user_about'
|
244
|
+
end
|
245
|
+
|
246
|
+
should "display correct text area block in erb" do
|
247
|
+
visit '/erb/form_for'
|
248
|
+
assert_have_selector '#demo2 p label', :for => 'markup_user_about', :content => "About: "
|
249
|
+
assert_have_selector '#demo2 p textarea', :name => 'markup_user[about]', :id => 'markup_user_about'
|
250
|
+
end
|
57
251
|
end
|
58
252
|
|
59
253
|
context 'for #password_field_block method' do
|
254
|
+
should "display correct password field block html" do
|
255
|
+
actual_html = standard_builder.password_field_block(:keycode, :class => 'large', :caption => "Code")
|
256
|
+
assert_has_tag('p label', :for => 'user_keycode', :content => "Code: ") { actual_html }
|
257
|
+
assert_has_tag('p input.large[type=password]', :id => 'user_keycode', :name => 'user[keycode]') { actual_html }
|
258
|
+
end
|
259
|
+
|
260
|
+
should "display correct password field block in haml" do
|
261
|
+
visit '/haml/form_for'
|
262
|
+
assert_have_selector '#demo2 p label', :for => 'markup_user_code', :content => "Code: "
|
263
|
+
assert_have_selector '#demo2 p input', :type => 'password', :name => 'markup_user[code]', :id => 'markup_user_code'
|
264
|
+
end
|
60
265
|
|
266
|
+
should "display correct password field block in erb" do
|
267
|
+
visit '/erb/form_for'
|
268
|
+
assert_have_selector '#demo2 p label', :for => 'markup_user_code', :content => "Code: "
|
269
|
+
assert_have_selector '#demo2 p input', :type => 'password', :name => 'markup_user[code]', :id => 'markup_user_code'
|
270
|
+
end
|
61
271
|
end
|
62
272
|
|
63
273
|
context 'for #file_field_block method' do
|
274
|
+
should "display correct file field block html" do
|
275
|
+
actual_html = standard_builder.file_field_block(:photo, :class => 'large', :caption => "Photo")
|
276
|
+
assert_has_tag('p label', :for => 'user_photo', :content => "Photo: ") { actual_html }
|
277
|
+
assert_has_tag('p input.large[type=file]', :id => 'user_photo', :name => 'user[photo]') { actual_html }
|
278
|
+
end
|
279
|
+
|
280
|
+
should "display correct file field block in haml" do
|
281
|
+
visit '/haml/form_for'
|
282
|
+
assert_have_selector '#demo2 p label', :for => 'markup_user_photo', :content => "Photo: "
|
283
|
+
assert_have_selector '#demo2 p input.upload', :type => 'file', :name => 'markup_user[photo]', :id => 'markup_user_photo'
|
284
|
+
end
|
64
285
|
|
286
|
+
should "display correct file field block in erb" do
|
287
|
+
visit '/erb/form_for'
|
288
|
+
assert_have_selector '#demo2 p label', :for => 'markup_user_photo', :content => "Photo: "
|
289
|
+
assert_have_selector '#demo2 p input.upload', :type => 'file', :name => 'markup_user[photo]', :id => 'markup_user_photo'
|
290
|
+
end
|
65
291
|
end
|
66
292
|
|
67
293
|
context 'for #submit_block method' do
|
294
|
+
should "display correct submit block html" do
|
295
|
+
actual_html = standard_builder.submit_block("Update", :class => 'large')
|
296
|
+
assert_has_tag('p input.large[type=submit]', :value => 'Update') { actual_html }
|
297
|
+
end
|
298
|
+
|
299
|
+
should "display correct submit block in haml" do
|
300
|
+
visit '/haml/form_for'
|
301
|
+
assert_have_selector '#demo2 p input', :type => 'submit', :class => 'button'
|
302
|
+
end
|
68
303
|
|
304
|
+
should "display correct submit block in erb" do
|
305
|
+
visit '/erb/form_for'
|
306
|
+
assert_have_selector '#demo2 p input', :type => 'submit', :class => 'button'
|
307
|
+
end
|
69
308
|
end
|
70
309
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: sinatra_more
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.7
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Nathan Esquenazi
|
@@ -128,6 +128,8 @@ files:
|
|
128
128
|
- test/fixtures/markup_app/views/capture_concat.haml
|
129
129
|
- test/fixtures/markup_app/views/content_tag.erb
|
130
130
|
- test/fixtures/markup_app/views/content_tag.haml
|
131
|
+
- test/fixtures/markup_app/views/form_for.erb
|
132
|
+
- test/fixtures/markup_app/views/form_for.haml
|
131
133
|
- test/fixtures/markup_app/views/form_tag.erb
|
132
134
|
- test/fixtures/markup_app/views/form_tag.haml
|
133
135
|
- test/fixtures/markup_app/views/link_to.erb
|