detox 1.0.0

Sign up to get free protection for your applications and to get access to all the features.
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