validator_attachment 1.1.1 → 2.0.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml ADDED
@@ -0,0 +1,15 @@
1
+ ---
2
+ !binary "U0hBMQ==":
3
+ metadata.gz: !binary |-
4
+ ODIwYTJhNDE1YmMzZDcyMzRlYzBjOTNlNWYzODdmMjY3YTViYTc4OA==
5
+ data.tar.gz: !binary |-
6
+ NTdmNzViMzZjN2JlMGU1MzE1N2Y1NTQwMWI3MjI2OTkzZWY1MjI4YQ==
7
+ SHA512:
8
+ metadata.gz: !binary |-
9
+ ZjY2ZjE0ZWE4MzlkYjUxY2I0NDNlZjc2NTU5OGY5MzAzMzc2OTZiZTgyYTZk
10
+ YzEwYTVjYWE2NTdhMjJjYzdhNTUxYmVlMWVkYWU4ZjMzZjZkODVlYTRlZmRm
11
+ NGVlYTRlYTkxZmQyYTRmODcwN2UyMzcwN2EwZTQ1YjMwZDQ5ODg=
12
+ data.tar.gz: !binary |-
13
+ ZDMxOGZjNjUzMWMxYTFiMDU4NmEyYTI4Mzg2MjAxODRiYmQ5MWNhNTg3MDZk
14
+ MTlhZWNmMGJiYzQ2YzU3ODEyOGM5YmNmMjBiMzVjOWNlNjQxNDViZDU1Y2Zh
15
+ ZmYxODhhM2VjMmM2OWI0OTg3NDRjN2RiNThhODE2ZTE2NjQ2OWE=
data/CHANGELOG CHANGED
@@ -1,3 +1,5 @@
1
+ v2.0.0 Support for Rails 4
2
+
1
3
  v1.1.1 require 'active_support/core_ext/hash/diff'
2
4
 
3
5
  v1.1.0 attached? together with is_attached?
data/Manifest CHANGED
@@ -3,8 +3,9 @@ MIT-LICENSE
3
3
  README.rdoc
4
4
  Rakefile
5
5
  lib/validator_attachment.rb
6
- test/dummy_validator.rb
7
- test/test_helper.rb
8
- test/validator_attachment_test.rb
6
+ lib/validator_attachment/version.rb
7
+ spec/dummy_validator.rb
8
+ spec/spec_helper.rb
9
+ spec/validator_attachment_spec.rb
9
10
  validator_attachment.gemspec
10
11
  Manifest
data/README.rdoc CHANGED
@@ -1,6 +1,6 @@
1
1
  = Validator Attachment
2
2
 
3
- It works with Rails >=3.0. Helps me test my validations on Models with less code. Assuming that Rails validations are
3
+ It works with Rails >=4.0. (For Rails >=3.0 use version 1.x) Helps me test my validations on Models with less code. Assuming that Rails validations are
4
4
  already tested, by Rails, then when I have a validation on an attribute of a Model, I just want to test whether the
5
5
  validation is there. Nothing more.
6
6
 
@@ -14,8 +14,8 @@ Assuming that you have a Model like the following:
14
14
 
15
15
  In your test:
16
16
 
17
- test "last name has to be present" do
18
- assert ActiveModel::Validations::PresenceValidator.is_attached?(MyAwesomeModel, :last_name)
17
+ it "last name has to be present" do
18
+ expect(ActiveModel::Validations::PresenceValidator.is_attached?(MyAwesomeModel, :last_name)).to be true
19
19
  end
20
20
 
21
21
  will test that your +last_name+ attribute on the model +MyAwesomeModel+ has a +:presence+ validation attached. Note
@@ -31,17 +31,17 @@ Optionally, you can also check whether the correct options are attached too. So,
31
31
 
32
32
  In your test:
33
33
 
34
- test "last name should not be of correct length" do
34
+ it "last name should not be of correct length" do
35
35
  # you do not have to check for all options
36
- assert ActiveModel::Validations::LengthValidator.is_attached?(MyAwesomeModel, :last_name, { :minimum => 3 })
37
- assert ActiveModel::Validations::LengthValidator.is_attached?(MyAwesomeModel, :last_name, { :maximum => 60 })
36
+ it { expect(ActiveModel::Validations::LengthValidator.is_attached?(MyAwesomeModel, :last_name, { :minimum => 3 })).to be true }
37
+ it { expect(ActiveModel::Validations::LengthValidator.is_attached?(MyAwesomeModel, :last_name, { :maximum => 60 })).to be true }
38
38
 
39
39
  # or you can check for all
40
- assert ActiveModel::Validations::LengthValidator.is_attached?(MyAwesomeModel, :last_name, { :minimum => 3, :maximum => 60 })
40
+ it { expect(ActiveModel::Validations::LengthValidator.is_attached?(MyAwesomeModel, :last_name, { :minimum => 3, :maximum => 60 })).to be true }
41
41
 
42
42
  # or you can ask for those and only those, i.e. exact content match
43
- assert !ActiveModel::Validations::LengthValidator.is_attached?(MyAwesomeModel, :last_name, { :maximum => 60 }, true)
44
- assert ActiveModel::Validations::LengthValidator.is_attached?(MyAwesomeModel, :last_name, { :minimum > 60, :maximum => 60 }, true)
43
+ it { expect(!ActiveModel::Validations::LengthValidator.is_attached?(MyAwesomeModel, :last_name, { :maximum => 60 }, true)).to be true }
44
+ it { expect(ActiveModel::Validations::LengthValidator.is_attached?(MyAwesomeModel, :last_name, { :minimum > 60, :maximum => 60 }, true)).to be true }
45
45
  end
