padrino-helpers 0.8.5 → 0.9.0
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 +7 -13
- data/VERSION +1 -1
- data/lib/padrino-helpers.rb +1 -0
- data/lib/padrino-helpers/asset_tag_helpers.rb +41 -4
- data/lib/padrino-helpers/form_builder/abstract_form_builder.rb +20 -7
- data/lib/padrino-helpers/form_helpers.rb +50 -18
- data/lib/padrino-helpers/output_helpers.rb +8 -4
- data/lib/padrino-helpers/translation_helpers.rb +21 -0
- data/padrino-helpers.gemspec +6 -5
- data/test/fixtures/markup_app/app.rb +1 -1
- data/test/test_asset_tag_helpers.rb +21 -1
- data/test/test_form_builder.rb +3 -3
- metadata +4 -3
data/README.rdoc
CHANGED
@@ -429,15 +429,15 @@ This plugin also has support for useful additions such as partials (with support
|
|
429
429
|
|
430
430
|
Using render plugin helpers is extremely simple. If you want to render an erb template in your view path:
|
431
431
|
|
432
|
-
|
432
|
+
render :erb, 'path/to/erb/template'
|
433
433
|
|
434
434
|
or using haml templates works just as well:
|
435
435
|
|
436
|
-
|
436
|
+
render :haml, 'path/to/haml/template'
|
437
437
|
|
438
438
|
There is also a method which renders the first view matching the path and removes the need to define an engine:
|
439
439
|
|
440
|
-
|
440
|
+
render 'path/to/any/template'
|
441
441
|
|
442
442
|
It is worth noting these are mostly for convenience. With nested view file paths in Sinatra, this becomes tiresome:
|
443
443
|
|
@@ -457,16 +457,10 @@ This works as you would expect and also supports the collection counter inside t
|
|
457
457
|
|
458
458
|
The list of defined helpers in the 'render helpers' category:
|
459
459
|
|
460
|
-
* <tt>
|
461
|
-
* Renders
|
462
|
-
* <tt>
|
463
|
-
* <tt>
|
464
|
-
* Renders a haml template based on the given path
|
465
|
-
* <tt>haml_template 'users/new'</tt>
|
466
|
-
* <tt>render_template(template_path, options={})</tt>
|
467
|
-
* Renders the first detected template based on the given path
|
468
|
-
* <tt>render_template 'users/new'</tt>
|
469
|
-
* <tt>render_template 'users/index', :template_engine => 'haml'</tt>
|
460
|
+
* <tt>render(engine, data, options, locals)</tt>
|
461
|
+
* Renders the specified template with the given options
|
462
|
+
* <tt>render ‘user/new’'</tt>
|
463
|
+
* <tt>render :erb, ‘users/new’, :layout => false</tt>
|
470
464
|
* <tt>partial(template, *args)</tt>
|
471
465
|
* Renders the html related to the partial template for object or collection
|
472
466
|
* <tt>partial 'photo/_item', :object => @photo, :locals => { :foo => 'bar' }</tt>
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.
|
1
|
+
0.9.0
|
data/lib/padrino-helpers.rb
CHANGED
@@ -5,13 +5,13 @@ module Padrino
|
|
5
5
|
# Creates a div to display the flash of given type if it exists
|
6
6
|
#
|
7
7
|
# ==== Examples
|
8
|
-
#
|
9
|
-
# flash_tag(:notice, :
|
8
|
+
# # => <div class="notice">flash-notice</div>
|
9
|
+
# flash_tag(:notice, :id => 'flash-notice')
|
10
10
|
#
|
11
11
|
def flash_tag(kind, options={})
|
12
12
|
flash_text = flash[kind]
|
13
13
|
return '' if flash_text.blank?
|
14
|
-
options.reverse_merge!(:class =>
|
14
|
+
options.reverse_merge!(:class => kind)
|
15
15
|
content_tag(:div, flash_text, options)
|
16
16
|
end
|
17
17
|
|
@@ -37,7 +37,7 @@ module Padrino
|
|
37
37
|
url = args[0] ? args[0] + anchor.to_s : anchor || 'javascript:void(0);'
|
38
38
|
options.reverse_merge!(:href => url)
|
39
39
|
link_content = capture_html(&block)
|
40
|
-
return
|
40
|
+
return '' unless parse_conditions(url, options)
|
41
41
|
result_link = content_tag(:a, link_content, options)
|
42
42
|
block_is_template?(block) ? concat_content(result_link) : result_link
|
43
43
|
else
|
@@ -48,6 +48,31 @@ module Padrino
|
|
48
48
|
end
|
49
49
|
end
|
50
50
|
|
51
|
+
##
|
52
|
+
# Creates a form containing a single button that submits to the url.
|
53
|
+
#
|
54
|
+
# ==== Examples
|
55
|
+
#
|
56
|
+
# # Generates:
|
57
|
+
# # <form class="form" action="/admin/accounts/destroy/2" method="post">
|
58
|
+
# # <input type="hidden" value="delete" name="_method" />
|
59
|
+
# # <input type="submit" value="Delete" />
|
60
|
+
# # </form>
|
61
|
+
# button_to 'Delete', url(:accounts_destroy, :id => account), :method => :delete, :class => :form
|
62
|
+
#
|
63
|
+
def button_to(*args, &block)
|
64
|
+
name, url = args[0], args[1]
|
65
|
+
options = args.extract_options!
|
66
|
+
desired_method = options[:method]
|
67
|
+
options.delete(:method) if options[:method].to_s !~ /get|post/i
|
68
|
+
options.reverse_merge!(:method => 'post', :action => url)
|
69
|
+
options[:enctype] = "multipart/form-data" if options.delete(:multipart)
|
70
|
+
options["data-remote"] = "true" if options.delete(:remote)
|
71
|
+
inner_form_html = hidden_form_method_field(desired_method)
|
72
|
+
inner_form_html += block_given? ? capture_html(&block) : submit_tag(name)
|
73
|
+
content_tag('form', inner_form_html, options)
|
74
|
+
end
|
75
|
+
|
51
76
|
##
|
52
77
|
# Creates a mail link element with given name and caption
|
53
78
|
#
|
@@ -180,6 +205,18 @@ module Padrino
|
|
180
205
|
stamp = File.exist?(public_path) ? File.mtime(public_path).to_i : Time.now.to_i
|
181
206
|
"#{result_path}?#{stamp}"
|
182
207
|
end
|
208
|
+
|
209
|
+
##
|
210
|
+
# Generates a favicon link.
|
211
|
+
# example:
|
212
|
+
# favicon_tag 'images/favicon.png'
|
213
|
+
# or override some options
|
214
|
+
# favicon_tag 'images/favicon.png', :type => 'image/ico'
|
215
|
+
def favicon_tag(source,options={})
|
216
|
+
type = File.extname(source).gsub('.','')
|
217
|
+
options = options.dup.reverse_merge!(:href => source, :rel => 'icon', :type => "image/#{type}")
|
218
|
+
tag(:link, options)
|
219
|
+
end
|
183
220
|
|
184
221
|
private
|
185
222
|
##
|
@@ -17,6 +17,11 @@ module Padrino
|
|
17
17
|
@template.error_messages_for(*params)
|
18
18
|
end
|
19
19
|
|
20
|
+
# f.error_message_on(field)
|
21
|
+
def error_message_on(field, options={})
|
22
|
+
@template.error_message_on(object_name, field, options)
|
23
|
+
end
|
24
|
+
|
20
25
|
# f.label :username, :caption => "Nickname"
|
21
26
|
def label(field, options={})
|
22
27
|
options.reverse_merge!(:caption => "#{field_human_name(field)}: ")
|
@@ -31,26 +36,30 @@ module Padrino
|
|
31
36
|
|
32
37
|
# f.text_field :username, :value => "(blank)", :id => 'username'
|
33
38
|
def text_field(field, options={})
|
34
|
-
options.reverse_merge!(:value => field_value(field), :id => field_id(field)
|
39
|
+
options.reverse_merge!(:value => field_value(field), :id => field_id(field))
|
40
|
+
options.merge!(:class => field_error(field, options))
|
35
41
|
@template.text_field_tag field_name(field), options
|
36
42
|
end
|
37
43
|
|
38
44
|
# f.text_area :summary, :value => "(enter summary)", :id => 'summary'
|
39
45
|
def text_area(field, options={})
|
40
|
-
options.reverse_merge!(:value => field_value(field), :id => field_id(field)
|
46
|
+
options.reverse_merge!(:value => field_value(field), :id => field_id(field))
|
47
|
+
options.merge!(:class => field_error(field, options))
|
41
48
|
@template.text_area_tag field_name(field), options
|
42
49
|
end
|
43
50
|
|
44
51
|
# f.password_field :password, :id => 'password'
|
45
52
|
def password_field(field, options={})
|
46
|
-
options.reverse_merge!(:value => field_value(field), :id => field_id(field)
|
53
|
+
options.reverse_merge!(:value => field_value(field), :id => field_id(field))
|
54
|
+
options.merge!(:class => field_error(field, options))
|
47
55
|
@template.password_field_tag field_name(field), options
|
48
56
|
end
|
49
57
|
|
50
58
|
# f.select :color, :options => ['red', 'green'], :include_blank => true
|
51
59
|
# f.select :color, :collection => @colors, :fields => [:name, :id]
|
52
60
|
def select(field, options={})
|
53
|
-
options.reverse_merge!(:id => field_id(field), :selected => field_value(field)
|
61
|
+
options.reverse_merge!(:id => field_id(field), :selected => field_value(field))
|
62
|
+
options.merge!(:class => field_error(field, options))
|
54
63
|
@template.select_tag field_name(field), options
|
55
64
|
end
|
56
65
|
|
@@ -72,7 +81,8 @@ module Padrino
|
|
72
81
|
|
73
82
|
# f.file_field :photo, :class => 'avatar'
|
74
83
|
def file_field(field, options={})
|
75
|
-
options.reverse_merge!(:id => field_id(field)
|
84
|
+
options.reverse_merge!(:id => field_id(field))
|
85
|
+
options.merge!(:class => field_error(field, options))
|
76
86
|
@template.file_field_tag field_name(field), options
|
77
87
|
end
|
78
88
|
|
@@ -110,9 +120,12 @@ module Padrino
|
|
110
120
|
@object && @object.respond_to?(field) ? @object.send(field) : ""
|
111
121
|
end
|
112
122
|
|
123
|
+
# Add a :invalid css class to the field if it contain an error
|
113
124
|
def field_error(field, options)
|
114
|
-
if @object && @object.respond_to?(:errors) && @object.errors.respond_to?(:
|
115
|
-
[
|
125
|
+
if @object && @object.respond_to?(:errors) && @object.errors.respond_to?(:[]) && @object.errors[field]
|
126
|
+
[options[:class], :invalid].flatten.compact.join(" ")
|
127
|
+
else
|
128
|
+
options[:class]
|
116
129
|
end
|
117
130
|
end
|
118
131
|
|
@@ -38,13 +38,30 @@ module Padrino
|
|
38
38
|
# form_tag '/register' do ... end
|
39
39
|
#
|
40
40
|
def form_tag(url, options={}, &block)
|
41
|
+
desired_method = options[:method]
|
42
|
+
options.delete(:method) if options[:method].to_s !~ /get|post/i
|
41
43
|
options.reverse_merge!(:method => 'post', :action => url)
|
42
44
|
options[:enctype] = "multipart/form-data" if options.delete(:multipart)
|
43
45
|
options["data-remote"] = "true" if options.delete(:remote)
|
44
|
-
inner_form_html = hidden_form_method_field(
|
46
|
+
inner_form_html = hidden_form_method_field(desired_method) + capture_html(&block)
|
45
47
|
concat_content content_tag('form', inner_form_html, options)
|
46
48
|
end
|
47
49
|
|
50
|
+
##
|
51
|
+
# Returns the hidden method field for 'put' and 'delete' forms
|
52
|
+
# Only 'get' and 'post' are allowed within browsers;
|
53
|
+
# 'put' and 'delete' are just specified using hidden fields with form action still 'put'.
|
54
|
+
#
|
55
|
+
# ==== Examples
|
56
|
+
#
|
57
|
+
# # Generate: <input name="_method" value="delete" />
|
58
|
+
# hidden_form_method_field('delete')
|
59
|
+
#
|
60
|
+
def hidden_form_method_field(desired_method)
|
61
|
+
return '' if desired_method.blank? || desired_method.to_s =~ /get|post/i
|
62
|
+
hidden_field_tag(:_method, :value => desired_method)
|
63
|
+
end
|
64
|
+
|
48
65
|
##
|
49
66
|
# Constructs a field_set to group fields with given options
|
50
67
|
#
|
@@ -124,6 +141,38 @@ module Padrino
|
|
124
141
|
end
|
125
142
|
end
|
126
143
|
|
144
|
+
##
|
145
|
+
# Returns a string containing the error message attached to the +method+ on the +object+ if one exists.
|
146
|
+
#
|
147
|
+
# ==== Options
|
148
|
+
#
|
149
|
+
# :tag:: The tag that enclose your error. (Default 'div')
|
150
|
+
# :prepend:: Text to add before error.
|
151
|
+
# :append:: Text to add after error.
|
152
|
+
#
|
153
|
+
# ==== Examples
|
154
|
+
#
|
155
|
+
# # => <span class="error">can't be blank</div>
|
156
|
+
# error_message_on :post, :title
|
157
|
+
#
|
158
|
+
# # => <div class="custom" style="border:1px solid red">can't be blank</div>
|
159
|
+
# error_message_on :post, :title, :tag => :id, :class => :custom, :style => "border:1px solid red"
|
160
|
+
#
|
161
|
+
# # => <div class="error">This title can't be blank (or it won't work)</div>
|
162
|
+
# error_message_on :post, :title, :prepend => "This title", :append => "(or it won't work)"
|
163
|
+
#
|
164
|
+
def error_message_on(object, field, options={})
|
165
|
+
object = instance_variable_get("@#{object}")
|
166
|
+
if object && object.respond_to?(:errors) && object.errors.respond_to?(:[]) && object.errors[field]
|
167
|
+
options.reverse_merge!(:tag => :span, :class => :error)
|
168
|
+
tag = options.delete(:tag)
|
169
|
+
error = [options.delete(:prepend), Array(object.errors[field]).first, options.delete(:append)].compact.join(" ")
|
170
|
+
content_tag(tag, error, options)
|
171
|
+
else
|
172
|
+
''
|
173
|
+
end
|
174
|
+
end
|
175
|
+
|
127
176
|
##
|
128
177
|
# Constructs a label tag from the given options
|
129
178
|
#
|
@@ -303,23 +352,6 @@ module Padrino
|
|
303
352
|
end
|
304
353
|
end
|
305
354
|
|
306
|
-
##
|
307
|
-
# Returns the hidden method field for 'put' and 'delete' forms
|
308
|
-
# Only 'get' and 'post' are allowed within browsers;
|
309
|
-
# 'put' and 'delete' are just specified using hidden fields with form action still 'put'.
|
310
|
-
#
|
311
|
-
# ==== Examples
|
312
|
-
#
|
313
|
-
# # Generate: <input name="_method" value="delete" />
|
314
|
-
# hidden_form_method_field('delete')
|
315
|
-
#
|
316
|
-
def hidden_form_method_field(desired_method)
|
317
|
-
return '' if (desired_method.to_s =~ /get|post/)
|
318
|
-
original_method = desired_method.to_s.dup
|
319
|
-
desired_method.to_s.replace('post')
|
320
|
-
hidden_field_tag(:_method, :value => original_method)
|
321
|
-
end
|
322
|
-
|
323
355
|
private
|
324
356
|
##
|
325
357
|
# Returns the FormBuilder class to use based on all available setting sources
|
@@ -49,16 +49,17 @@ module Padrino
|
|
49
49
|
end
|
50
50
|
|
51
51
|
##
|
52
|
-
# Capture a block of content to be rendered at a later time.
|
52
|
+
# Capture a block or text of content to be rendered at a later time.
|
53
53
|
# Your blocks can also receive values, which are passed to them by <tt>yield_content</tt>
|
54
54
|
#
|
55
55
|
# ==== Examples
|
56
56
|
#
|
57
57
|
# content_for(:name) { ...content... }
|
58
58
|
# content_for(:name) { |name| ...content... }
|
59
|
+
# content_for(:name, "I'm Jeff")
|
59
60
|
#
|
60
|
-
def content_for(key, &block)
|
61
|
-
content_blocks[key.to_sym] << block
|
61
|
+
def content_for(key, content = nil, &block)
|
62
|
+
content_blocks[key.to_sym] << (block_given? ? block : Proc.new { content })
|
62
63
|
end
|
63
64
|
|
64
65
|
##
|
@@ -70,9 +71,12 @@ module Padrino
|
|
70
71
|
#
|
71
72
|
# yield_content :include
|
72
73
|
# yield_content :head, "param1", "param2"
|
74
|
+
# yield_content(:title) || "My page title"
|
73
75
|
#
|
74
76
|
def yield_content(key, *args)
|
75
|
-
content_blocks[key.to_sym]
|
77
|
+
blocks = content_blocks[key.to_sym]
|
78
|
+
return nil if blocks.empty?
|
79
|
+
blocks.map { |content|
|
76
80
|
capture_html(*args, &content)
|
77
81
|
}.join
|
78
82
|
end
|
@@ -0,0 +1,21 @@
|
|
1
|
+
module Padrino
|
2
|
+
module Helpers
|
3
|
+
module TranslationHelpers
|
4
|
+
##
|
5
|
+
# Delegates to I18n.translate with no additional functionality.
|
6
|
+
#
|
7
|
+
def translate(*args)
|
8
|
+
I18n.translate(*args)
|
9
|
+
end
|
10
|
+
alias :t :translate
|
11
|
+
|
12
|
+
##
|
13
|
+
# Delegates to I18n.localize with no additional functionality.
|
14
|
+
#
|
15
|
+
def localize(*args)
|
16
|
+
I18n.localize(*args)
|
17
|
+
end
|
18
|
+
alias :l :localize
|
19
|
+
end # TranslationHelpers
|
20
|
+
end # Helpers
|
21
|
+
end # Padrino
|
data/padrino-helpers.gemspec
CHANGED
@@ -5,11 +5,11 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = %q{padrino-helpers}
|
8
|
-
s.version = "0.
|
8
|
+
s.version = "0.9.0"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
11
|
s.authors = ["Padrino Team", "Nathan Esquenazi", "Davide D'Agostino", "Arthur Chiu"]
|
12
|
-
s.date = %q{2010-02-
|
12
|
+
s.date = %q{2010-02-23}
|
13
13
|
s.description = %q{Tag helpers, asset helpers, form helpers, form builders and many more helpers for padrino}
|
14
14
|
s.email = %q{padrinorb@gmail.com}
|
15
15
|
s.extra_rdoc_files = [
|
@@ -35,6 +35,7 @@ Gem::Specification.new do |s|
|
|
35
35
|
"lib/padrino-helpers/output_helpers.rb",
|
36
36
|
"lib/padrino-helpers/render_helpers.rb",
|
37
37
|
"lib/padrino-helpers/tag_helpers.rb",
|
38
|
+
"lib/padrino-helpers/translation_helpers.rb",
|
38
39
|
"padrino-helpers.gemspec",
|
39
40
|
"test/fixtures/markup_app/app.rb",
|
40
41
|
"test/fixtures/markup_app/views/capture_concat.erb",
|
@@ -83,14 +84,14 @@ Gem::Specification.new do |s|
|
|
83
84
|
s.specification_version = 3
|
84
85
|
|
85
86
|
if Gem::Version.new(Gem::RubyGemsVersion) >= Gem::Version.new('1.2.0') then
|
86
|
-
s.add_runtime_dependency(%q<padrino-core>, ["= 0.
|
87
|
+
s.add_runtime_dependency(%q<padrino-core>, ["= 0.9.0"])
|
87
88
|
s.add_development_dependency(%q<haml>, [">= 2.2.1"])
|
88
89
|
s.add_development_dependency(%q<shoulda>, [">= 2.10.3"])
|
89
90
|
s.add_development_dependency(%q<mocha>, [">= 0.9.7"])
|
90
91
|
s.add_development_dependency(%q<rack-test>, [">= 0.5.0"])
|
91
92
|
s.add_development_dependency(%q<webrat>, [">= 0.5.1"])
|
92
93
|
else
|
93
|
-
s.add_dependency(%q<padrino-core>, ["= 0.
|
94
|
+
s.add_dependency(%q<padrino-core>, ["= 0.9.0"])
|
94
95
|
s.add_dependency(%q<haml>, [">= 2.2.1"])
|
95
96
|
s.add_dependency(%q<shoulda>, [">= 2.10.3"])
|
96
97
|
s.add_dependency(%q<mocha>, [">= 0.9.7"])
|
@@ -98,7 +99,7 @@ Gem::Specification.new do |s|
|
|
98
99
|
s.add_dependency(%q<webrat>, [">= 0.5.1"])
|
99
100
|
end
|
100
101
|
else
|
101
|
-
s.add_dependency(%q<padrino-core>, ["= 0.
|
102
|
+
s.add_dependency(%q<padrino-core>, ["= 0.9.0"])
|
102
103
|
s.add_dependency(%q<haml>, [">= 2.2.1"])
|
103
104
|
s.add_dependency(%q<shoulda>, [">= 2.10.3"])
|
104
105
|
s.add_dependency(%q<mocha>, [">= 0.9.7"])
|
@@ -55,7 +55,7 @@ end
|
|
55
55
|
|
56
56
|
class Errors < Array
|
57
57
|
def initialize; self << [:fake, :second, :third]; end
|
58
|
-
def
|
58
|
+
def [](fake); true if fake == :email; end
|
59
59
|
def full_messages
|
60
60
|
["This is a fake error", "This is a second fake error", "This is a third fake error"]
|
61
61
|
end
|
@@ -14,7 +14,7 @@ class TestAssetTagHelpers < Test::Unit::TestCase
|
|
14
14
|
|
15
15
|
context 'for #flash_tag method' do
|
16
16
|
should "display flash with no given attributes" do
|
17
|
-
assert_has_tag('div.
|
17
|
+
assert_has_tag('div.notice', :content => "Demo notice") { flash_tag(:notice) }
|
18
18
|
end
|
19
19
|
should "display flash with given attributes" do
|
20
20
|
actual_html = flash_tag(:notice, :class => 'notice', :id => 'notice-area')
|
@@ -202,4 +202,24 @@ class TestAssetTagHelpers < Test::Unit::TestCase
|
|
202
202
|
assert_has_tag('script', :src => "http://google.com/lib.js") { actual_html }
|
203
203
|
end
|
204
204
|
end
|
205
|
+
|
206
|
+
context "for #favicon_tag method" do
|
207
|
+
should "display favicon" do
|
208
|
+
time = stop_time_for_test
|
209
|
+
actual_html = favicon_tag('images/favicon.png')
|
210
|
+
assert_has_tag('link', :rel => 'icon', :type => 'image/png', :href => 'images/favicon.png') { actual_html }
|
211
|
+
end
|
212
|
+
should "match type with file ext" do
|
213
|
+
time = stop_time_for_test
|
214
|
+
actual_html = favicon_tag('images/favicon.ico')
|
215
|
+
assert_has_tag('link', :rel => 'icon', :type => 'image/ico', :href => 'images/favicon.ico') { actual_html }
|
216
|
+
end
|
217
|
+
should "allow option overrides" do
|
218
|
+
time = stop_time_for_test
|
219
|
+
actual_html = favicon_tag('images/favicon.png', :type => 'image/ico')
|
220
|
+
assert_has_tag('link', :rel => 'icon', :type => 'image/ico', :href => 'images/favicon.png') { actual_html }
|
221
|
+
end
|
222
|
+
|
223
|
+
end
|
224
|
+
|
205
225
|
end
|
data/test/test_form_builder.rb
CHANGED
@@ -9,7 +9,7 @@ class TestFormBuilder < Test::Unit::TestCase
|
|
9
9
|
end
|
10
10
|
|
11
11
|
def setup
|
12
|
-
error_stub = stub(:full_messages => ["1", "2"], :count => 2)
|
12
|
+
error_stub = stub(:full_messages => ["1", "2"], :count => 2, :[] => [])
|
13
13
|
role_types = [stub(:name => 'Admin', :id => 1), stub(:name => 'Moderate', :id => 2), stub(:name => 'Limited', :id => 3)]
|
14
14
|
@user = stub(:errors => error_stub, :class => 'User', :first_name => "Joe", :session_id => 54)
|
15
15
|
@user.stubs(:role_types => role_types, :role => "1")
|
@@ -143,7 +143,7 @@ class TestFormBuilder < Test::Unit::TestCase
|
|
143
143
|
assert_have_selector '#demo div.field-errors ul li', :content => "This is a fake error"
|
144
144
|
assert_have_selector '#demo2 div.field-errors h2', :content => "custom MarkupUser cannot be saved!"
|
145
145
|
assert_have_selector '#demo2 div.field-errors ul li', :content => "This is a fake error"
|
146
|
-
assert_have_selector '#demo input', :name => 'markup_user[email]', :class => '
|
146
|
+
assert_have_selector '#demo input', :name => 'markup_user[email]', :class => 'invalid'
|
147
147
|
end
|
148
148
|
|
149
149
|
should "display correct form in erb" do
|
@@ -152,7 +152,7 @@ class TestFormBuilder < Test::Unit::TestCase
|
|
152
152
|
assert_have_selector '#demo div.field-errors ul li', :content => "This is a fake error"
|
153
153
|
assert_have_selector '#demo2 div.field-errors h2', :content => "custom MarkupUser cannot be saved!"
|
154
154
|
assert_have_selector '#demo2 div.field-errors ul li', :content => "This is a fake error"
|
155
|
-
assert_have_selector '#demo input', :name => 'markup_user[email]', :class => '
|
155
|
+
assert_have_selector '#demo input', :name => 'markup_user[email]', :class => 'invalid'
|
156
156
|
end
|
157
157
|
end
|
158
158
|
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: padrino-helpers
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.9.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Padrino Team
|
@@ -12,7 +12,7 @@ autorequire:
|
|
12
12
|
bindir: bin
|
13
13
|
cert_chain: []
|
14
14
|
|
15
|
-
date: 2010-02-
|
15
|
+
date: 2010-02-23 00:00:00 -08:00
|
16
16
|
default_executable:
|
17
17
|
dependencies:
|
18
18
|
- !ruby/object:Gem::Dependency
|
@@ -23,7 +23,7 @@ dependencies:
|
|
23
23
|
requirements:
|
24
24
|
- - "="
|
25
25
|
- !ruby/object:Gem::Version
|
26
|
-
version: 0.
|
26
|
+
version: 0.9.0
|
27
27
|
version:
|
28
28
|
- !ruby/object:Gem::Dependency
|
29
29
|
name: haml
|
@@ -103,6 +103,7 @@ files:
|
|
103
103
|
- lib/padrino-helpers/output_helpers.rb
|
104
104
|
- lib/padrino-helpers/render_helpers.rb
|
105
105
|
- lib/padrino-helpers/tag_helpers.rb
|
106
|
+
- lib/padrino-helpers/translation_helpers.rb
|
106
107
|
- padrino-helpers.gemspec
|
107
108
|
- test/fixtures/markup_app/app.rb
|
108
109
|
- test/fixtures/markup_app/views/capture_concat.erb
|