detox 1.0.0
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.
- 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
|