validatious-on-rails 0.4.5 → 0.4.6
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/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
|