46
46
 
47
47
  Another example with +with_options+:
@@ -56,8 +56,8 @@ Another example with +with_options+:
56
56
  You can test this as follows:
57
57
 
58
58
  test "user admin validators" do
59
- assert ActiveModel::Validations::LengthValidator.is_attached?(User, :password, { :minimum => 10, :if => :is_admin? })
60
- assert ActiveModel::Validations::PresenceValidator.is_attached?(User, :username, { :if => :is_admin? })
59
+ it { expect(ActiveModel::Validations::LengthValidator.is_attached?(User, :password, { :minimum => 10, :if => :is_admin? })).to be true }
60
+ it { exepct(ActiveModel::Validations::PresenceValidator.is_attached?(User, :username, { :if => :is_admin? })).to be true }
61
61
  end
62
62
 
63
63
  In the file {validator_attachment_test.rb}[https://github.com/pmatsinopoulos/validator_attachment/blob/master/test/validator_attachment_test.rb]
data/Rakefile CHANGED
@@ -1,19 +1,6 @@
1
1
  #!/usr/bin/env rake
2
2
  require 'rubygems'
3
3
  require 'rake'
4
- require 'echoe'
5
-
6
- Echoe.new('validator_attachment') do |p|
7
- p.summary = "Is this ActiveModel Validator Used?"
8
- p.description = "Checks whether an ActiveModel Validator is attached to an attribute of a Model and with which options"
9
- p.url = "http://github.com/pmatsinopoulos/validator_attachment"
10
- p.author = "Panayotis Matsinopoulos"
11
- p.email = "panayotis@matsinopoulos.gr"
12
- p.ignore_pattern = ["tmp/*", "script/*", "rdoc_output/*", "rdoc_output/js/*", "rdoc_output/images/*", "rdoc_output/ActiveModel/*", "rdoc_output/lib/*",
13
- "yard_output/*", "yard_output/js/*", "yard_output/css/*", "Gemfile", "Gemfile.lock", "*.iml"]
14
- p.runtime_dependencies = ["rails ~>3.0"]
15
- p.development_dependencies = ["rails ~>3.0"]
16
- end
17
4
 
18
5
  Dir["#{File.dirname(__FILE__)}/tasks/*.rake"].sort.each{ |ext| load ext }
19
6
 
@@ -1,11 +1,11 @@
1
- require 'active_support/core_ext/hash/diff'
1
+ require "rails/all"
2
2
 
3
3
  module ValidatorAttachment
4
4
 
5
5
  # Given a +klass+ checks whether the target Validator is attached to
6
6
  # the given +attribute+ of the model with class +klass+. It can also check
7
7
  # whether validator is attached together with some +options+ and if these
8
- # +options+ are the only ones used (given +exact_math+ +true+)
8
+ # +options+ are the only ones used (given +exact_match+ +true+)
9
9
  #
10
10
  # @param [Class] klass the Model class that uses the Validator
11
11
  # @param [Symbol] attribute the attribute of the Model class that we want
@@ -18,7 +18,7 @@ module ValidatorAttachment
18
18
  # should not have more or less options.
19
19
  # @return [boolean] whether Validator is attached or not
20
20
  #
21
- # @see http://github.com/pmatsinopoulos/validator_attachment Please project home page for more details and examples of usage.
21
+ # @see http://github.com/pmatsinopoulos/validator_attachment project home page for more details and examples of usage.
22
22
  #
23
23
  def is_attached?(klass, attribute, options=nil, exact_match=false)
24
24
  validators = klass._validate_callbacks.map{|vc| vc.raw_filter}
@@ -39,7 +39,7 @@ module ValidatorAttachment
39
39
  # The logic of comparison:
40
40
  # I find the difference of +val.options+ to +options+ and then I remove from +val.options+ this difference.
41
41
  # The remaining keys of +val.options+ should be hash equal to +options+
42
- validators = validators.find_all{|val| val.options.present? && val.options.reject{|k,v| val.options.diff(options).keys.include?(k)} == options}
42
+ validators = validators.find_all{|val| val.options.present? && val.options.merge(options) == val.options}
43
43
  end
44
44
  end
45
45
 
File without changes
@@ -0,0 +1,6 @@
1
+ current_path = File.expand_path("..", __FILE__)
2
+ $: << "../lib"
3
+ $: << current_path
4
+
5
+ require "validator_attachment"
6
+ require "dummy_validator"
@@ -0,0 +1,160 @@
1
+ require 'spec_helper'
2
+
3
+ describe ValidatorAttachment do
4
+ module ValidatorAttachmentTest
5
+ class SampleModel
6
+ include ActiveModel::Validations
7
+ include ActiveRecord::Validations
8
+
9
+ validates :acceptance_attr_1, :acceptance => true
10
+ validates :acceptance_attr_2, :acceptance => { :allow_nil => true }
11
+ validates :acceptance_attr_3, :acceptance => { :allow_nil => false }
12
+ validates :acceptance_attr_4, :acceptance => { :accept => 'sure' }
13
+ validates :acceptance_attr_5, :acceptance => { :allow_nil => true, :accept => 'sure' }
14
+
15
+ validates :email_1, :confirmation => true
16
+ validates :email_2, :confirmation => true, :presence => true
17
+
18
+ validates :exclusion_1, :exclusion => { :in => %w(ab cd ef), :message => 'not allowed' }
19
+
20
+ validates :legacy_code, :format => { :with => /\Aa.+\d\z/, :message => 'wrong format' }
21
+
22
+ validates :size, :inclusion => { :in => %w(small medium large),
23
+ :message => "%{value} is not a valid size" }
24
+
25
+ validates :name, :length => { :minimum => 2 }
26
+ validates :bio, :length => { :maximum => 500 }
27
+ validates :password, :length => { :in => 6..20 }
28
+ validates :registration_number, :length => { :is => 6 }
29
+ validates :account_number, :length => { :minimum => 2, :maximum => 6, :wrong_length => 'wrong length, please try again' }
30
+ validates :student_id, :length => { :maximum => 10, :too_long => 'sorry, too long', :too_short => 'sorry, too short' }
31
+ validates :mama_telephone, :length => { :is => 8 }
32
+
33
+ validates :points, :numericality => true
34
+ validates :games_played, :numericality => { :only_integer => true }
35
+ validates :num_1, :numericality => { :greater_than => 1 }
36
+ validates :num_2, :numericality => { :greater_than_or_equal_to => 2 }
37
+ validates :num_3, :numericality => { :equal_to => 3 }
38
+ validates :num_4, :numericality => { :less_than => 4 }
39
+ validates :num_5, :numericality => { :less_than_or_equal_to => 5 }
40
+ validates :num_6, :numericality => { :odd => true }
41
+ validates :num_7, :numericality => { :even => true }
42
+
43
+ validates :identity_number, :uniqueness => true
44
+ validates :identity_number_1, :uniqueness => { :scope => :num_7 }
45
+ validates :identity_number_2, :uniqueness => { :case_sensitive => true}
46
+
47
+ validates :num_8, :presence => true, :if => :paid_with_card?
48
+
49
+ with_options :if => :is_admin? do |admin|
50
+ admin.validates :num_9, :length => { :minimum => 10 }
51
+ admin.validates :num_10, :presence => true
52
+ end
53
+
54
+ validates :my_facebook_email, :presence => true, :dummy => true
55
+
56
+ def persisted?
57
+ false
58
+ end
59
+ end
60
+ end
61
+
62
+ context 'ActiveModel::EachValidator' do
63
+ it 'responds to is_attached?' do
64
+ expect(ActiveModel::EachValidator).to respond_to(:is_attached?)
65
+ end
66
+
67
+ it 'responds to attached?' do
68
+ expect(ActiveModel::EachValidator).to respond_to(:attached?)
69
+ end
70
+ end
71
+
72
+ context 'acceptance validator' do
73
+ it { expect(ActiveModel::Validations::AcceptanceValidator.is_attached?(ValidatorAttachmentTest::SampleModel, :acceptance_attr_1)).to be true }
74
+ it { expect(ActiveModel::Validations::AcceptanceValidator.is_attached?(ValidatorAttachmentTest::SampleModel, :acceptance_attr_2, {:allow_nil => true})).to be true }
75
+ it { expect(ActiveModel::Validations::AcceptanceValidator.is_attached?(ValidatorAttachmentTest::SampleModel, :acceptance_attr_3, {:allow_nil => false})).to be true }
76
+ it { expect(ActiveModel::Validations::AcceptanceValidator.is_attached?(ValidatorAttachmentTest::SampleModel, :acceptance_attr_4, {:accept => 'sure'})).to be true }
77
+ it { expect(ActiveModel::Validations::AcceptanceValidator.is_attached?(ValidatorAttachmentTest::SampleModel, :acceptance_attr_5, {:accept => 'sure'})).to be true }
78
+ it { expect(!ActiveModel::Validations::AcceptanceValidator.is_attached?(ValidatorAttachmentTest::SampleModel, :acceptance_attr_5, {:accept => 'sure'}, true)).to be true }
79
+ it { expect(ActiveModel::Validations::AcceptanceValidator.is_attached?(ValidatorAttachmentTest::SampleModel, :acceptance_attr_5, {:accept => 'sure', :allow_nil => true}, true)).to be true }
80
+ end
81
+
82
+ context 'confirmation validator' do
83
+ it { expect(ActiveModel::Validations::ConfirmationValidator.is_attached?(ValidatorAttachmentTest::SampleModel, :email_1)).to be true }
84
+ it { expect(!ActiveModel::Validations::ConfirmationValidator.is_attached?(ValidatorAttachmentTest::SampleModel, :acceptance_attr_1)).to be true }
85
+ it { expect(ActiveModel::Validations::ConfirmationValidator.is_attached?(ValidatorAttachmentTest::SampleModel, :email_2)).to be true }
86
+ end
87
+
88
+ context 'presence validator' do
89
+ it { expect(ActiveModel::Validations::PresenceValidator.is_attached?(ValidatorAttachmentTest::SampleModel, :email_2)).to be true }
90
+ it { expect(ActiveModel::Validations::PresenceValidator.attached?(ValidatorAttachmentTest::SampleModel, :email_2)).to be true }
91
+ end
92
+
93
+ context 'exclusion validator' do
94
+ it { expect(!ActiveModel::Validations::ExclusionValidator.is_attached?(ValidatorAttachmentTest::SampleModel, :email_2)).to be true }
95
+ it { expect(ActiveModel::Validations::ExclusionValidator.is_attached?(ValidatorAttachmentTest::SampleModel, :exclusion_1, {:in => %w(ab cd ef)})).to be true }
96
+ it { expect(!ActiveModel::Validations::ExclusionValidator.is_attached?(ValidatorAttachmentTest::SampleModel, :exclusion_1, {:in => %w(ab cd ef gh)})).to be true }
97
+ end
98
+
99
+ context 'format validator' do
100
+ it { expect(ActiveModel::Validations::FormatValidator.is_attached?(ValidatorAttachmentTest::SampleModel, :legacy_code)).to be true }
101
+ it { expect(ActiveModel::Validations::FormatValidator.is_attached?(ValidatorAttachmentTest::SampleModel, :legacy_code, {:message => 'wrong format'})).to be true }
102
+ it { expect(ActiveModel::Validations::FormatValidator.is_attached?(ValidatorAttachmentTest::SampleModel, :legacy_code, {:with => /\Aa.+\d\z/})).to be true }
103
+ it { expect(ActiveModel::Validations::FormatValidator.is_attached?(ValidatorAttachmentTest::SampleModel, :legacy_code, {:message => 'wrong format', :with => /\Aa.+\d\z/})).to be true }
104
+ it { expect(!ActiveModel::Validations::FormatValidator.is_attached?(ValidatorAttachmentTest::SampleModel, :legacy_code, {:with => /\Aa.+\z/})).to be true }
105
+ end
106
+
107
+ context 'inclusion validator' do
108
+ it { expect(ActiveModel::Validations::InclusionValidator.is_attached?(ValidatorAttachmentTest::SampleModel, :size, {:in => %w(small medium large)})).to be true }
109
+ it { expect(ActiveModel::Validations::InclusionValidator.is_attached?(ValidatorAttachmentTest::SampleModel, :size, {:message => "%{value} is not a valid size"})).to be true }
110
+ end
111
+
112
+ context 'length validator' do
113
+ it { expect(ActiveModel::Validations::LengthValidator.is_attached?(ValidatorAttachmentTest::SampleModel, :name)).to be true }
114
+ it { expect(ActiveModel::Validations::LengthValidator.is_attached?(ValidatorAttachmentTest::SampleModel, :name, {:minimum => 2})).to be true }
115
+ it { expect(!ActiveModel::Validations::LengthValidator.is_attached?(ValidatorAttachmentTest::SampleModel, :name, {:maximum => 2})).to be true }
116
+ it { expect(ActiveModel::Validations::LengthValidator.is_attached?(ValidatorAttachmentTest::SampleModel, :bio, {:maximum => 500})).to be true }
117
+ # watch out how :in has been interpreted to :minimum .. :maximum
118
+ it { expect(ActiveModel::Validations::LengthValidator.is_attached?(ValidatorAttachmentTest::SampleModel, :password, {:minimum => 6})).to be true }
119
+ it { expect(ActiveModel::Validations::LengthValidator.is_attached?(ValidatorAttachmentTest::SampleModel, :password, {:maximum => 20})).to be true }
120
+ it { expect(!ActiveModel::Validations::LengthValidator.is_attached?(ValidatorAttachmentTest::SampleModel, :registration_number, {:is => 2})).to be true }
121
+ it { expect(ActiveModel::Validations::LengthValidator.is_attached?(ValidatorAttachmentTest::SampleModel, :registration_number, {:is => 6})).to be true }
122
+ it { expect(ActiveModel::Validations::LengthValidator.is_attached?(ValidatorAttachmentTest::SampleModel, :account_number, {:wrong_length => 'wrong length, please try again', :minimum => 2})).to be true }
123
+ it { expect(ActiveModel::Validations::LengthValidator.is_attached?(ValidatorAttachmentTest::SampleModel, :student_id, {:too_long => 'sorry, too long', :maximum => 10})).to be true }
124
+ it { expect(ActiveModel::Validations::LengthValidator.is_attached?(ValidatorAttachmentTest::SampleModel, :mama_telephone, {:is => 8})).to be true }
125
+ end
126
+
127
+ context 'numericality' do
128
+ it { expect(ActiveModel::Validations::NumericalityValidator.is_attached?(ValidatorAttachmentTest::SampleModel, :points)).to be true }
129
+ it { expect(!ActiveModel::Validations::NumericalityValidator.is_attached?(ValidatorAttachmentTest::SampleModel, :points, { :only_integer => true })).to be true }
130
+ it { expect(ActiveModel::Validations::NumericalityValidator.is_attached?(ValidatorAttachmentTest::SampleModel, :games_played, { :only_integer => true })).to be true }
131
+
132
+ it { expect(ActiveModel::Validations::NumericalityValidator.is_attached?(ValidatorAttachmentTest::SampleModel, :num_1, { :greater_than => 1 })).to be true }
133
+ it { expect(ActiveModel::Validations::NumericalityValidator.is_attached?(ValidatorAttachmentTest::SampleModel, :num_2, { :greater_than_or_equal_to => 2 })).to be true }
134
+ it { expect(ActiveModel::Validations::NumericalityValidator.is_attached?(ValidatorAttachmentTest::SampleModel, :num_3, { :equal_to => 3 })).to be true }
135
+ it { expect(ActiveModel::Validations::NumericalityValidator.is_attached?(ValidatorAttachmentTest::SampleModel, :num_4, { :less_than => 4 })).to be true }
136
+ it { expect(ActiveModel::Validations::NumericalityValidator.is_attached?(ValidatorAttachmentTest::SampleModel, :num_5, { :less_than_or_equal_to => 5 })).to be true }
137
+ it { expect(ActiveModel::Validations::NumericalityValidator.is_attached?(ValidatorAttachmentTest::SampleModel, :num_6, { :odd => true })).to be true }
138
+ it { expect(ActiveModel::Validations::NumericalityValidator.is_attached?(ValidatorAttachmentTest::SampleModel, :num_7, { :even => true })).to be true }
139
+ end
140
+
141
+ context 'uniqueness' do
142
+ it { expect(ActiveRecord::Validations::UniquenessValidator.is_attached?(ValidatorAttachmentTest::SampleModel, :identity_number)).to be true }
143
+ it { expect(ActiveRecord::Validations::UniquenessValidator.is_attached?(ValidatorAttachmentTest::SampleModel, :identity_number_1)).to be true }
144
+ it { expect(!ActiveRecord::Validations::UniquenessValidator.is_attached?(ValidatorAttachmentTest::SampleModel, :identity_number_1, { :scope => :num_1 })).to be true }
145
+ it { expect(ActiveRecord::Validations::UniquenessValidator.is_attached?(ValidatorAttachmentTest::SampleModel, :identity_number_1, { :scope => :num_7 })).to be true }
146
+ it { expect(ActiveRecord::Validations::UniquenessValidator.is_attached?(ValidatorAttachmentTest::SampleModel, :identity_number_2)).to be true }
147
+ it { expect(ActiveRecord::Validations::UniquenessValidator.is_attached?(ValidatorAttachmentTest::SampleModel, :identity_number_2, { :case_sensitive => true})).to be true }
148
+ end
149
+
150
+ context 'conditional validation' do
151
+ it { expect(ActiveModel::Validations::PresenceValidator.is_attached?(ValidatorAttachmentTest::SampleModel, :num_8, { :if => :paid_with_card? })).to be true }
152
+ it { expect(ActiveModel::Validations::LengthValidator.is_attached?(ValidatorAttachmentTest::SampleModel, :num_9, { :minimum => 10, :if => :is_admin? })).to be true }
153
+ it { expect(ActiveModel::Validations::PresenceValidator.is_attached?(ValidatorAttachmentTest::SampleModel, :num_10, { :if => :is_admin? })).to be true }
154
+ end
155
+
156
+ context 'custom validator' do
157
+ it { expect(DummyValidator.is_attached?(ValidatorAttachmentTest::SampleModel, :my_facebook_email)).to be true }
158
+ it { expect(ActiveModel::Validations::PresenceValidator.is_attached?(ValidatorAttachmentTest::SampleModel, :my_facebook_email)).to be true }
159
+ end
160
+ end
@@ -1,36 +1,29 @@
1
1
  # -*- encoding: utf-8 -*-
2
+ lib = File.expand_path('../lib', __FILE__)
3
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
+ require 'validator_attachment/version'
2
5
 
3
6
  Gem::Specification.new do |s|
4
7
  s.name = "validator_attachment"
5
- s.version = "1.1.1"
8
+ s.version = ValidatorAttachment::VERSION
6
9
 
7
10
  s.required_rubygems_version = Gem::Requirement.new(">= 1.2") if s.respond_to? :required_rubygems_version=
8
11
  s.authors = ["Panayotis Matsinopoulos"]
9
- s.date = "2012-04-13"
12
+ s.date = "2015-07-12"
10
13
  s.description = "Checks whether an ActiveModel Validator is attached to an attribute of a Model and with which options"
11
14
  s.email = "panayotis@matsinopoulos.gr"
12
15
  s.extra_rdoc_files = ["CHANGELOG", "README.rdoc", "lib/validator_attachment.rb"]
13
- s.files = ["CHANGELOG", "MIT-LICENSE", "README.rdoc", "Rakefile", "lib/validator_attachment.rb", "test/dummy_validator.rb", "test/test_helper.rb", "test/validator_attachment_test.rb", "validator_attachment.gemspec", "Manifest"]
16
+ s.files = ["CHANGELOG", "MIT-LICENSE", "README.rdoc", "Rakefile", "lib/validator_attachment.rb", "spec/dummy_validator.rb", "spec/spec_helper.rb", "spec/validator_attachment_spec.rb", "validator_attachment.gemspec", "Manifest"]
14
17
  s.homepage = "http://github.com/pmatsinopoulos/validator_attachment"
15
18
  s.rdoc_options = ["--line-numbers", "--inline-source", "--title", "Validator_attachment", "--main", "README.rdoc"]
16
19
  s.require_paths = ["lib"]
17
20
  s.rubyforge_project = "validator_attachment"
18
- s.rubygems_version = "1.8.17"
21
+ s.rubygems_version = "2.2.2"
19
22
  s.summary = "Is this ActiveModel Validator Used?"
20
- s.test_files = ["test/validator_attachment_test.rb", "test/test_helper.rb"]
23
+ s.test_files = ["spec/validator_attachment_spec.rb", "spec/spec_helper.rb", "spec/dummy_validator.rb"]
21
24
 
22
- if s.respond_to? :specification_version then
23
- s.specification_version = 3
24
-
25
- if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
26
- s.add_runtime_dependency(%q<rails>, ["~> 3.0"])
27
- s.add_development_dependency(%q<rails>, ["~> 3.0"])
28
- else
29
- s.add_dependency(%q<rails>, ["~> 3.0"])
30
- s.add_dependency(%q<rails>, ["~> 3.0"])
31
- end
32
- else
33
- s.add_dependency(%q<rails>, ["~> 3.0"])
34
- s.add_dependency(%q<rails>, ["~> 3.0"])
35
- end
25
+ s.add_runtime_dependency('rails', "~>4.0", "~>4.0")
26
+ s.add_development_dependency('bundler', '~>1.0')
27
+ s.add_development_dependency('rake', '~>10.0')
28
+ s.add_development_dependency('rspec', '~>3.0')
36
29
  end
metadata CHANGED
@@ -1,36 +1,60 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: validator_attachment
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.1.1
5
- prerelease:
4
+ version: 2.0.0
6
5
  platform: ruby
7
6
  authors:
8
7
  - Panayotis Matsinopoulos
9
8
  autorequire:
10
9
  bindir: bin
11
10
  cert_chain: []
12
- date: 2012-04-13 00:00:00.000000000 Z
11
+ date: 2015-07-12 00:00:00.000000000 Z
13
12
  dependencies:
14
13
  - !ruby/object:Gem::Dependency
15
14
  name: rails
16
15
  requirement: !ruby/object:Gem::Requirement
17
- none: false
18
16
  requirements:
19
17
  - - ~>
20
18
  - !ruby/object:Gem::Version
21
- version: '3.0'
19
+ version: '4.0'
22
20
  type: :runtime
23
21
  prerelease: false
24
22
  version_requirements: !ruby/object:Gem::Requirement
25
- none: false
26
23
  requirements:
27
24
  - - ~>
28
25
  - !ruby/object:Gem::Version
29
- version: '3.0'
26
+ version: '4.0'
30
27
  - !ruby/object:Gem::Dependency
31
- name: rails
28
+ name: bundler
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ~>
32
+ - !ruby/object:Gem::Version
33
+ version: '1.0'
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ~>
39
+ - !ruby/object:Gem::Version
40
+ version: '1.0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: rake
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - ~>
46
+ - !ruby/object:Gem::Version
47
+ version: '10.0'
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ~>
53
+ - !ruby/object:Gem::Version
54
+ version: '10.0'
55
+ - !ruby/object:Gem::Dependency
56
+ name: rspec
32
57
  requirement: !ruby/object:Gem::Requirement
33
- none: false
34
58
  requirements:
35
59
  - - ~>
36
60
  - !ruby/object:Gem::Version
@@ -38,7 +62,6 @@ dependencies:
38
62
  type: :development
39
63
  prerelease: false
40
64
  version_requirements: !ruby/object:Gem::Requirement
41
- none: false
42
65
  requirements:
43
66
  - - ~>
44
67
  - !ruby/object:Gem::Version
@@ -55,16 +78,17 @@ extra_rdoc_files:
55
78
  files:
56
79
  - CHANGELOG
57
80
  - MIT-LICENSE
81
+ - Manifest
58
82
  - README.rdoc
59
83
  - Rakefile
60
84
  - lib/validator_attachment.rb
61
- - test/dummy_validator.rb
62
- - test/test_helper.rb
63
- - test/validator_attachment_test.rb
85
+ - spec/dummy_validator.rb
86
+ - spec/spec_helper.rb
87
+ - spec/validator_attachment_spec.rb
64
88
  - validator_attachment.gemspec
65
- - Manifest
66
89
  homepage: http://github.com/pmatsinopoulos/validator_attachment
67
90
  licenses: []
91
+ metadata: {}
68
92
  post_install_message:
69
93
  rdoc_options:
70
94
  - --line-numbers
@@ -76,24 +100,23 @@ rdoc_options:
76
100
  require_paths:
77
101
  - lib
78
102
  required_ruby_version: !ruby/object:Gem::Requirement
79
- none: false
80
103
  requirements:
81
104
  - - ! '>='
82
105
  - !ruby/object:Gem::Version
83
106
  version: '0'
84
107
  required_rubygems_version: !ruby/object:Gem::Requirement
85
- none: false
86
108
  requirements:
87
109
  - - ! '>='
88
110
  - !ruby/object:Gem::Version
89
111
  version: '1.2'
90
112
  requirements: []
91
113
  rubyforge_project: validator_attachment
92
- rubygems_version: 1.8.21
114
+ rubygems_version: 2.2.2
93
115
  signing_key:
94
- specification_version: 3
116
+ specification_version: 4
95
117
  summary: Is this ActiveModel Validator Used?
96
118
  test_files:
97
- - test/validator_attachment_test.rb
98
- - test/test_helper.rb
119
+ - spec/validator_attachment_spec.rb
120
+ - spec/spec_helper.rb
121
+ - spec/dummy_validator.rb
99
122
  has_rdoc:
data/test/test_helper.rb DELETED
@@ -1,9 +0,0 @@
1
- require 'rubygems'
2
- require 'test/unit'
3
- require 'active_support'
4
- require 'active_model'
5
- require 'active_record'
6
- require 'active_support/core_ext/hash/diff'
7
- require 'active_support/core_ext/object/with_options'
8
- require File.expand_path('../../lib/validator_attachment', __FILE__)
9
- require 'dummy_validator'
@@ -1,155 +0,0 @@
1
- require 'test_helper'
2
-
3
- class ValidatorAttachmentTest < ActiveSupport::TestCase
4
-
5
- class SampleModel
6
- include ActiveModel::Validations
7
- include ActiveRecord::Validations
8
-
9
- validates :acceptance_attr_1, :acceptance => true
10
- validates :acceptance_attr_2, :acceptance => { :allow_nil => true }
11
- validates :acceptance_attr_3, :acceptance => { :allow_nil => false }
12
- validates :acceptance_attr_4, :acceptance => { :accept => 'sure' }
13
- validates :acceptance_attr_5, :acceptance => { :allow_nil => true, :accept => 'sure' }
14
-
15
- validates :email_1, :confirmation => true
16
- validates :email_2, :confirmation => true, :presence => true
17
-
18
- validates :exclusion_1, :exclusion => { :in => %w(ab cd ef), :message => 'not allowed' }
19
-
20
- validates :legacy_code, :format => { :with => /^a.+\d$/, :message => 'wrong format' }
21
-
22
- validates :size, :inclusion => { :in => %w(small medium large),
23
- :message => "%{value} is not a valid size" }
24
-
25
- validates :name, :length => { :minimum => 2 }
26
- validates :bio, :length => { :maximum => 500 }
27
- validates :password, :length => { :in => 6..20 }
28
- validates :registration_number, :length => { :is => 6 }
29
- validates :account_number, :length => { :minimum => 2, :maximum => 6, :wrong_length => 'wrong length, please try again' }
30
- validates :student_id, :length => { :maximum => 10, :too_long => 'sorry, too long', :too_short => 'sorry, too short' }
31
- validates :mama_telephone, :length => { :is => 8 }
32
-
33
- validates :points, :numericality => true
34
- validates :games_played, :numericality => { :only_integer => true }
35
- validates :num_1, :numericality => { :greater_than => 1 }
36
- validates :num_2, :numericality => { :greater_than_or_equal_to => 2 }
37
- validates :num_3, :numericality => { :equal_to => 3 }
38
- validates :num_4, :numericality => { :less_than => 4 }
39
- validates :num_5, :numericality => { :less_than_or_equal_to => 5 }
40
- validates :num_6, :numericality => { :odd => true }
41
- validates :num_7, :numericality => { :even => true }
42
-
43
- validates :identity_number, :uniqueness => true
44
- validates :identity_number_1, :uniqueness => { :scope => :num_7 }
45
- validates :identity_number_2, :uniqueness => { :case_sensitive => true}
46
-
47
- validates :num_8, :presence => true, :if => :paid_with_card?
48
-
49
- with_options :if => :is_admin? do |admin|
50
- admin.validates :num_9, :length => { :minimum => 10 }
51
- admin.validates :num_10, :presence => true
52
- end
53
-
54
- validates :my_facebook_email, :presence => true, :dummy => true
55
-
56
- def persisted?
57
- false
58
- end
59
-
60
- end
61
-
62
- test "validator attachment" do
63
- assert ActiveModel::EachValidator.respond_to?(:is_attached?)
64
- assert ActiveModel::EachValidator.respond_to?(:attached?)
65
- end
66
-
67
- test "acceptance validator" do
68
- assert ActiveModel::Validations::AcceptanceValidator.is_attached?(ValidatorAttachmentTest::SampleModel, :acceptance_attr_1)
69
- assert ActiveModel::Validations::AcceptanceValidator.is_attached?(ValidatorAttachmentTest::SampleModel, :acceptance_attr_2, {:allow_nil => true})
70
- assert ActiveModel::Validations::AcceptanceValidator.is_attached?(ValidatorAttachmentTest::SampleModel, :acceptance_attr_3, {:allow_nil => false})
71
- assert ActiveModel::Validations::AcceptanceValidator.is_attached?(ValidatorAttachmentTest::SampleModel, :acceptance_attr_4, {:accept => 'sure'})
72
- assert ActiveModel::Validations::AcceptanceValidator.is_attached?(ValidatorAttachmentTest::SampleModel, :acceptance_attr_5, {:accept => 'sure'})
73
- assert !ActiveModel::Validations::AcceptanceValidator.is_attached?(ValidatorAttachmentTest::SampleModel, :acceptance_attr_5, {:accept => 'sure'}, true)
74
- assert ActiveModel::Validations::AcceptanceValidator.is_attached?(ValidatorAttachmentTest::SampleModel, :acceptance_attr_5, {:accept => 'sure', :allow_nil => true}, true)
75
- end
76
-
77
- test "confirmation validator" do
78
- assert ActiveModel::Validations::ConfirmationValidator.is_attached?(ValidatorAttachmentTest::SampleModel, :email_1)
79
- assert !ActiveModel::Validations::ConfirmationValidator.is_attached?(ValidatorAttachmentTest::SampleModel, :acceptance_attr_1)
80
- assert ActiveModel::Validations::ConfirmationValidator.is_attached?(ValidatorAttachmentTest::SampleModel, :email_2)
81
- end
82
-
83
- test "presence validator" do
84
- assert ActiveModel::Validations::PresenceValidator.is_attached?(ValidatorAttachmentTest::SampleModel, :email_2)
85
- assert ActiveModel::Validations::PresenceValidator.attached?(ValidatorAttachmentTest::SampleModel, :email_2)
86
- end
87
-
88
- test "exclusion validator" do
89
- assert !ActiveModel::Validations::ExclusionValidator.is_attached?(ValidatorAttachmentTest::SampleModel, :email_2)
90
- assert ActiveModel::Validations::ExclusionValidator.is_attached?(ValidatorAttachmentTest::SampleModel, :exclusion_1, {:in => %w(ab cd ef)})
91
- assert !ActiveModel::Validations::ExclusionValidator.is_attached?(ValidatorAttachmentTest::SampleModel, :exclusion_1, {:in => %w(ab cd ef gh)})
92
- end
93
-
94
- test "format validator" do
95
- assert ActiveModel::Validations::FormatValidator.is_attached?(ValidatorAttachmentTest::SampleModel, :legacy_code)
96
- assert ActiveModel::Validations::FormatValidator.is_attached?(ValidatorAttachmentTest::SampleModel, :legacy_code, {:message => 'wrong format'})
97
- assert ActiveModel::Validations::FormatValidator.is_attached?(ValidatorAttachmentTest::SampleModel, :legacy_code, {:with => /^a.+\d$/})
98
- assert ActiveModel::Validations::FormatValidator.is_attached?(ValidatorAttachmentTest::SampleModel, :legacy_code, {:message => 'wrong format', :with => /^a.+\d$/})
99
- assert !ActiveModel::Validations::FormatValidator.is_attached?(ValidatorAttachmentTest::SampleModel, :legacy_code, {:with => /^a.+$/})
100
- end
101
-
102
- test "inclusion validator" do
103
- assert ActiveModel::Validations::InclusionValidator.is_attached?(ValidatorAttachmentTest::SampleModel, :size, {:in => %w(small medium large)})
104
- assert ActiveModel::Validations::InclusionValidator.is_attached?(ValidatorAttachmentTest::SampleModel, :size, {:message => "%{value} is not a valid size"})
105
- end
106
-
107
- test "length validator" do
108
- assert ActiveModel::Validations::LengthValidator.is_attached?(ValidatorAttachmentTest::SampleModel, :name)
109
- assert ActiveModel::Validations::LengthValidator.is_attached?(ValidatorAttachmentTest::SampleModel, :name, {:minimum => 2})
110
- assert !ActiveModel::Validations::LengthValidator.is_attached?(ValidatorAttachmentTest::SampleModel, :name, {:maximum => 2})
111
- assert ActiveModel::Validations::LengthValidator.is_attached?(ValidatorAttachmentTest::SampleModel, :bio, {:maximum => 500})
112
- # watch out how :in has been interpreted to :minimum .. :maximum
113
- assert ActiveModel::Validations::LengthValidator.is_attached?(ValidatorAttachmentTest::SampleModel, :password, {:minimum => 6})
114
- assert ActiveModel::Validations::LengthValidator.is_attached?(ValidatorAttachmentTest::SampleModel, :password, {:maximum => 20})
115
- assert !ActiveModel::Validations::LengthValidator.is_attached?(ValidatorAttachmentTest::SampleModel, :registration_number, {:is => 2})
116
- assert ActiveModel::Validations::LengthValidator.is_attached?(ValidatorAttachmentTest::SampleModel, :registration_number, {:is => 6})
117
- assert ActiveModel::Validations::LengthValidator.is_attached?(ValidatorAttachmentTest::SampleModel, :account_number, {:wrong_length => 'wrong length, please try again', :minimum => 2})
118
- assert ActiveModel::Validations::LengthValidator.is_attached?(ValidatorAttachmentTest::SampleModel, :student_id, {:too_long => 'sorry, too long', :maximum => 10})
119
- assert ActiveModel::Validations::LengthValidator.is_attached?(ValidatorAttachmentTest::SampleModel, :mama_telephone, {:is => 8})
120
- end
121
-
122
- test "numericality" do
123
- assert ActiveModel::Validations::NumericalityValidator.is_attached?(ValidatorAttachmentTest::SampleModel, :points)
124
- assert !ActiveModel::Validations::NumericalityValidator.is_attached?(ValidatorAttachmentTest::SampleModel, :points, { :only_integer => true })
125
- assert ActiveModel::Validations::NumericalityValidator.is_attached?(ValidatorAttachmentTest::SampleModel, :games_played, { :only_integer => true })
126
-
127
- assert ActiveModel::Validations::NumericalityValidator.is_attached?(ValidatorAttachmentTest::SampleModel, :num_1, { :greater_than => 1 })
128
- assert ActiveModel::Validations::NumericalityValidator.is_attached?(ValidatorAttachmentTest::SampleModel, :num_2, { :greater_than_or_equal_to => 2 })
129
- assert ActiveModel::Validations::NumericalityValidator.is_attached?(ValidatorAttachmentTest::SampleModel, :num_3, { :equal_to => 3 })
130
- assert ActiveModel::Validations::NumericalityValidator.is_attached?(ValidatorAttachmentTest::SampleModel, :num_4, { :less_than => 4 })
131
- assert ActiveModel::Validations::NumericalityValidator.is_attached?(ValidatorAttachmentTest::SampleModel, :num_5, { :less_than_or_equal_to => 5 })
132
- assert ActiveModel::Validations::NumericalityValidator.is_attached?(ValidatorAttachmentTest::SampleModel, :num_6, { :odd => true })
133
- assert ActiveModel::Validations::NumericalityValidator.is_attached?(ValidatorAttachmentTest::SampleModel, :num_7, { :even => true })
134
- end
135
-
136
- test "uniqueness" do
137
- assert ActiveRecord::Validations::UniquenessValidator.is_attached?(ValidatorAttachmentTest::SampleModel, :identity_number)
138
- assert ActiveRecord::Validations::UniquenessValidator.is_attached?(ValidatorAttachmentTest::SampleModel, :identity_number_1)
139
- assert !ActiveRecord::Validations::UniquenessValidator.is_attached?(ValidatorAttachmentTest::SampleModel, :identity_number_1, { :scope => :num_1 })
140
- assert ActiveRecord::Validations::UniquenessValidator.is_attached?(ValidatorAttachmentTest::SampleModel, :identity_number_1, { :scope => :num_7 })
141
- assert ActiveRecord::Validations::UniquenessValidator.is_attached?(ValidatorAttachmentTest::SampleModel, :identity_number_2)
142
- assert ActiveRecord::Validations::UniquenessValidator.is_attached?(ValidatorAttachmentTest::SampleModel, :identity_number_2, { :case_sensitive => true})
143
- end
144
-
145
- test "conditional validation" do
146
- assert ActiveModel::Validations::PresenceValidator.is_attached?(ValidatorAttachmentTest::SampleModel, :num_8, { :if => :paid_with_card? })
147
- assert ActiveModel::Validations::LengthValidator.is_attached?(ValidatorAttachmentTest::SampleModel, :num_9, { :minimum => 10, :if => :is_admin? })
148
- assert ActiveModel::Validations::PresenceValidator.is_attached?(ValidatorAttachmentTest::SampleModel, :num_10, { :if => :is_admin? })
149
- end
150
-
151
- test "custom validator" do
152
- assert DummyValidator.is_attached?(ValidatorAttachmentTest::SampleModel, :my_facebook_email)
153
- assert ActiveModel::Validations::PresenceValidator.is_attached?(ValidatorAttachmentTest::SampleModel, :my_facebook_email)
154
- end
155
- end