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.
Files changed (65) hide show
  1. checksums.yaml +7 -0
  2. data/.coveralls.yml +1 -0
  3. data/.gitignore +19 -0
  4. data/.travis.yml +7 -0
  5. data/Gemfile +4 -0
  6. data/LICENSE +20 -0
  7. data/README.md +40 -0
  8. data/Rakefile +11 -0
  9. data/detox.gemspec +27 -0
  10. data/gemfiles/activemodel_3_2_x.gemfile +5 -0
  11. data/gemfiles/activemodel_4_0_x.gemfile +5 -0
  12. data/lib/active_model/validations/absence.rb +19 -0
  13. data/lib/detox.rb +11 -0
  14. data/lib/detox/array_validity.rb +23 -0
  15. data/lib/detox/locales/en.yml +21 -0
  16. data/lib/detox/locales/ja.yml +21 -0
  17. data/lib/detox/validations/all.rb +41 -0
  18. data/lib/detox/validations/any.rb +57 -0
  19. data/lib/detox/validations/ordering.rb +34 -0
  20. data/lib/detox/validations/possession.rb +30 -0
  21. data/lib/detox/validity_broker.rb +55 -0
  22. data/lib/detox/version.rb +4 -0
  23. data/spec/detox/array_validity_spec.rb +214 -0
  24. data/spec/detox/validations/all_absence_spec.rb +147 -0
  25. data/spec/detox/validations/all_acceptance_spec.rb +352 -0
  26. data/spec/detox/validations/all_exclusion_spec.rb +137 -0
  27. data/spec/detox/validations/all_format_spec.rb +351 -0
  28. data/spec/detox/validations/all_inclusion_spec.rb +352 -0
  29. data/spec/detox/validations/all_length_spec.rb +388 -0
  30. data/spec/detox/validations/all_numericality_spec.rb +369 -0
  31. data/spec/detox/validations/all_presence_spec.rb +159 -0
  32. data/spec/detox/validations/any_absence_spec.rb +597 -0
  33. data/spec/detox/validations/any_acceptance_spec.rb +597 -0
  34. data/spec/detox/validations/any_exclusion_spec.rb +597 -0
  35. data/spec/detox/validations/any_format_spec.rb +597 -0
  36. data/spec/detox/validations/any_inclusion_spec.rb +597 -0
  37. data/spec/detox/validations/any_length_spec.rb +597 -0
  38. data/spec/detox/validations/any_numericality_spec.rb +609 -0
  39. data/spec/detox/validations/any_presence_spec.rb +596 -0
  40. data/spec/detox/validations/any_validator_check_validity_spec.rb +126 -0
  41. data/spec/detox/validations/ordering_spec.rb +452 -0
  42. data/spec/detox/validations/possession_spec.rb +263 -0
  43. data/spec/detox/validity_broker_spec.rb +126 -0
  44. data/spec/spec_helper.rb +24 -0
  45. data/spec/test_class/all_absence_test.rb +14 -0
  46. data/spec/test_class/all_acceptance_test.rb +27 -0
  47. data/spec/test_class/all_exclusion_test.rb +15 -0
  48. data/spec/test_class/all_format_test.rb +26 -0
  49. data/spec/test_class/all_inclusion_test.rb +27 -0
  50. data/spec/test_class/all_length_test.rb +28 -0
  51. data/spec/test_class/all_numericality_test.rb +33 -0
  52. data/spec/test_class/all_presence_test.rb +14 -0
  53. data/spec/test_class/any_absence_test.rb +33 -0
  54. data/spec/test_class/any_acceptance_test.rb +34 -0
  55. data/spec/test_class/any_exclusion_test.rb +34 -0
  56. data/spec/test_class/any_format_test.rb +34 -0
  57. data/spec/test_class/any_inclusion_test.rb +33 -0
  58. data/spec/test_class/any_length_test.rb +33 -0
  59. data/spec/test_class/any_numericality_test.rb +35 -0
  60. data/spec/test_class/any_presence_test.rb +33 -0
  61. data/spec/test_class/array_validity_test.rb +6 -0
  62. data/spec/test_class/model_base.rb +11 -0
  63. data/spec/test_class/ordering_test.rb +33 -0
  64. data/spec/test_class/possession_test.rb +22 -0
  65. 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,6 @@
1
+ # coding: utf-8
2
+ require "detox/array_validity"
3
+
4
+ class ArrayValidityTest
5
+ include Detox::ArrayValidity
6
+ end
@@ -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