date_validator 0.6.3 → 0.6.4

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.
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: ad328bfcd91fe2dd14dffada0d846bbc8098de12
4
+ data.tar.gz: ca2397f4635d7f6ca4fc7e13430de2138ac1df41
5
+ SHA512:
6
+ metadata.gz: 5dbb18aba6310ee0846aeec876f46b98d53b1ee96a75037e2f285055e1948647e74a5c5bb1f60af11d75ad08d8690948634f6f25506a7b97b7d21ddb43bf6f41
7
+ data.tar.gz: 46a423f1e6dd42f08e5fadb1d1a42cd440ee308025679e562f316a55f9b873cabec519e1705d90a04efbc0b9734ea8ae8a0a9a8635a9b60d9fedb1500acd0d9d
data/.rvmrc CHANGED
@@ -1 +1 @@
1
- rvm use ruby-1.9.2@date_validator --create
1
+ rvm use ruby-2.0.0@date_validator --create
@@ -1,8 +1,8 @@
1
1
  # http://about.travis-ci.org/docs/user/build-configuration/
2
+ langauge: ruby
2
3
  rvm:
3
- - 1.8.7
4
4
  - 1.9.2
5
- - ree
6
- - ruby-head
7
- - rbx
8
- - rbx-2.0
5
+ - 1.9.3
6
+ - 2.0.0
7
+ - rbx-19mode
8
+ - jruby-19mode
@@ -14,12 +14,12 @@ Gem::Specification.new do |s|
14
14
 
15
15
  s.rubyforge_project = "date_validator"
16
16
 
17
- s.add_runtime_dependency 'activemodel', ['~> 3.0']
17
+ s.add_runtime_dependency 'activemodel', '>= 3'
18
18
 
19
19
  s.add_development_dependency 'minitest'
20
20
  s.add_development_dependency 'rake'
21
- s.add_development_dependency 'activesupport', ['~> 3.0']
22
- s.add_development_dependency 'tzinfo', '~> 0.3.0'
21
+ s.add_development_dependency 'activesupport'
22
+ s.add_development_dependency 'tzinfo'
23
23
 
24
24
  s.files = `git ls-files`.split("\n")
25
25
  s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
@@ -33,10 +33,33 @@ module ActiveModel
33
33
  end
34
34
  end
35
35
 
36
+ # Overridden because standard allow_nil and allow_blank checks don't work with
37
+ # string expressions that cannot be type cast to dates. We have to validate
38
+ # the pre-type cast values.
39
+ def validate(record)
40
+ attributes.each do |attribute|
41
+ value = record.read_attribute_for_validation(attribute)
42
+ validate_each(record, attribute, value)
43
+ end
44
+ end
45
+
36
46
  # The actual validator method. It is called when ActiveRecord iterates
37
47
  # over all the validators.
38
48
  def validate_each(record, attr_name, value)
39
- return if options[:allow_nil] && value.nil?
49
+ before_type_cast = :"#{attr_name}_before_type_cast"
50
+
51
+ value_before_type_cast = if record.respond_to?(before_type_cast)
52
+ record.send(before_type_cast)
53
+ else
54
+ nil
55
+ end
56
+
57
+ if value_before_type_cast.present? && value.nil?
58
+ record.errors.add(attr_name, :not_a_date, options)
59
+ return
60
+ end
61
+
62
+ return if (value.nil? && options[:allow_nil]) || (value.blank? && options[:allow_blank])
40
63
 
41
64
  unless value
42
65
  record.errors.add(attr_name, :not_a_date, options)
@@ -1,4 +1,4 @@
1
1
  module DateValidator
2
2
  # The version number.
3
- VERSION = "0.6.3"
3
+ VERSION = "0.6.4"
4
4
  end
@@ -0,0 +1,8 @@
1
+ de:
2
+ errors:
3
+ messages:
4
+ not_a_date: "ist kein Datum"
5
+ after: "muss nach %{date} sein"
6
+ after_or_equal_to: "muss nach oder gleich %{date} sein"
7
+ before: "muss vor %{date} sein"
8
+ before_or_equal_to: "muss vor oder gleich %{date} sein"
@@ -0,0 +1,11 @@
1
+ # Sample localization file for English. Add more files in this directory for other locales.
2
+ # See http://github.com/svenfuchs/rails-i18n/tree/master/rails%2Flocale for starting points.
3
+
4
+ fr:
5
+ errors:
6
+ messages:
7
+ not_a_date: "n'est pas une date"
8
+ after: "doit être après %{date}"
9
+ after_or_equal_to: "doit être supérieur ou égal à %{date}"
10
+ before: "doit être avant %{date}"
11
+ before_or_equal_to: "doit être inférieur ou égal à %{date}"
@@ -131,6 +131,22 @@ module ActiveModel
131
131
 
132
132
  TestRecord.new(Time.now).valid?.must_equal false
133
133
  end
134
+
135
+ describe "with type cast attributes" do
136
+ before do
137
+ TestRecord.send(:define_method, :expiration_date_before_type_cast, lambda { 'last year' })
138
+ end
139
+
140
+ it "should detect invalid date expressions when nil is allowed" do
141
+ TestRecord.validates(:expiration_date, :date => true, :allow_nil => true)
142
+ TestRecord.new(nil).valid?.must_equal false
143
+ end
144
+
145
+ it "should detect invalid date expressions when blank is allowed" do
146
+ TestRecord.validates(:expiration_date, :date => true, :allow_blank => true)
147
+ TestRecord.new(nil).valid?.must_equal false
148
+ end
149
+ end
134
150
  end
135
151
 
136
152
  end
metadata CHANGED
@@ -1,8 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: date_validator
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.6.3
5
- prerelease:
4
+ version: 0.6.4
6
5
  platform: ruby
