detox 1.0.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/.coveralls.yml +1 -0
- data/.gitignore +19 -0
- data/.travis.yml +7 -0
- data/Gemfile +4 -0
- data/LICENSE +20 -0
- data/README.md +40 -0
- data/Rakefile +11 -0
- data/detox.gemspec +27 -0
- data/gemfiles/activemodel_3_2_x.gemfile +5 -0
- data/gemfiles/activemodel_4_0_x.gemfile +5 -0
- data/lib/active_model/validations/absence.rb +19 -0
- data/lib/detox.rb +11 -0
- data/lib/detox/array_validity.rb +23 -0
- data/lib/detox/locales/en.yml +21 -0
- data/lib/detox/locales/ja.yml +21 -0
- data/lib/detox/validations/all.rb +41 -0
- data/lib/detox/validations/any.rb +57 -0
- data/lib/detox/validations/ordering.rb +34 -0
- data/lib/detox/validations/possession.rb +30 -0
- data/lib/detox/validity_broker.rb +55 -0
- data/lib/detox/version.rb +4 -0
- data/spec/detox/array_validity_spec.rb +214 -0
- data/spec/detox/validations/all_absence_spec.rb +147 -0
- data/spec/detox/validations/all_acceptance_spec.rb +352 -0
- data/spec/detox/validations/all_exclusion_spec.rb +137 -0
- data/spec/detox/validations/all_format_spec.rb +351 -0
- data/spec/detox/validations/all_inclusion_spec.rb +352 -0
- data/spec/detox/validations/all_length_spec.rb +388 -0
- data/spec/detox/validations/all_numericality_spec.rb +369 -0
- data/spec/detox/validations/all_presence_spec.rb +159 -0
- data/spec/detox/validations/any_absence_spec.rb +597 -0
- data/spec/detox/validations/any_acceptance_spec.rb +597 -0
- data/spec/detox/validations/any_exclusion_spec.rb +597 -0
- data/spec/detox/validations/any_format_spec.rb +597 -0
- data/spec/detox/validations/any_inclusion_spec.rb +597 -0
- data/spec/detox/validations/any_length_spec.rb +597 -0
- data/spec/detox/validations/any_numericality_spec.rb +609 -0
- data/spec/detox/validations/any_presence_spec.rb +596 -0
- data/spec/detox/validations/any_validator_check_validity_spec.rb +126 -0
- data/spec/detox/validations/ordering_spec.rb +452 -0
- data/spec/detox/validations/possession_spec.rb +263 -0
- data/spec/detox/validity_broker_spec.rb +126 -0
- data/spec/spec_helper.rb +24 -0
- data/spec/test_class/all_absence_test.rb +14 -0
- data/spec/test_class/all_acceptance_test.rb +27 -0
- data/spec/test_class/all_exclusion_test.rb +15 -0
- data/spec/test_class/all_format_test.rb +26 -0
- data/spec/test_class/all_inclusion_test.rb +27 -0
- data/spec/test_class/all_length_test.rb +28 -0
- data/spec/test_class/all_numericality_test.rb +33 -0
- data/spec/test_class/all_presence_test.rb +14 -0
- data/spec/test_class/any_absence_test.rb +33 -0
- data/spec/test_class/any_acceptance_test.rb +34 -0
- data/spec/test_class/any_exclusion_test.rb +34 -0
- data/spec/test_class/any_format_test.rb +34 -0
- data/spec/test_class/any_inclusion_test.rb +33 -0
- data/spec/test_class/any_length_test.rb +33 -0
- data/spec/test_class/any_numericality_test.rb +35 -0
- data/spec/test_class/any_presence_test.rb +33 -0
- data/spec/test_class/array_validity_test.rb +6 -0
- data/spec/test_class/model_base.rb +11 -0
- data/spec/test_class/ordering_test.rb +33 -0
- data/spec/test_class/possession_test.rb +22 -0
- metadata +219 -0
@@ -0,0 +1,15 @@
|
|
1
|
+
# coding: utf-8
|
2
|
+
require "test_class/model_base"
|
3
|
+
|
4
|
+
class AllExclusionTest < ModelBase
|
5
|
+
attr_accessor :values
|
6
|
+
|
7
|
+
validates :values, :all_exclusion => { :in => ["4", "5", "6" ] }
|
8
|
+
end
|
9
|
+
|
10
|
+
class AllExclusionTestWithMessageOption < ModelBase
|
11
|
+
attr_accessor :values
|
12
|
+
|
13
|
+
validates :values, :all_exclusion => { :in => ["4", "5", "6"], :message => "is invalid" }
|
14
|
+
end
|
15
|
+
|
@@ -0,0 +1,26 @@
|
|
1
|
+
# coding: utf-8
|
2
|
+
require "test_class/model_base"
|
3
|
+
|
4
|
+
class AllFormatTest < ModelBase
|
5
|
+
attr_accessor :words
|
6
|
+
|
7
|
+
validates :words, :all_format => { :with => /\A\w+\z/ }
|
8
|
+
end
|
9
|
+
|
10
|
+
class AllFormatTestWithIgnoreNilValueOption < ModelBase
|
11
|
+
attr_accessor :words
|
12
|
+
|
13
|
+
validates :words, :all_format => { :with => /\A\w+\z/, :ignore_nil_value => true }
|
14
|
+
end
|
15
|
+
|
16
|
+
class AllFormatTestWithIgnoreBlankValueOption < ModelBase
|
17
|
+
attr_accessor :words
|
18
|
+
|
19
|
+
validates :words, :all_format => { :with => /\A\w+\z/, :ignore_blank_value => true }
|
20
|
+
end
|
21
|
+
|
22
|
+
class AllFormatTestWithMessageOption < ModelBase
|
23
|
+
attr_accessor :words
|
24
|
+
|
25
|
+
validates :words, :all_format => { :with => /\A\w+\z/, :message => "is invalid" }
|
26
|
+
end
|
@@ -0,0 +1,27 @@
|
|
1
|
+
# coding: utf-8
|
2
|
+
require "test_class/model_base"
|
3
|
+
|
4
|
+
class AllInclusionTest < ModelBase
|
5
|
+
attr_accessor :values
|
6
|
+
|
7
|
+
validates :values, :all_inclusion => { :in => ["1", "2", "3" ] }
|
8
|
+
end
|
9
|
+
|
10
|
+
class AllInclusionTestWithIgnoreNilValueOption < ModelBase
|
11
|
+
attr_accessor :values
|
12
|
+
|
13
|
+
validates :values, :all_inclusion => { :in => ["1", "2", "3" ], :ignore_nil_value => true }
|
14
|
+
end
|
15
|
+
|
16
|
+
class AllInclusionTestWithIgnoreBlankValueOption < ModelBase
|
17
|
+
attr_accessor :values
|
18
|
+
|
19
|
+
validates :values, :all_inclusion => { :in => ["1", "2", "3" ], :ignore_blank_value => true }
|
20
|
+
end
|
21
|
+
|
22
|
+
class AllInclusionTestWithMessageOption < ModelBase
|
23
|
+
attr_accessor :values
|
24
|
+
|
25
|
+
validates :values, :all_inclusion => { :in => ["1", "2", "3"], :message => "is invalid" }
|
26
|
+
end
|
27
|
+
|
@@ -0,0 +1,28 @@
|
|
1
|
+
# coding: utf-8
|
2
|
+
require "test_class/model_base"
|
3
|
+
|
4
|
+
class AllLengthTest < ModelBase
|
5
|
+
attr_accessor :values
|
6
|
+
|
7
|
+
validates :values, :all_length => { :in => 3..6 }
|
8
|
+
end
|
9
|
+
|
10
|
+
class AllLengthTestWithIgnoreNilValueOption < ModelBase
|
11
|
+
attr_accessor :values
|
12
|
+
|
13
|
+
validates :values, :all_length => { :in => 3..6, :ignore_nil_value => true }
|
14
|
+
end
|
15
|
+
|
16
|
+
class AllLengthTestWithIgnoreBlankValueOption < ModelBase
|
17
|
+
attr_accessor :values
|
18
|
+
|
19
|
+
validates :values, :all_length => { :in => 3..6, :ignore_blank_value => true }
|
20
|
+
end
|
21
|
+
|
22
|
+
class AllLengthTestWithMessageOption < ModelBase
|
23
|
+
attr_accessor :values
|
24
|
+
|
25
|
+
validates :values, :all_length => { :in => 3..6, :message => "is invalid" }
|
26
|
+
end
|
27
|
+
|
28
|
+
|
@@ -0,0 +1,33 @@
|
|
1
|
+
# coding: utf-8
|
2
|
+
require "test_class/model_base"
|
3
|
+
|
4
|
+
class AllNumericalityTest < ModelBase
|
5
|
+
attr_accessor :prices
|
6
|
+
|
7
|
+
validates :prices, :all_numericality => true
|
8
|
+
end
|
9
|
+
|
10
|
+
class AllNumericalityTestWithIgnoreNilValueOption < ModelBase
|
11
|
+
attr_accessor :prices
|
12
|
+
|
13
|
+
validates :prices, :all_numericality => { :ignore_nil_value => true }
|
14
|
+
end
|
15
|
+
|
16
|
+
class AllNumericalityTestWithIgnoreBlankValueOption < ModelBase
|
17
|
+
attr_accessor :prices
|
18
|
+
|
19
|
+
validates :prices, :all_numericality => { :ignore_blank_value => true }
|
20
|
+
end
|
21
|
+
|
22
|
+
class AllNumericalityTestWithOriginalOption < ModelBase
|
23
|
+
attr_accessor :prices
|
24
|
+
|
25
|
+
validates :prices, :all_numericality => { :only_integer => true }
|
26
|
+
end
|
27
|
+
|
28
|
+
class AllNumericalityTestWithMessageOption < ModelBase
|
29
|
+
attr_accessor :prices
|
30
|
+
|
31
|
+
validates :prices, :all_numericality => { :message => "is invalid" }
|
32
|
+
end
|
33
|
+
|
@@ -0,0 +1,14 @@
|
|
1
|
+
# coding: utf-8
|
2
|
+
require "test_class/model_base"
|
3
|
+
|
4
|
+
class AllPresenceTest < ModelBase
|
5
|
+
attr_accessor :values
|
6
|
+
|
7
|
+
validates :values, :all_presence => true
|
8
|
+
end
|
9
|
+
|
10
|
+
class AllPresenceTestWithMessageOption < ModelBase
|
11
|
+
attr_accessor :values
|
12
|
+
|
13
|
+
validates :values, :all_presence => { :message => "is invalid" }
|
14
|
+
end
|
@@ -0,0 +1,33 @@
|
|
1
|
+
# coding: utf-8
|
2
|
+
require "test_class/model_base"
|
3
|
+
|
4
|
+
class AnyAbsenceTest < ModelBase
|
5
|
+
attr_accessor :values
|
6
|
+
|
7
|
+
validates :values, :any_absence => true
|
8
|
+
end
|
9
|
+
|
10
|
+
class AnyAbsenceTestWithMinValidCountOnly < ModelBase
|
11
|
+
attr_accessor :values
|
12
|
+
|
13
|
+
validates :values, :any_absence => { :min_valid_count => 2 }
|
14
|
+
end
|
15
|
+
|
16
|
+
class AnyAbsenceTestWithMaxValidCountOnly < ModelBase
|
17
|
+
attr_accessor :values
|
18
|
+
|
19
|
+
validates :values, :any_absence => { :max_valid_count => 3 }
|
20
|
+
end
|
21
|
+
|
22
|
+
class AnyAbsenceTestWithBothValidCount < ModelBase
|
23
|
+
attr_accessor :values
|
24
|
+
|
25
|
+
validates :values, :any_absence => { :min_valid_count => 2, :max_valid_count => 3 }
|
26
|
+
end
|
27
|
+
|
28
|
+
class AnyAbsenceTestWithMessageOption < ModelBase
|
29
|
+
attr_accessor :values
|
30
|
+
|
31
|
+
validates :values, :any_absence => { :message => "is invalid" }
|
32
|
+
end
|
33
|
+
|
@@ -0,0 +1,34 @@
|
|
1
|
+
# coding: utf-8
|
2
|
+
require "test_class/model_base"
|
3
|
+
|
4
|
+
class AnyAcceptanceTest < ModelBase
|
5
|
+
attr_accessor :flags
|
6
|
+
|
7
|
+
validates :flags, :any_acceptance => true
|
8
|
+
end
|
9
|
+
|
10
|
+
class AnyAcceptanceTestWithMinValidCountOnly < ModelBase
|
11
|
+
attr_accessor :flags
|
12
|
+
|
13
|
+
validates :flags, :any_acceptance => { :min_valid_count => 2 }
|
14
|
+
end
|
15
|
+
|
16
|
+
class AnyAcceptanceTestWithMaxValidCountOnly < ModelBase
|
17
|
+
attr_accessor :flags
|
18
|
+
|
19
|
+
validates :flags, :any_acceptance => { :max_valid_count => 3 }
|
20
|
+
end
|
21
|
+
|
22
|
+
class AnyAcceptanceTestWithBothValidCount < ModelBase
|
23
|
+
attr_accessor :flags
|
24
|
+
|
25
|
+
validates :flags, :any_acceptance => { :min_valid_count => 2, :max_valid_count => 3 }
|
26
|
+
end
|
27
|
+
|
28
|
+
class AnyAcceptanceTestWithMessageOption < ModelBase
|
29
|
+
attr_accessor :flags
|
30
|
+
|
31
|
+
validates :flags, :any_acceptance => { :message => "is invalid" }
|
32
|
+
end
|
33
|
+
|
34
|
+
|
@@ -0,0 +1,34 @@
|
|
1
|
+
# coding: utf-8
|
2
|
+
require "test_class/model_base"
|
3
|
+
|
4
|
+
class AnyExclusionTest < ModelBase
|
5
|
+
attr_accessor :values
|
6
|
+
|
7
|
+
validates :values, :any_exclusion => { :in => ["4", "5", "6" ] }
|
8
|
+
end
|
9
|
+
|
10
|
+
class AnyExclusionTestWithMinValidCountOnly < ModelBase
|
11
|
+
attr_accessor :values
|
12
|
+
|
13
|
+
validates :values, :any_exclusion => { :in => ["4", "5", "6"], :min_valid_count => 2 }
|
14
|
+
end
|
15
|
+
|
16
|
+
class AnyExclusionTestWithMaxValidCountOnly < ModelBase
|
17
|
+
attr_accessor :values
|
18
|
+
|
19
|
+
validates :values, :any_exclusion => { :in => ["4", "5", "6"], :max_valid_count => 3 }
|
20
|
+
end
|
21
|
+
|
22
|
+
class AnyExclusionTestWithBothValidCount < ModelBase
|
23
|
+
attr_accessor :values
|
24
|
+
|
25
|
+
validates :values, :any_exclusion => { :in => ["4", "5", "6"], :min_valid_count => 2, :max_valid_count => 3 }
|
26
|
+
end
|
27
|
+
|
28
|
+
class AnyExclusionTestWithMessageOption < ModelBase
|
29
|
+
attr_accessor :values
|
30
|
+
|
31
|
+
validates :values, :any_exclusion => { :in => ["4", "5", "6"], :message => "is invalid" }
|
32
|
+
end
|
33
|
+
|
34
|
+
|
@@ -0,0 +1,34 @@
|
|
1
|
+
# coding: utf-8
|
2
|
+
require "test_class/model_base"
|
3
|
+
|
4
|
+
class AnyFormatTest < ModelBase
|
5
|
+
attr_accessor :words
|
6
|
+
|
7
|
+
validates :words, :any_format => { :with => /\A\w+\z/ }
|
8
|
+
end
|
9
|
+
|
10
|
+
class AnyFormatTestWithMinValidCountOnly < ModelBase
|
11
|
+
attr_accessor :words
|
12
|
+
|
13
|
+
validates :words, :any_format => { :with => /\A\w+\z/, :min_valid_count => 2 }
|
14
|
+
end
|
15
|
+
|
16
|
+
class AnyFormatTestWithMaxValidCountOnly < ModelBase
|
17
|
+
attr_accessor :words
|
18
|
+
|
19
|
+
validates :words, :any_format => { :with => /\A\w+\z/, :max_valid_count => 3 }
|
20
|
+
end
|
21
|
+
|
22
|
+
class AnyFormatTestWithBothValidCount < ModelBase
|
23
|
+
attr_accessor :words
|
24
|
+
|
25
|
+
validates :words, :any_format => { :with => /\A\w+\z/, :min_valid_count => 2, :max_valid_count => 3 }
|
26
|
+
end
|
27
|
+
|
28
|
+
class AnyFormatTestWithMessageOption < ModelBase
|
29
|
+
attr_accessor :words
|
30
|
+
|
31
|
+
validates :words, :any_format => { :with => /\A\w+\z/, :message => "is invalid" }
|
32
|
+
end
|
33
|
+
|
34
|
+
|
@@ -0,0 +1,33 @@
|
|
1
|
+
# coding: utf-8
|
2
|
+
require "test_class/model_base"
|
3
|
+
|
4
|
+
class AnyInclusionTest < ModelBase
|
5
|
+
attr_accessor :values
|
6
|
+
|
7
|
+
validates :values, :any_inclusion => { :in => ["1", "2", "3" ] }
|
8
|
+
end
|
9
|
+
|
10
|
+
class AnyInclusionTestWithMinValidCountOnly < ModelBase
|
11
|
+
attr_accessor :values
|
12
|
+
|
13
|
+
validates :values, :any_inclusion => { :in => ["1", "2", "3"], :min_valid_count => 2 }
|
14
|
+
end
|
15
|
+
|
16
|
+
class AnyInclusionTestWithMaxValidCountOnly < ModelBase
|
17
|
+
attr_accessor :values
|
18
|
+
|
19
|
+
validates :values, :any_inclusion => { :in => ["1", "2", "3"], :max_valid_count => 3 }
|
20
|
+
end
|
21
|
+
|
22
|
+
class AnyInclusionTestWithBothValidCount < ModelBase
|
23
|
+
attr_accessor :values
|
24
|
+
|
25
|
+
validates :values, :any_inclusion => { :in => ["1", "2", "3"], :min_valid_count => 2, :max_valid_count => 3 }
|
26
|
+
end
|
27
|
+
|
28
|
+
class AnyInclusionTestWithMessageOption < ModelBase
|
29
|
+
attr_accessor :values
|
30
|
+
|
31
|
+
validates :values, :any_inclusion => { :in => ["1", "2", "3"], :message => "is invalid" }
|
32
|
+
end
|
33
|
+
|
@@ -0,0 +1,33 @@
|
|
1
|
+
# coding: utf-8
|
2
|
+
require "test_class/model_base"
|
3
|
+
|
4
|
+
class AnyLengthTest < ModelBase
|
5
|
+
attr_accessor :values
|
6
|
+
|
7
|
+
validates :values, :any_length => { :in => 4..6 }
|
8
|
+
end
|
9
|
+
|
10
|
+
class AnyLengthTestWithMinValidCountOnly < ModelBase
|
11
|
+
attr_accessor :values
|
12
|
+
|
13
|
+
validates :values, :any_length => { :in => 4..6, :min_valid_count => 2 }
|
14
|
+
end
|
15
|
+
|
16
|
+
class AnyLengthTestWithMaxValidCountOnly < ModelBase
|
17
|
+
attr_accessor :values
|
18
|
+
|
19
|
+
validates :values, :any_length => { :in => 4..6, :max_valid_count => 3 }
|
20
|
+
end
|
21
|
+
|
22
|
+
class AnyLengthTestWithBothValidCount < ModelBase
|
23
|
+
attr_accessor :values
|
24
|
+
|
25
|
+
validates :values, :any_length => { :in => 4..6, :min_valid_count => 2, :max_valid_count => 3 }
|
26
|
+
end
|
27
|
+
|
28
|
+
class AnyLengthTestWithMessageOption < ModelBase
|
29
|
+
attr_accessor :values
|
30
|
+
|
31
|
+
validates :values, :any_length => { :in => 4..6, :message => "is invalid" }
|
32
|
+
end
|
33
|
+
|
@@ -0,0 +1,35 @@
|
|
1
|
+
# coding: utf-8
|
2
|
+
require "test_class/model_base"
|
3
|
+
|
4
|
+
class AnyNumericalityTest < ModelBase
|
5
|
+
attr_accessor :prices
|
6
|
+
|
7
|
+
validates :prices, :any_numericality => true
|
8
|
+
end
|
9
|
+
|
10
|
+
class AnyNumericalityTestWithMinValidCountOnly < ModelBase
|
11
|
+
attr_accessor :prices
|
12
|
+
|
13
|
+
validates :prices, :any_numericality => { :min_valid_count => 2 }
|
14
|
+
end
|
15
|
+
|
16
|
+
class AnyNumericalityTestWithMaxValidCountOnly < ModelBase
|
17
|
+
attr_accessor :prices
|
18
|
+
|
19
|
+
validates :prices, :any_numericality => { :max_valid_count => 3 }
|
20
|
+
end
|
21
|
+
|
22
|
+
class AnyNumericalityTestWithBothValidCount < ModelBase
|
23
|
+
attr_accessor :prices
|
24
|
+
|
25
|
+
validates :prices, :any_numericality => { :min_valid_count => 2, :max_valid_count => 3 }
|
26
|
+
end
|
27
|
+
|
28
|
+
class AnyNumericalityTestWithMessageOption < ModelBase
|
29
|
+
attr_accessor :prices
|
30
|
+
|
31
|
+
validates :prices, :any_numericality => { :message => "is invalid" }
|
32
|
+
end
|
33
|
+
|
34
|
+
|
35
|
+
|
@@ -0,0 +1,33 @@
|
|
1
|
+
# coding: utf-8
|
2
|
+
require "test_class/model_base"
|
3
|
+
|
4
|
+
class AnyPresenceTest < ModelBase
|
5
|
+
attr_accessor :values
|
6
|
+
|
7
|
+
validates :values, :any_presence => true
|
8
|
+
end
|
9
|
+
|
10
|
+
class AnyPresenceTestWithMinValidCountOnly < ModelBase
|
11
|
+
attr_accessor :values
|
12
|
+
|
13
|
+
validates :values, :any_presence => { :min_valid_count => 2 }
|
14
|
+
end
|
15
|
+
|
16
|
+
class AnyPresenceTestWithMaxValidCountOnly < ModelBase
|
17
|
+
attr_accessor :values
|
18
|
+
|
19
|
+
validates :values, :any_presence => { :max_valid_count => 3 }
|
20
|
+
end
|
21
|
+
|
22
|
+
class AnyPresenceTestWithBothValidCount < ModelBase
|
23
|
+
attr_accessor :values
|
24
|
+
|
25
|
+
validates :values, :any_presence => { :min_valid_count => 2, :max_valid_count => 3 }
|
26
|
+
end
|
27
|
+
|
28
|
+
class AnyPresenceTestWithMessageOption < ModelBase
|
29
|
+
attr_accessor :values
|
30
|
+
|
31
|
+
validates :values, :any_presence => { :message => "is invalid" }
|
32
|
+
end
|
33
|
+
|
@@ -0,0 +1,11 @@
|
|
1
|
+
# coding: utf-8
|
2
|
+
require "active_model"
|
3
|
+
|
4
|
+
# Not use ActiveModel::Model for support ActiveModel 3.2.x
|
5
|
+
class ModelBase
|
6
|
+
extend ActiveModel::Naming
|
7
|
+
extend ActiveModel::Translation
|
8
|
+
include ActiveModel::Validations
|
9
|
+
include ActiveModel::Conversion
|
10
|
+
|
11
|
+
end
|