validatious-on-rails 0.4.5 → 0.4.6
Sign up to get free protection for your applications and to get access to all the features.
- data/generators/validatious/templates/v2.rails.js +35 -0
- data/lib/validatious-on-rails/model_validations.rb +45 -32
- data/lib/validatious-on-rails/validatious/client_side_validator.rb +1 -1
- data/lib/validatious-on-rails/validatious/remote_validator.rb +4 -6
- data/lib/validatious-on-rails/validatious/validator.rb +48 -55
- data/lib/validatious-on-rails/validatious/validators/acceptance_accept_validator.rb +24 -0
- data/lib/validatious-on-rails/validatious/validators/confirmation_of_validator.rb +22 -0
- data/lib/validatious-on-rails/validatious/validators/exclusion_in_validator.rb +30 -0
- data/lib/validatious-on-rails/validatious/validators/format_with_validator.rb +27 -0
- data/lib/validatious-on-rails/validatious/validators/inclusion_in_validator.rb +30 -0
- data/lib/validatious-on-rails/validatious/validators/length/is_validator.rb +7 -10
- data/lib/validatious-on-rails/validatious/validators/length/maximum_validator.rb +6 -9
- data/lib/validatious-on-rails/validatious/validators/length/minimum_validator.rb +6 -9
- data/lib/validatious-on-rails/validatious/validators/numericality/equal_to_validator.rb +5 -7
- data/lib/validatious-on-rails/validatious/validators/numericality/even_validator.rb +5 -6
- data/lib/validatious-on-rails/validatious/validators/numericality/greater_than_or_equal_to_validator.rb +5 -7
- data/lib/validatious-on-rails/validatious/validators/numericality/greater_than_validator.rb +5 -7
- data/lib/validatious-on-rails/validatious/validators/numericality/less_than_or_equal_to_validator.rb +5 -7
- data/lib/validatious-on-rails/validatious/validators/numericality/less_than_validator.rb +5 -7
- data/lib/validatious-on-rails/validatious/validators/numericality/odd_validator.rb +5 -6
- data/lib/validatious-on-rails/validatious/validators/numericality/only_integer_validator.rb +6 -7
- data/lib/validatious-on-rails/validatious/validators/presence_validator.rb +4 -7
- data/lib/validatious-on-rails/validatious/validators/uniqueness_validator.rb +3 -10
- data/test/validatious_on_rails/controller_test.rb +1 -1
- data/test/validatious_on_rails/model_validations_test.rb +19 -19
- data/test/validatious_on_rails/rails/action_view_helpers_test.rb +11 -9
- data/test/validatious_on_rails/validatious/validator_test.rb +11 -11
- metadata +12 -12
- data/lib/validatious-on-rails/validatious/validators/acceptance_validator.rb +0 -28
- data/lib/validatious-on-rails/validatious/validators/confirmation_validator.rb +0 -23
- data/lib/validatious-on-rails/validatious/validators/exclusion_validator.rb +0 -28
- data/lib/validatious-on-rails/validatious/validators/format_validator.rb +0 -33
- data/lib/validatious-on-rails/validatious/validators/inclusion_validator.rb +0 -28
@@ -65,13 +65,13 @@ class FormHelperTest < ::ActionView::TestCase
|
|
65
65
|
|
66
66
|
test ":check_box" do # a.k.a. "acceptance required"
|
67
67
|
# Using +helper+
|
68
|
-
assert_has_class 'acceptance-
|
69
|
-
assert_has_class 'acceptance-
|
68
|
+
assert_has_class 'acceptance-accept_true_false', check_box(:bogus_item, :signed, {}, '1', '0')
|
69
|
+
assert_has_class 'acceptance-accept_true_false some_other_class', check_box(:bogus_item, :signed, :class => 'some_other_class')
|
70
70
|
# Using builder
|
71
|
-
assert_has_class 'acceptance-
|
71
|
+
assert_has_class 'acceptance-accept_true_false', form_for(@bogus_item, :url => '/bogus_items') { |f|
|
72
72
|
concat f.check_box(:signed, {})
|
73
73
|
}
|
74
|
-
assert_has_class 'acceptance-
|
74
|
+
assert_has_class 'acceptance-accept_true_false some_other_class', form_for(@bogus_item, :url => '/bogus_items') { |f|
|
75
75
|
concat f.check_box(:signed, :class => 'some_other_class')
|
76
76
|
}
|
77
77
|
end
|
@@ -214,17 +214,19 @@ class FormHelperTest < ::ActionView::TestCase
|
|
214
214
|
end
|
215
215
|
|
216
216
|
test "format_of" do
|
217
|
+
url_param_id = ValidatiousOnRails::Validatious::Validator.generate_id(/^(http|https|ftp):\/\/(([A-Z0-9][A-Z0-9_-]*)(\.[A-Z0-9][A-Z0-9_-]*)+)(:(\d+))?\/?/i.inspect)
|
218
|
+
validator_class = "format-with_#{url_param_id}_false_false"
|
217
219
|
# Using helper
|
218
|
-
assert_has_class
|
219
|
-
assert_has_class
|
220
|
+
assert_has_class "#{validator_class}", text_field(:bogus_item, :url, {})
|
221
|
+
assert_has_class "#{validator_class} some_other_class", text_field(:bogus_item, :url, :class => 'some_other_class')
|
220
222
|
# Using builder
|
221
|
-
assert_has_class
|
223
|
+
assert_has_class "#{validator_class}", form_for(@bogus_item, :url => '/bogus_items') { |f|
|
222
224
|
concat f.text_field(:url, {})
|
223
225
|
}
|
224
|
-
assert_has_class
|
226
|
+
assert_has_class "#{validator_class} some_other_class", form_for(@bogus_item, :url => '/bogus_items') { |f|
|
225
227
|
concat f.text_field(:url, :class => 'some_other_class')
|
226
228
|
}
|
227
|
-
assert_match /v2.Validator\.add\(\{.*\"
|
229
|
+
assert_match /v2.Validator\.add\(\{.*\"format-with\"/m, @content_for_validatious
|
228
230
|
end
|
229
231
|
|
230
232
|
# TODO: The other validators...
|
@@ -6,8 +6,8 @@ require 'active_support/test_case'
|
|
6
6
|
class ValidatorTest < ::ActiveSupport::TestCase
|
7
7
|
|
8
8
|
def setup
|
9
|
-
@empty_validator = ValidatiousOnRails::Validatious::ClientSideValidator.new
|
10
|
-
@custom_validator = returning ValidatiousOnRails::Validatious::ClientSideValidator.new
|
9
|
+
@empty_validator = ValidatiousOnRails::Validatious::ClientSideValidator.new
|
10
|
+
@custom_validator = returning ValidatiousOnRails::Validatious::ClientSideValidator.new do |v|
|
11
11
|
v.message = 'Fail, fail, fail!'
|
12
12
|
v.params = ['some', 'params']
|
13
13
|
v.aliases = ['some', 'aliases']
|
@@ -17,26 +17,26 @@ class ValidatorTest < ::ActiveSupport::TestCase
|
|
17
17
|
end
|
18
18
|
|
19
19
|
test "creating an empty validator - and generate valid v2.Validator and class call" do
|
20
|
-
assert_equal '
|
20
|
+
assert_equal 'client-side', @empty_validator.name
|
21
21
|
assert_equal '', @empty_validator.message
|
22
22
|
assert_equal ([]), @empty_validator.params
|
23
23
|
assert_equal ([]), @empty_validator.aliases
|
24
|
-
assert_equal
|
24
|
+
assert_equal false, @empty_validator.accept_empty
|
25
25
|
assert_equal "function(field, value, params){return true;}", @empty_validator.fn
|
26
26
|
|
27
27
|
expected_v2_validator = 'v2.Validator.add({
|
28
|
-
acceptEmpty:
|
28
|
+
acceptEmpty: false,
|
29
29
|
fn: function(field, value, params){return true;},
|
30
|
-
name: "
|
30
|
+
name: "client-side"
|
31
31
|
});'
|
32
32
|
|
33
33
|
assert_equal @custom_validator.name, @custom_validator.to_class
|
34
34
|
assert_equal "#{@custom_validator.name}_1_hello_2", @custom_validator.to_class(1, "hello", 2)
|
35
|
-
assert_equal ::ValidatiousOnRails::Validatious::Validator.truncate_whitespace(expected_v2_validator), @empty_validator.to_js
|
35
|
+
assert_equal ::ValidatiousOnRails::Validatious::Validator.truncate_whitespace(expected_v2_validator), @empty_validator.to_js.strip
|
36
36
|
end
|
37
37
|
|
38
38
|
test "creating a custom validator - and generate valid v2.Validator and class call" do
|
39
|
-
assert_equal '
|
39
|
+
assert_equal 'client-side', @custom_validator.name
|
40
40
|
assert_equal 'Fail, fail, fail!', @custom_validator.message
|
41
41
|
assert_equal (["some", "params"]), @custom_validator.params
|
42
42
|
assert_equal (["some", "aliases"]), @custom_validator.aliases
|
@@ -48,13 +48,13 @@ class ValidatorTest < ::ActiveSupport::TestCase
|
|
48
48
|
aliases: ["some","aliases"],
|
49
49
|
fn: function(field, value, params){return false;},
|
50
50
|
message: "Fail, fail, fail!",
|
51
|
-
name: "
|
51
|
+
name: "client-side",
|
52
52
|
params: ["some","params"]
|
53
53
|
});'
|
54
54
|
|
55
55
|
assert_equal @custom_validator.name, @custom_validator.to_class
|
56
56
|
assert_equal "#{@custom_validator.name}_1_hello_2", @custom_validator.to_class(1, "hello", 2)
|
57
|
-
assert_equal ::ValidatiousOnRails::Validatious::Validator.truncate_whitespace(expected_v2_validator), @custom_validator.to_js
|
57
|
+
assert_equal ::ValidatiousOnRails::Validatious::Validator.truncate_whitespace(expected_v2_validator), @custom_validator.to_js.strip
|
58
58
|
end
|
59
59
|
|
60
60
|
context "Message" do
|
@@ -84,7 +84,7 @@ class ValidatorTest < ::ActiveSupport::TestCase
|
|
84
84
|
return true;
|
85
85
|
}
|
86
86
|
compact_fn = %{function(field, value, params){var duck_says = "Quack!";if (duck_says != "Quack!") {return (duck_says == "Quack! ${{interpolation}} Quack!");}return true;}}
|
87
|
-
assert_equal(compact_fn, duck_validator.fn)
|
87
|
+
assert_equal(compact_fn, duck_validator.fn.strip)
|
88
88
|
end
|
89
89
|
end
|
90
90
|
|
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.4.
|
4
|
+
version: 0.4.6
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Jonas Grimfelt
|
@@ -10,7 +10,7 @@ autorequire:
|
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
12
|
|
13
|
-
date: 2009-10-
|
13
|
+
date: 2009-10-29 00:00:00 +01:00
|
14
14
|
default_executable:
|
15
15
|
dependencies: []
|
16
16
|
|
@@ -41,11 +41,11 @@ extra_rdoc_files:
|
|
41
41
|
- lib/validatious-on-rails/validatious/remote_validator.rb
|
42
42
|
- lib/validatious-on-rails/validatious/validator.rb
|
43
43
|
- lib/validatious-on-rails/validatious/validators.rb
|
44
|
-
- lib/validatious-on-rails/validatious/validators/
|
45
|
-
- lib/validatious-on-rails/validatious/validators/
|
46
|
-
- lib/validatious-on-rails/validatious/validators/
|
47
|
-
- lib/validatious-on-rails/validatious/validators/
|
48
|
-
- lib/validatious-on-rails/validatious/validators/
|
44
|
+
- lib/validatious-on-rails/validatious/validators/acceptance_accept_validator.rb
|
45
|
+
- lib/validatious-on-rails/validatious/validators/confirmation_of_validator.rb
|
46
|
+
- lib/validatious-on-rails/validatious/validators/exclusion_in_validator.rb
|
47
|
+
- lib/validatious-on-rails/validatious/validators/format_with_validator.rb
|
48
|
+
- lib/validatious-on-rails/validatious/validators/inclusion_in_validator.rb
|
49
49
|
- lib/validatious-on-rails/validatious/validators/length/is_validator.rb
|
50
50
|
- lib/validatious-on-rails/validatious/validators/length/maximum_validator.rb
|
51
51
|
- lib/validatious-on-rails/validatious/validators/length/minimum_validator.rb
|
@@ -88,11 +88,11 @@ files:
|
|
88
88
|
- lib/validatious-on-rails/validatious/remote_validator.rb
|
89
89
|
- lib/validatious-on-rails/validatious/validator.rb
|
90
90
|
- lib/validatious-on-rails/validatious/validators.rb
|
91
|
-
- lib/validatious-on-rails/validatious/validators/
|
92
|
-
- lib/validatious-on-rails/validatious/validators/
|
93
|
-
- lib/validatious-on-rails/validatious/validators/
|
94
|
-
- lib/validatious-on-rails/validatious/validators/
|
95
|
-
- lib/validatious-on-rails/validatious/validators/
|
91
|
+
- lib/validatious-on-rails/validatious/validators/acceptance_accept_validator.rb
|
92
|
+
- lib/validatious-on-rails/validatious/validators/confirmation_of_validator.rb
|
93
|
+
- lib/validatious-on-rails/validatious/validators/exclusion_in_validator.rb
|
94
|
+
- lib/validatious-on-rails/validatious/validators/format_with_validator.rb
|
95
|
+
- lib/validatious-on-rails/validatious/validators/inclusion_in_validator.rb
|
96
96
|
- lib/validatious-on-rails/validatious/validators/length/is_validator.rb
|
97
97
|
- lib/validatious-on-rails/validatious/validators/length/maximum_validator.rb
|
98
98
|
- lib/validatious-on-rails/validatious/validators/length/minimum_validator.rb
|
@@ -1,28 +0,0 @@
|
|
1
|
-
# encoding: utf-8
|
2
|
-
require File.expand_path(File.join(File.dirname(__FILE__), *%w[.. validator]))
|
3
|
-
|
4
|
-
module ValidatiousOnRails
|
5
|
-
module Validatious
|
6
|
-
class AcceptanceValidator < ClientSideValidator
|
7
|
-
|
8
|
-
def initialize(validation, options = {})
|
9
|
-
name = 'acceptance-accept'
|
10
|
-
super name, options
|
11
|
-
self.message = self.class.generate_message(validation, :key => :accepted)
|
12
|
-
self.accept_empty = validation.options[:allow_nil]
|
13
|
-
self.fn = %{
|
14
|
-
var accept_value = params[0] + '';
|
15
|
-
if (accept_value == 'true') {
|
16
|
-
accept_value = true
|
17
|
-
};
|
18
|
-
if (accept_value == 'false') {
|
19
|
-
accept_value = false
|
20
|
-
};
|
21
|
-
return value == accept_value;
|
22
|
-
}
|
23
|
-
self.fn.freeze
|
24
|
-
end
|
25
|
-
|
26
|
-
end
|
27
|
-
end
|
28
|
-
end
|
@@ -1,23 +0,0 @@
|
|
1
|
-
# encoding: utf-8
|
2
|
-
require File.expand_path(File.join(File.dirname(__FILE__), *%w[.. validator]))
|
3
|
-
|
4
|
-
module ValidatiousOnRails
|
5
|
-
module Validatious
|
6
|
-
class ConfirmationValidator < ClientSideValidator
|
7
|
-
|
8
|
-
def initialize(validation, options = {})
|
9
|
-
name = 'confirmation-of'
|
10
|
-
super name, options
|
11
|
-
self.params = ['field-id']
|
12
|
-
self.message = self.class.generate_message(validation)
|
13
|
-
self.accept_empty = true
|
14
|
-
# Identical to Validatious "confirmation-of" validator, but we want Rails I18n message support, so...
|
15
|
-
self.fn = %{
|
16
|
-
return value === v2.$f(params[0]).getValue();
|
17
|
-
}
|
18
|
-
self.fn.freeze
|
19
|
-
end
|
20
|
-
|
21
|
-
end
|
22
|
-
end
|
23
|
-
end
|
@@ -1,28 +0,0 @@
|
|
1
|
-
# encoding: utf-8
|
2
|
-
require File.expand_path(File.join(File.dirname(__FILE__), *%w[.. validator]))
|
3
|
-
|
4
|
-
# TODO: See notes in FormatValidator.
|
5
|
-
#
|
6
|
-
module ValidatiousOnRails
|
7
|
-
module Validatious
|
8
|
-
class ExclusionValidator < ClientSideValidator
|
9
|
-
|
10
|
-
def initialize(validation, options = {})
|
11
|
-
name, alias_name = self.class.generate_name(validation, :in, self.class.generate_id(validation.options[:in].inspect))
|
12
|
-
super name, options
|
13
|
-
self.message = self.class.generate_message(validation)
|
14
|
-
self.accept_empty = validation.options[:allow_nil]
|
15
|
-
self.fn = %{
|
16
|
-
#{self.class.validate_blank(validation.options[:allow_blank])}
|
17
|
-
var exclusion_values = #{validation.options[:in].to_json};
|
18
|
-
for (var i = 0; i < exclusion_values.length; i++) {
|
19
|
-
if (exclusion_values[i] == value) { return false; }
|
20
|
-
};
|
21
|
-
return true;
|
22
|
-
}
|
23
|
-
self.fn.freeze
|
24
|
-
end
|
25
|
-
|
26
|
-
end
|
27
|
-
end
|
28
|
-
end
|
@@ -1,33 +0,0 @@
|
|
1
|
-
# encoding: utf-8
|
2
|
-
require File.expand_path(File.join(File.dirname(__FILE__), *%w[.. validator]))
|
3
|
-
|
4
|
-
# TODO: Would be "cool" if each format rule was save as a JS var,
|
5
|
-
# and referenced with class Validatious style:
|
6
|
-
#
|
7
|
-
# <head>:
|
8
|
-
# var ssn-se = /^\d{6}-{4}$/;
|
9
|
-
# <<< format validator here >>>
|
10
|
-
# <body>:
|
11
|
-
# <input type="text" class="format-with_ssn-se" ... />
|
12
|
-
#
|
13
|
-
# Same for inclusion/exclusion too. Easy to implement, but low prio.
|
14
|
-
#
|
15
|
-
module ValidatiousOnRails
|
16
|
-
module Validatious
|
17
|
-
class FormatValidator < ClientSideValidator
|
18
|
-
|
19
|
-
def initialize(validation, options = {})
|
20
|
-
name, alias_name = self.class.generate_name(validation, :with, self.class.generate_id(validation.options[:with].inspect))
|
21
|
-
super name, options
|
22
|
-
self.message = self.class.generate_message(validation, :key => :invalid)
|
23
|
-
self.accept_empty = validation.options[:allow_nil]
|
24
|
-
self.fn = %{
|
25
|
-
#{self.class.validate_blank(validation.options[:allow_blank])}
|
26
|
-
return #{validation.options[:with].inspect.gsub(/\\A/, '^').gsub(/\\z/, '$')}.test(value);
|
27
|
-
}
|
28
|
-
self.fn.freeze
|
29
|
-
end
|
30
|
-
|
31
|
-
end
|
32
|
-
end
|
33
|
-
end
|
@@ -1,28 +0,0 @@
|
|
1
|
-
# encoding: utf-8
|
2
|
-
require File.expand_path(File.join(File.dirname(__FILE__), *%w[.. validator]))
|
3
|
-
|
4
|
-
# TODO: See notes in FormatValidator.
|
5
|
-
#
|
6
|
-
module ValidatiousOnRails
|
7
|
-
module Validatious
|
8
|
-
class InclusionValidator < ClientSideValidator
|
9
|
-
|
10
|
-
def initialize(validation, options = {})
|
11
|
-
name, alias_name = self.class.generate_name(validation, :in, self.class.generate_id(validation.options[:in].inspect))
|
12
|
-
super name, options
|
13
|
-
self.message = self.class.generate_message(validation)
|
14
|
-
self.accept_empty = validation.options[:allow_nil]
|
15
|
-
self.fn = %{
|
16
|
-
#{self.class.validate_blank(validation.options[:allow_blank])}
|
17
|
-
var inclusion_values = #{validation.options[:in].to_json};
|
18
|
-
for (var i = 0; i < inclusion_values.length; i++) {
|
19
|
-
if (inclusion_values[i] == value) { return true; }
|
20
|
-
};
|
21
|
-
return false;
|
22
|
-
}
|
23
|
-
self.fn.freeze
|
24
|
-
end
|
25
|
-
|
26
|
-
end
|
27
|
-
end
|
28
|
-
end
|