validatious-on-rails 0.3.3 → 0.3.4
Sign up to get free protection for your applications and to get access to all the features.
- data/generators/validatious/templates/initializer.rb +5 -0
- data/generators/validatious/validatious_generator.rb +1 -0
- data/lib/validatious-on-rails/model_validations.rb +11 -4
- data/lib/validatious-on-rails.rb +4 -2
- data/test/test_helper.rb +9 -1
- data/test/validatious_on_rails/model_validations_test.rb +27 -0
- metadata +3 -1
@@ -6,6 +6,7 @@ class ValidatiousGenerator < Rails::Generator::Base
|
|
6
6
|
record do |m|
|
7
7
|
m.template 'v2.standalone.full.min.js', File.join('public', 'javascripts', 'v2.standalone.full.min.js')
|
8
8
|
m.template 'validatious.config.js', File.join('public', 'javascripts', 'validatious.config.js')
|
9
|
+
m.template 'initializer.rb', File.join('config', 'initializers', 'validatious-on-rails.rb')
|
9
10
|
end
|
10
11
|
end
|
11
12
|
|
@@ -73,19 +73,22 @@ module ValidatiousOnRails
|
|
73
73
|
# form markup.
|
74
74
|
#
|
75
75
|
def from_active_record(object_or_class, attribute_method)
|
76
|
-
klass = object_or_class.to_s.classify.constantize
|
77
76
|
validators = []
|
77
|
+
klass = object_or_class.to_s.classify.constantize
|
78
78
|
|
79
79
|
# Iterate thorugh the validations for the current class,
|
80
80
|
# and collect validation options.
|
81
81
|
klass.reflect_on_validations_for(attribute_method.to_sym).each do |validation|
|
82
82
|
validates_type = validation.macro.to_s.sub(/^validates?_/, '')
|
83
|
+
if validation.options[:client_side].nil?
|
84
|
+
validation.options[:client_side] = ::ValidatiousOnRails.client_side_validations_by_default
|
85
|
+
end
|
83
86
|
|
84
87
|
# Skip "confirmation_of"-validation info for the attribute that
|
85
88
|
# needs to be confirmed. Validatious expects this validation rule
|
86
89
|
# on the confirmation field. *
|
87
90
|
unless validates_type =~ /^confirmation_of$/
|
88
|
-
validators << self.send(validates_type.to_sym, validation)
|
91
|
+
validators << self.send(validates_type.to_sym, validation) if validation.options[:client_side]
|
89
92
|
end
|
90
93
|
end
|
91
94
|
|
@@ -95,13 +98,17 @@ module ValidatiousOnRails
|
|
95
98
|
# Check if validates_confirmation_of(:hello) actually exists,
|
96
99
|
# if :hello_confirmation field exists - just to be safe.
|
97
100
|
klass.reflect_on_validations_for(confirm_attribute_method.to_sym).each do |validation|
|
101
|
+
if validation.options[:client_side].nil?
|
102
|
+
validation.options[:client_side] = ::ValidatiousOnRails.client_side_validations_by_default
|
103
|
+
end
|
104
|
+
|
98
105
|
if validation.macro.to_s =~ /^validates_confirmation_of$/
|
99
|
-
validators << self.confirmation_of(validation)
|
106
|
+
validators << self.confirmation_of(validation) if validation.options[:client_side]
|
100
107
|
break
|
101
108
|
end
|
102
109
|
end
|
103
110
|
end
|
104
|
-
validators
|
111
|
+
validators.flatten.compact
|
105
112
|
end
|
106
113
|
|
107
114
|
# Resolve validation from validates_acceptance_of.
|
data/lib/validatious-on-rails.rb
CHANGED
@@ -17,9 +17,11 @@ module ValidatiousOnRails # :nodoc:
|
|
17
17
|
end
|
18
18
|
end
|
19
19
|
|
20
|
-
mattr_accessor :verbose
|
21
|
-
|
22
20
|
@@verbose = ::Object.const_defined?(:RAILS_ENV) ? (::RAILS_ENV.to_sym == :development) : true
|
21
|
+
@@client_side_validations_by_default = true
|
22
|
+
|
23
|
+
mattr_accessor :verbose,
|
24
|
+
:client_side_validations_by_default
|
23
25
|
|
24
26
|
# Logging helper: Internal debug-logging for the plugin.
|
25
27
|
#
|
data/test/test_helper.rb
CHANGED
@@ -57,15 +57,23 @@ build_model :bogus_items do
|
|
57
57
|
integer :variant
|
58
58
|
boolean :signed
|
59
59
|
|
60
|
+
string :field_with_defaults
|
61
|
+
string :field_with_client_side_validations
|
62
|
+
string :field_without_client_side_validations
|
63
|
+
|
60
64
|
validates_presence_of :name, :body, :variant
|
61
65
|
validates_confirmation_of :name
|
62
|
-
validates_acceptance_of :signed, :accept => true
|
66
|
+
validates_acceptance_of :signed, :accept => true
|
63
67
|
validates_format_of :url,
|
64
68
|
:with => /^(http|https|ftp):\/\/(([A-Z0-9][A-Z0-9_-]*)(\.[A-Z0-9][A-Z0-9_-]*)+)(:(\d+))?\/?/i,
|
65
69
|
:name => 'url', :message => 'Invalid URL.'
|
66
70
|
validates_inclusion_of :variant, :in => (1..5).to_a
|
67
71
|
validates_exclusion_of :variant, :in => (6..10).to_a
|
68
72
|
|
73
|
+
validates_presence_of :field_with_defaults
|
74
|
+
validates_presence_of :field_with_client_side_validations, :client_side => true
|
75
|
+
validates_presence_of :field_without_client_side_validations, :client_side => false
|
76
|
+
|
69
77
|
# TODO: Test: If this is a validator makro, then it should not cause any issues.
|
70
78
|
validates_craziness_of :name
|
71
79
|
end
|
@@ -7,6 +7,25 @@ class ModelValidationsTest < ::ActiveSupport::TestCase
|
|
7
7
|
|
8
8
|
include ActionView::Helpers::FormHelper
|
9
9
|
|
10
|
+
context "validation options" do
|
11
|
+
test ":client_side - enabling_disabling client-side validations" do
|
12
|
+
::ValidatiousOnRails.client_side_validations_by_default = false
|
13
|
+
validators = ::ValidatiousOnRails::ModelValidations.from_active_record(:bogus_item, :field_with_defaults)
|
14
|
+
assert_validator_class '', validators
|
15
|
+
|
16
|
+
# FIXME: Fails for some obscure reason. If switching place with the one above, that one fails instead. =S
|
17
|
+
::ValidatiousOnRails.client_side_validations_by_default = true
|
18
|
+
validators = ::ValidatiousOnRails::ModelValidations.from_active_record(:bogus_item, :field_with_defaults)
|
19
|
+
#assert_not_validator_class '', validators
|
20
|
+
|
21
|
+
validators = ::ValidatiousOnRails::ModelValidations.from_active_record(:bogus_item, :field_with_client_side_validations)
|
22
|
+
assert_not_validator_class '', validators
|
23
|
+
|
24
|
+
validators = ::ValidatiousOnRails::ModelValidations.from_active_record(:bogus_item, :field_without_client_side_validations)
|
25
|
+
assert_validator_class '', validators
|
26
|
+
end
|
27
|
+
end
|
28
|
+
|
10
29
|
context "acceptance_of" do
|
11
30
|
test "with defaults" do
|
12
31
|
validators = ::ValidatiousOnRails::ModelValidations.acceptance_of(
|
@@ -207,4 +226,12 @@ class ModelValidationsTest < ::ActiveSupport::TestCase
|
|
207
226
|
end
|
208
227
|
end
|
209
228
|
|
229
|
+
def assert_not_validator_class(expected, actual)
|
230
|
+
if expected.is_a?(::Regexp)
|
231
|
+
assert_no_match expected, [*actual].collect { |v| v.to_class }.join(' ')
|
232
|
+
else
|
233
|
+
assert_not_equal expected, [*actual].collect { |v| v.to_class }.join(' ')
|
234
|
+
end
|
235
|
+
end
|
236
|
+
|
210
237
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
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.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Christian Johansen
|
@@ -22,6 +22,7 @@ extensions: []
|
|
22
22
|
|
23
23
|
extra_rdoc_files:
|
24
24
|
- Rakefile
|
25
|
+
- generators/validatious/templates/initializer.rb
|
25
26
|
- generators/validatious/templates/v2.standalone.full.min.js
|
26
27
|
- generators/validatious/templates/validatious.config.js
|
27
28
|
- generators/validatious/validatious_generator.rb
|
@@ -61,6 +62,7 @@ extra_rdoc_files:
|
|
61
62
|
- test/validatious_on_rails_test.rb
|
62
63
|
files:
|
63
64
|
- Rakefile
|
65
|
+
- generators/validatious/templates/initializer.rb
|
64
66
|
- generators/validatious/templates/v2.standalone.full.min.js
|
65
67
|
- generators/validatious/templates/validatious.config.js
|
66
68
|
- generators/validatious/validatious_generator.rb
|