validatious-on-rails 0.3.6 → 0.3.7
Sign up to get free protection for your applications and to get access to all the features.
data/Rakefile
CHANGED
@@ -7,12 +7,12 @@ require 'rake/rdoctask'
|
|
7
7
|
NAME = "validatious-on-rails"
|
8
8
|
SUMMARY = %Q{Rails plugin that maps model validations to class names on form elements to integrate with Validatious.}
|
9
9
|
HOMEPAGE = "http://github.com/grimen/#{NAME}"
|
10
|
-
AUTHORS = ["
|
11
|
-
EMAIL = "
|
10
|
+
AUTHORS = ["Jonas Grimfelt", "Christian Johansen"]
|
11
|
+
EMAIL = "grimen@gmail.com"
|
12
12
|
SUPPORT_FILES = %w(README)
|
13
13
|
|
14
14
|
begin
|
15
|
-
gem '
|
15
|
+
gem 'jeweler', '>= 1.2.1'
|
16
16
|
require 'jeweler'
|
17
17
|
Jeweler::Tasks.new do |gemspec|
|
18
18
|
gemspec.name = NAME
|
@@ -1,6 +1,12 @@
|
|
1
1
|
module ValidatiousOnRails
|
2
2
|
module Helpers
|
3
3
|
|
4
|
+
def self.included(base)
|
5
|
+
base.class_eval do
|
6
|
+
extend ClassMethods
|
7
|
+
end
|
8
|
+
end
|
9
|
+
|
4
10
|
def attach_validator_for(object_name, method, options = {})
|
5
11
|
options = ::ValidatiousOnRails::ModelValidations.options_for(object_name, method, options, @content_for_validatious)
|
6
12
|
custom_js = options.delete(:js)
|
@@ -30,6 +36,19 @@ module ValidatiousOnRails
|
|
30
36
|
return args, tail
|
31
37
|
end
|
32
38
|
|
39
|
+
module ClassMethods
|
40
|
+
|
41
|
+
def define_with_validatious_support(field_type)
|
42
|
+
define_method :"#{field_type}_with_validation" do |*args|
|
43
|
+
args, tail = ::ValidatiousOnRails::Helpers.extract_args!(*args)
|
44
|
+
options = self.attach_validator_for(args.first, args.second, args.extract_options!)
|
45
|
+
self.send :"#{field_type}_without_validation", *((args << options) + tail)
|
46
|
+
end
|
47
|
+
alias_method_chain field_type, :validation
|
48
|
+
end
|
49
|
+
|
50
|
+
end
|
51
|
+
|
33
52
|
end
|
34
53
|
end
|
35
54
|
|
@@ -16,55 +16,40 @@ module ActionView # :nodoc:
|
|
16
16
|
# so the hooking of these helpers don't have to be very explicit.
|
17
17
|
#
|
18
18
|
FIELD_TYPES.each do |field_type|
|
19
|
-
|
20
|
-
args, tail = ::ValidatiousOnRails::Helpers.extract_args!(*args)
|
21
|
-
options = self.attach_validator_for(args.first, args.second, args.extract_options!)
|
22
|
-
self.send :"#{field_type}_without_validation", *((args << options) + tail)
|
23
|
-
end
|
24
|
-
alias_method_chain field_type, :validation
|
19
|
+
define_with_validatious_support(field_type)
|
25
20
|
end
|
26
21
|
|
27
22
|
# Adds the title attribute to label tags when there is no title
|
28
23
|
# set, and the label text is provided. The title is set to object_name.humanize
|
29
24
|
#
|
30
25
|
def label_with_title(object_name, method, text = nil, options = {})
|
31
|
-
options[:title] ||= method.to_s
|
26
|
+
options[:title] ||= object_name.to_s.classify.constantize.human_attribute_name(method.to_s) unless text.nil?
|
32
27
|
label_without_title(object_name, method, text, options)
|
33
28
|
end
|
34
29
|
alias_method_chain :label, :title
|
35
30
|
|
36
31
|
end
|
37
32
|
|
38
|
-
module FormOptionsHelper
|
33
|
+
module FormOptionsHelper # :nodoc:
|
39
34
|
|
40
35
|
include ::ValidatiousOnRails::Helpers
|
41
36
|
|
42
|
-
FIELD_TYPES = [:time_zone_select, :select, :collection_select, :
|
37
|
+
FIELD_TYPES = [:time_zone_select, :select, :collection_select, :grouped_collection_select].freeze
|
43
38
|
|
44
39
|
FIELD_TYPES.each do |field_type|
|
45
|
-
|
46
|
-
args, tail = ::ValidatiousOnRails::Helpers.extract_args!(*args)
|
47
|
-
options = self.attach_validator_for(args.first, args.second, args.extract_options!)
|
48
|
-
self.send :"#{field_type}_without_validation", *((args << options) + tail)
|
49
|
-
end
|
50
|
-
alias_method_chain field_type, :validation
|
40
|
+
define_with_validatious_support(field_type)
|
51
41
|
end
|
52
42
|
|
53
43
|
end
|
54
44
|
|
55
|
-
module DateHelper
|
45
|
+
module DateHelper # :nodoc:
|
56
46
|
|
57
47
|
include ::ValidatiousOnRails::Helpers
|
58
48
|
|
59
49
|
FIELD_TYPES = [:date_select, :datetime_select, :time_select].freeze
|
60
50
|
|
61
51
|
FIELD_TYPES.each do |field_type|
|
62
|
-
|
63
|
-
args, tail = ::ValidatiousOnRails::Helpers.extract_args!(*args)
|
64
|
-
options = self.attach_validator_for(args.first, args.second, args.extract_options!)
|
65
|
-
self.send :"#{field_type}_without_validation", *((args << options) + tail)
|
66
|
-
end
|
67
|
-
alias_method_chain field_type, :validation
|
52
|
+
define_with_validatious_support(field_type)
|
68
53
|
end
|
69
54
|
|
70
55
|
end
|
data/test/test_helper.rb
CHANGED
@@ -52,6 +52,8 @@ build_model :bogus_items do
|
|
52
52
|
string :url
|
53
53
|
string :name
|
54
54
|
string :email
|
55
|
+
string :file_path
|
56
|
+
string :dummie
|
55
57
|
|
56
58
|
text :body
|
57
59
|
integer :variant
|
@@ -61,7 +63,7 @@ build_model :bogus_items do
|
|
61
63
|
string :field_with_client_side_validations
|
62
64
|
string :field_without_client_side_validations
|
63
65
|
|
64
|
-
validates_presence_of :name, :body, :variant
|
66
|
+
validates_presence_of :name, :body, :variant, :file_path, :dummie
|
65
67
|
validates_confirmation_of :name
|
66
68
|
validates_acceptance_of :signed, :accept => true
|
67
69
|
validates_format_of :url,
|
@@ -88,3 +90,20 @@ RAILS_ROOT = File.join(File.dirname(__FILE__)) unless defined?(RAILS_ROOT)
|
|
88
90
|
# Log file for testing only.
|
89
91
|
#
|
90
92
|
ActiveRecord::Base.logger = Logger.new(File.join(File.dirname(__FILE__), 'debug.log'))
|
93
|
+
|
94
|
+
module Test::Unit::Assertions
|
95
|
+
|
96
|
+
#
|
97
|
+
# Assert that a piece of HTML includes the class name.
|
98
|
+
#
|
99
|
+
def assert_has_class(class_name, html, message = nil)
|
100
|
+
# Might need to consider this...but works a bit better.
|
101
|
+
classes = html.scan(/class="([^"]*)"/).collect { |c| c.to_s.split(' ') }.flatten
|
102
|
+
full_message = build_message(message, "<?>\nexpected to include class(es) <?>.\n", html, class_name)
|
103
|
+
|
104
|
+
assert_block(full_message) do
|
105
|
+
class_name.split(' ').all? { |cname| classes.include?(cname) }
|
106
|
+
end
|
107
|
+
end
|
108
|
+
|
109
|
+
end
|
@@ -1,162 +1,253 @@
|
|
1
1
|
# encoding: utf-8
|
2
2
|
require File.expand_path(File.join(File.dirname(__FILE__), *%w(.. .. test_helper)))
|
3
3
|
|
4
|
-
module Test::Unit::Assertions
|
5
|
-
|
6
|
-
#
|
7
|
-
# Assert that a piece of HTML includes the class name.
|
8
|
-
#
|
9
|
-
def assert_has_class(class_name, html, message = nil)
|
10
|
-
# Might need to consider this...but works a bit better.
|
11
|
-
classes = html.scan(/class="([^"]*)"/).collect { |c| c.to_s.split(' ') }.flatten
|
12
|
-
full_message = build_message(message, "<?>\nexpected to include class(es) <?>.\n", html, class_name)
|
13
|
-
|
14
|
-
assert_block(full_message) do
|
15
|
-
class_name.split(' ').all? { |cname| classes.include?(cname) }
|
16
|
-
end
|
17
|
-
end
|
18
|
-
|
19
|
-
end
|
20
|
-
|
21
4
|
require 'action_view/test_case'
|
22
5
|
|
23
6
|
class FormHelperTest < ::ActionView::TestCase
|
24
7
|
|
25
|
-
include ActionView::Helpers::FormHelper
|
8
|
+
include ::ActionView::Helpers::FormHelper
|
9
|
+
include ::ActiveSupport
|
26
10
|
|
27
|
-
|
11
|
+
before do
|
28
12
|
@bogus_item = BogusItem.new
|
29
13
|
end
|
30
14
|
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
15
|
+
context "layout" do
|
16
|
+
test "attach custom javascript validations to layout" do
|
17
|
+
@content_for_validatious = nil
|
18
|
+
view_output = form_for(@bogus_item, :url => '/bogus_items') do |f|
|
19
|
+
concat f.text_field(:url)
|
20
|
+
end
|
21
|
+
assert_match /v2.Validator/, @content_for_validatious
|
35
22
|
end
|
36
|
-
assert_match /v2.Validator/, @content_for_validatious
|
37
23
|
end
|
38
24
|
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
25
|
+
context "field class names" do
|
26
|
+
context "form helpers" do
|
27
|
+
test ":text_field" do
|
28
|
+
# Using helper
|
29
|
+
assert_has_class 'presence', text_field(:bogus_item, :name, {})
|
30
|
+
assert_has_class 'presence some_other_class', text_field(:bogus_item, :name, :class => 'some_other_class')
|
31
|
+
# Using builder
|
32
|
+
assert_has_class 'presence', form_for(@bogus_item, :url => '/bogus_items') { |f|
|
33
|
+
concat f.text_field(:name, {})
|
34
|
+
}
|
35
|
+
assert_has_class 'presence text', form_for(@bogus_item, :url => '/bogus_items') { |f|
|
36
|
+
concat f.text_field(:name, :class => 'text')
|
37
|
+
}
|
38
|
+
end
|
52
39
|
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
end
|
40
|
+
test ":password_field" do
|
41
|
+
# Using helper
|
42
|
+
assert_has_class 'presence', password_field(:bogus_item, :name, {})
|
43
|
+
assert_has_class 'presence some_other_class', password_field(:bogus_item, :name, :class => 'some_other_class')
|
44
|
+
# Using builder
|
45
|
+
assert_has_class 'presence', form_for(@bogus_item, :url => '/bogus_items') { |f|
|
46
|
+
concat f.password_field(:name, {})
|
47
|
+
}
|
48
|
+
assert_has_class 'presence some_other_class', form_for(@bogus_item, :url => '/bogus_items') { |f|
|
49
|
+
concat f.password_field(:name, :class => 'some_other_class')
|
50
|
+
}
|
51
|
+
end
|
66
52
|
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
end
|
53
|
+
test ":text_area" do
|
54
|
+
# Using helper
|
55
|
+
assert_has_class 'presence', text_area(:bogus_item, :body, {})
|
56
|
+
assert_has_class 'presence some_other_class', text_area(:bogus_item, :body, :class => 'some_other_class')
|
57
|
+
# Using builder
|
58
|
+
assert_has_class 'presence', form_for(@bogus_item, :url => '/bogus_items') { |f|
|
59
|
+
concat f.text_area(:body, {})
|
60
|
+
}
|
61
|
+
assert_has_class 'presence some_other_class', form_for(@bogus_item, :url => '/bogus_items') { |f|
|
62
|
+
concat f.text_area(:body, :class => 'some_other_class')
|
63
|
+
}
|
64
|
+
end
|
80
65
|
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
end
|
66
|
+
test ":check_box" do # a.k.a. "acceptance required"
|
67
|
+
# Using +helper+
|
68
|
+
assert_has_class 'acceptance-accept_true', check_box(:bogus_item, :signed, {}, '1', '0')
|
69
|
+
assert_has_class 'acceptance-accept_true some_other_class', check_box(:bogus_item, :signed, :class => 'some_other_class')
|
70
|
+
# Using builder
|
71
|
+
assert_has_class 'acceptance-accept_true', form_for(@bogus_item, :url => '/bogus_items') { |f|
|
72
|
+
concat f.check_box(:signed, {})
|
73
|
+
}
|
74
|
+
assert_has_class 'acceptance-accept_true some_other_class', form_for(@bogus_item, :url => '/bogus_items') { |f|
|
75
|
+
concat f.check_box(:signed, :class => 'some_other_class')
|
76
|
+
}
|
77
|
+
end
|
94
78
|
|
95
|
-
|
96
|
-
|
97
|
-
|
98
|
-
|
99
|
-
|
100
|
-
|
101
|
-
|
102
|
-
|
103
|
-
|
104
|
-
|
105
|
-
|
106
|
-
|
79
|
+
test ":radio_button" do
|
80
|
+
# Using helper
|
81
|
+
assert_has_class 'presence', radio_button(:bogus_item, :variant, 1, {})
|
82
|
+
assert_has_class 'presence some_other_class', radio_button(:bogus_item, :variant, 1, :class => 'some_other_class')
|
83
|
+
# Using builder
|
84
|
+
assert_has_class 'presence', form_for(@bogus_item, :url => '/bogus_items') { |f|
|
85
|
+
concat f.radio_button(:variant, 1, {})
|
86
|
+
}
|
87
|
+
assert_has_class 'presence some_other_class', form_for(@bogus_item, :url => '/bogus_items') { |f|
|
88
|
+
concat f.radio_button(:variant, 1, :class => 'some_other_class')
|
89
|
+
}
|
90
|
+
end
|
91
|
+
|
92
|
+
test ":file_field" do
|
93
|
+
# Using helper
|
94
|
+
assert_has_class 'presence', file_field(:bogus_item, :file_path, {})
|
95
|
+
assert_has_class 'presence some_other_class', file_field(:bogus_item, :file_path, :class => 'some_other_class')
|
96
|
+
# Using builder
|
97
|
+
assert_has_class 'presence', form_for(@bogus_item, :url => '/bogus_items') { |f|
|
98
|
+
concat f.file_field(:variant, {})
|
99
|
+
}
|
100
|
+
assert_has_class 'presence some_other_class', form_for(@bogus_item, :url => '/bogus_items') { |f|
|
101
|
+
concat f.file_field(:variant, :class => 'some_other_class')
|
102
|
+
}
|
103
|
+
end
|
104
|
+
end
|
107
105
|
|
108
|
-
|
109
|
-
|
110
|
-
|
111
|
-
|
112
|
-
|
113
|
-
|
114
|
-
|
115
|
-
|
116
|
-
|
117
|
-
|
118
|
-
|
119
|
-
|
120
|
-
|
106
|
+
context "form options fields" do
|
107
|
+
test ":select" do
|
108
|
+
# Using helper
|
109
|
+
assert_has_class 'presence', select(:bogus_item, :variant, [], {}, {})
|
110
|
+
assert_has_class 'presence some_other_class', select(:bogus_item, :variant, [], {}, :class => 'some_other_class')
|
111
|
+
# Using builder
|
112
|
+
assert_has_class 'presence', form_for(@bogus_item, :url => '/bogus_items') { |f|
|
113
|
+
concat f.select(:variant, [], {}, {})
|
114
|
+
}
|
115
|
+
assert_has_class 'presence some_other_class', form_for(@bogus_item, :url => '/bogus_items') { |f|
|
116
|
+
concat f.select(:variant, [], {}, :class => 'some_other_class')
|
117
|
+
}
|
118
|
+
end
|
121
119
|
|
122
|
-
|
123
|
-
|
124
|
-
|
125
|
-
|
126
|
-
|
127
|
-
|
128
|
-
|
129
|
-
|
130
|
-
|
131
|
-
|
132
|
-
|
133
|
-
|
134
|
-
assert_match /v2.Validator\.add\(.*\{.*"url"/, @content_for_validatious
|
135
|
-
end
|
136
|
-
|
137
|
-
test "exclusion_of :variant field" do
|
138
|
-
# TODO
|
139
|
-
end
|
120
|
+
test ":collection_select" do
|
121
|
+
# Using helper
|
122
|
+
assert_has_class 'presence', collection_select(:bogus_item, :variant, [], :to_param, :to_s, {}, {})
|
123
|
+
assert_has_class 'presence some_other_class', collection_select(:bogus_item, :variant, [], :to_param, :to_s, {}, :class => 'some_other_class')
|
124
|
+
# Using builder
|
125
|
+
assert_has_class 'presence', form_for(@bogus_item, :url => '/bogus_items') { |f|
|
126
|
+
concat f.collection_select(:variant, [], :to_param, :to_s, {}, {})
|
127
|
+
}
|
128
|
+
assert_has_class 'presence some_other_class', form_for(@bogus_item, :url => '/bogus_items') { |f|
|
129
|
+
concat f.collection_select(:variant, [], :to_param, :to_s, {}, :class => 'some_other_class')
|
130
|
+
}
|
131
|
+
end
|
140
132
|
|
141
|
-
|
142
|
-
|
143
|
-
|
133
|
+
test ":grouped_collection_select" do
|
134
|
+
# Using helper
|
135
|
+
assert_has_class 'presence', grouped_collection_select(:bogus_item, :variant, [], :bogus_items, :name, :id, :name, {}, {})
|
136
|
+
assert_has_class 'presence some_other_class', grouped_collection_select(:bogus_item, :variant, [], :bogus_items, :name, :id, :name, {}, :class => 'some_other_class')
|
137
|
+
# Using builder
|
138
|
+
assert_has_class 'presence', form_for(@bogus_item, :url => '/bogus_items') { |f|
|
139
|
+
concat f.grouped_collection_select(:variant, [], :bogus_items, :name, :id, :name, {}, {})
|
140
|
+
}
|
141
|
+
assert_has_class 'presence some_other_class', form_for(@bogus_item, :url => '/bogus_items') { |f|
|
142
|
+
concat f.grouped_collection_select(:variant, [], :bogus_items, :name, :id, :name, {}, :class => 'some_other_class')
|
143
|
+
}
|
144
|
+
end
|
144
145
|
|
145
|
-
|
146
|
-
|
147
|
-
|
146
|
+
test ":time_zone_select" do
|
147
|
+
# Using helper
|
148
|
+
assert_has_class 'presence', time_zone_select(:bogus_item, :dummie, TimeZone.us_zones, {}, {})
|
149
|
+
assert_has_class 'presence some_other_class', time_zone_select(:bogus_item, :dummie, TimeZone.us_zones, {}, :class => 'some_other_class')
|
150
|
+
# Using builder
|
151
|
+
assert_has_class 'presence', form_for(@bogus_item, :url => '/bogus_items') { |f|
|
152
|
+
concat f.time_zone_select(:dummie, TimeZone.us_zones, {}, {})
|
153
|
+
}
|
154
|
+
assert_has_class 'presence some_other_class', form_for(@bogus_item, :url => '/bogus_items') { |f|
|
155
|
+
concat f.time_zone_select(:dummie, TimeZone.us_zones, {}, :class => 'some_other_class')
|
156
|
+
}
|
157
|
+
end
|
158
|
+
end
|
159
|
+
|
160
|
+
context "date helper fields" do
|
161
|
+
test ":datetime_select" do
|
162
|
+
# Using helper
|
163
|
+
assert_has_class 'presence', datetime_select(:bogus_item, :dummie, {}, {})
|
164
|
+
assert_has_class 'presence some_other_class', datetime_select(:bogus_item, :dummie, {}, :class => 'some_other_class')
|
165
|
+
# Using builder
|
166
|
+
assert_has_class 'presence', form_for(@bogus_item, :url => '/bogus_items') { |f|
|
167
|
+
concat f.datetime_select(:dummie, {}, {})
|
168
|
+
}
|
169
|
+
assert_has_class 'presence some_other_class', form_for(@bogus_item, :url => '/bogus_items') { |f|
|
170
|
+
concat f.datetime_select(:dummie, {}, :class => 'some_other_class')
|
171
|
+
}
|
172
|
+
end
|
173
|
+
|
174
|
+
test ":date_select" do
|
175
|
+
# Using helper
|
176
|
+
assert_has_class 'presence', date_select(:bogus_item, :dummie, {}, {})
|
177
|
+
assert_has_class 'presence some_other_class', date_select(:bogus_item, :dummie, {}, :class => 'some_other_class')
|
178
|
+
# Using builder
|
179
|
+
assert_has_class 'presence', form_for(@bogus_item, :url => '/bogus_items') { |f|
|
180
|
+
concat f.date_select(:dummie, {}, {})
|
181
|
+
}
|
182
|
+
assert_has_class 'presence some_other_class', form_for(@bogus_item, :url => '/bogus_items') { |f|
|
183
|
+
concat f.date_select(:dummie, {}, :class => 'some_other_class')
|
184
|
+
}
|
185
|
+
end
|
186
|
+
|
187
|
+
test ":time_select" do
|
188
|
+
# Using helper
|
189
|
+
assert_has_class 'presence', time_select(:bogus_item, :dummie, {}, {})
|
190
|
+
assert_has_class 'presence some_other_class', time_select(:bogus_item, :dummie, {}, :class => 'some_other_class')
|
191
|
+
# Using builder
|
192
|
+
assert_has_class 'presence', form_for(@bogus_item, :url => '/bogus_items') { |f|
|
193
|
+
concat f.time_select(:dummie, {}, {})
|
194
|
+
}
|
195
|
+
assert_has_class 'presence some_other_class', form_for(@bogus_item, :url => '/bogus_items') { |f|
|
196
|
+
concat f.time_select(:dummie, {}, :class => 'some_other_class')
|
197
|
+
}
|
198
|
+
end
|
199
|
+
end
|
148
200
|
end
|
149
201
|
|
150
|
-
|
151
|
-
|
152
|
-
|
153
|
-
|
202
|
+
context "validator types" do
|
203
|
+
test "confirmation_of" do
|
204
|
+
# Using helper
|
205
|
+
assert_has_class 'confirmation-of_name', text_field(:bogus_item, :name_confirmation, {})
|
206
|
+
assert_has_class 'confirmation-of_name some_other_class', text_field(:bogus_item, :name_confirmation, :class => 'some_other_class')
|
207
|
+
# Using builder
|
208
|
+
assert_has_class 'confirmation-of_name', form_for(@bogus_item, :url => '/bogus_items') { |f|
|
209
|
+
concat f.text_field(:name_confirmation, {})
|
210
|
+
}
|
211
|
+
assert_has_class 'confirmation-of_name some_other_class', form_for(@bogus_item, :url => '/bogus_items') { |f|
|
212
|
+
concat f.text_field(:name_confirmation, :class => 'some_other_class')
|
213
|
+
}
|
214
|
+
end
|
215
|
+
|
216
|
+
test "format_of" do
|
217
|
+
# Using helper
|
218
|
+
assert_has_class 'url', text_field(:bogus_item, :url, {})
|
219
|
+
assert_has_class 'url some_other_class', text_field(:bogus_item, :url, :class => 'some_other_class')
|
220
|
+
# Using builder
|
221
|
+
assert_has_class 'url', form_for(@bogus_item, :url => '/bogus_items') { |f|
|
222
|
+
concat f.text_field(:url, {})
|
223
|
+
}
|
224
|
+
assert_has_class 'url some_other_class', form_for(@bogus_item, :url => '/bogus_items') { |f|
|
225
|
+
concat f.text_field(:url, :class => 'some_other_class')
|
226
|
+
}
|
227
|
+
assert_match /v2.Validator\.add\(.*\{.*"url"/, @content_for_validatious
|
228
|
+
end
|
229
|
+
|
230
|
+
# TODO: The other validators...
|
154
231
|
end
|
155
232
|
|
156
|
-
|
157
|
-
|
158
|
-
|
159
|
-
|
233
|
+
# TODO: Re-visit label - needed still?
|
234
|
+
context "label" do
|
235
|
+
test "regular" do
|
236
|
+
# Using helper
|
237
|
+
assert_equal "<label for=\"bogus_item_name\">Name</label>", label(:bogus_item, :name)
|
238
|
+
end
|
239
|
+
|
240
|
+
test "with title" do
|
241
|
+
# Using helper
|
242
|
+
assert_equal "<label for=\"bogus_item_name\" title=\"craaazy\">Name</label>",
|
243
|
+
label(:bogus_item, :name, nil, :title => "craaazy")
|
244
|
+
end
|
245
|
+
|
246
|
+
test "without title" do
|
247
|
+
# Using helper
|
248
|
+
assert_equal "<label for=\"bogus_item_name\" title=\"Name\">Your name</label>",
|
249
|
+
label(:bogus_item, :name, "Your name")
|
250
|
+
end
|
160
251
|
end
|
161
252
|
|
162
253
|
private
|
metadata
CHANGED
@@ -1,21 +1,21 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: validatious-on-rails
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.3.
|
4
|
+
version: 0.3.7
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
|
-
- Christian Johansen
|
8
7
|
- Jonas Grimfelt
|
8
|
+
- Christian Johansen
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
12
|
|
13
|
-
date: 2009-10-
|
13
|
+
date: 2009-10-19 00:00:00 +02:00
|
14
14
|
default_executable:
|
15
15
|
dependencies: []
|
16
16
|
|
17
17
|
description: Rails plugin that maps model validations to class names on form elements to integrate with Validatious.
|
18
|
-
email:
|
18
|
+
email: grimen@gmail.com
|
19
19
|
executables: []
|
20
20
|
|
21
21
|
extensions: []
|