7
6
  authors:
8
7
  - Oriol Gual
@@ -11,63 +10,78 @@ authors:
11
10
  autorequire:
12
11
  bindir: bin
13
12
  cert_chain: []
14
- date: 2012-01-22 00:00:00.000000000Z
13
+ date: 2013-03-29 00:00:00.000000000 Z
15
14
  dependencies:
16
15
  - !ruby/object:Gem::Dependency
17
16
  name: activemodel
18
- requirement: &70140810524120 !ruby/object:Gem::Requirement
19
- none: false
17
+ requirement: !ruby/object:Gem::Requirement
20
18
  requirements:
21
- - - ~>
19
+ - - '>='
22
20
  - !ruby/object:Gem::Version
23
- version: '3.0'
21
+ version: '3'
24
22
  type: :runtime
25
23
  prerelease: false
26
- version_requirements: *70140810524120
24
+ version_requirements: !ruby/object:Gem::Requirement
25
+ requirements:
26
+ - - '>='
27
+ - !ruby/object:Gem::Version
28
+ version: '3'
27
29
  - !ruby/object:Gem::Dependency
28
30
  name: minitest
29
- requirement: &70140810523700 !ruby/object:Gem::Requirement
30
- none: false
31
+ requirement: !ruby/object:Gem::Requirement
31
32
  requirements:
32
- - - ! '>='
33
+ - - '>='
33
34
  - !ruby/object:Gem::Version
34
35
  version: '0'
35
36
  type: :development
36
37
  prerelease: false
37
- version_requirements: *70140810523700
38
+ version_requirements: !ruby/object:Gem::Requirement
39
+ requirements:
40
+ - - '>='
41
+ - !ruby/object:Gem::Version
42
+ version: '0'
38
43
  - !ruby/object:Gem::Dependency
39
44
  name: rake
40
- requirement: &70140810523240 !ruby/object:Gem::Requirement
41
- none: false
45
+ requirement: !ruby/object:Gem::Requirement
42
46
  requirements:
43
- - - ! '>='
47
+ - - '>='
44
48
  - !ruby/object:Gem::Version
45
49
  version: '0'
46
50
  type: :development
47
51
  prerelease: false
48
- version_requirements: *70140810523240
52
+ version_requirements: !ruby/object:Gem::Requirement
53
+ requirements:
54
+ - - '>='
55
+ - !ruby/object:Gem::Version
56
+ version: '0'
49
57
  - !ruby/object:Gem::Dependency
50
58
  name: activesupport
51
- requirement: &70140810522720 !ruby/object:Gem::Requirement
52
- none: false
59
+ requirement: !ruby/object:Gem::Requirement
53
60
  requirements:
54
- - - ~>
61
+ - - '>='
55
62
  - !ruby/object:Gem::Version
56
- version: '3.0'
63
+ version: '0'
57
64
  type: :development
58
65
  prerelease: false
59
- version_requirements: *70140810522720
66
+ version_requirements: !ruby/object:Gem::Requirement
67
+ requirements:
68
+ - - '>='
69
+ - !ruby/object:Gem::Version
70
+ version: '0'
60
71
  - !ruby/object:Gem::Dependency
61
72
  name: tzinfo
62
- requirement: &70140810522220 !ruby/object:Gem::Requirement
63
- none: false
73
+ requirement: !ruby/object:Gem::Requirement
64
74
  requirements:
65
- - - ~>
75
+ - - '>='
66
76
  - !ruby/object:Gem::Version
67
- version: 0.3.0
77
+ version: '0'
68
78
  type: :development
69
79
  prerelease: false
70
- version_requirements: *70140810522220
80
+ version_requirements: !ruby/object:Gem::Requirement
81
+ requirements:
82
+ - - '>='
83
+ - !ruby/object:Gem::Version
84
+ version: '0'
71
85
  description: A simple, ORM agnostic, Ruby 1.9 compatible date validator for Rails
72
86
  3, based on ActiveModel. Currently supporting :after, :before, :after_or_equal_to
73
87
  and :before_or_equal_to options.
@@ -92,35 +106,36 @@ files:
92
106
  - lib/date_validator.rb
93
107
  - lib/date_validator/version.rb
94
108
  - locales/ca.yml
109
+ - locales/de.yml
95
110
  - locales/en.yml
96
111
  - locales/es.yml
112
+ - locales/fr.yml
97
113
  - locales/nl.yml
98
114
  - locales/ru.yml
99
115
  - test/date_validator_test.rb
100
116
  - test/test_helper.rb
101
117
  homepage: http://github.com/codegram/date_validator
102
118
  licenses: []
119
+ metadata: {}
103
120
  post_install_message:
104
121
  rdoc_options: []
105
122
  require_paths:
106
123
  - lib
107
124
  required_ruby_version: !ruby/object:Gem::Requirement
108
- none: false
109
125
  requirements:
110
- - - ! '>='
126
+ - - '>='
111
127
  - !ruby/object:Gem::Version
112
128
  version: '0'
113
129
  required_rubygems_version: !ruby/object:Gem::Requirement
114
- none: false
115
130
  requirements:
116
- - - ! '>='
131
+ - - '>='
117
132
  - !ruby/object:Gem::Version
118
133
  version: '0'
119
134
  requirements: []
120
135
  rubyforge_project: date_validator
121
- rubygems_version: 1.8.10
136
+ rubygems_version: 2.0.0
122
137
  signing_key:
123
- specification_version: 3
138
+ specification_version: 4
124
139
  summary: A simple, ORM agnostic, Ruby 1.9 compatible date validator for Rails 3, based
125
140
  on ActiveModel.
126
141
  test_files: