validates_timeliness 7.0.0 → 8.0.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 506a3b1b6bf8487da01734e154c8bbd8c4afd5ab308dc11b4928b26c30d1a658
4
- data.tar.gz: 3c380ad2708dc2946a274c473451bb1db6c1d71d0e5da462b658dad735cc9560
3
+ metadata.gz: fddd24dc1daff9d9c90db6d6cb477519ab77abcf5dc8c55c5c69af61504eba46
4
+ data.tar.gz: e16bbad97a83834a912610ff682fe2c93ef7204e0b19f070becd84e4e3ebaf18
5
5
  SHA512:
6
- metadata.gz: 2ef5523111dee8a055989d0fa7c751d6dc34e959e2442ef99b0b46050097a31983a350ab4d6a1d3bc00ac4ebc4d00320622c9cc7aaad799535bd6dcb2084849f
7
- data.tar.gz: b15a9e6cd84b59830b45a3bce59d9cc664b2a0a5504423a355cea340614ae2a136a41ee37fc180f00b70398cd50deb67d20a1459165945fccc28eb2d79ee73e2
6
+ metadata.gz: 443d66dd2feb66c01e77294236fbf7b197e358246dbd40b9014c5b888e23810219851d89dd320db9e0a256bc62a6402fdbcc326684941566dbdc331285faefce
7
+ data.tar.gz: 0d1f13688d2a26ffaa940b409c9f6139cd780b21ffffb1ef02470718bd63d3d1e86bf2bcf4e411b15de4cb7badb215cdd7df8088f59ff63f044f924fcbdf570d
@@ -7,27 +7,9 @@ jobs:
7
7
  fail-fast: false
8
8
  matrix:
9
9
  include:
10
- - gemfile: rails_7_0
11
- ruby: 2.7
12
- - gemfile: rails_7_0
13
- ruby: 3.0
14
- - gemfile: rails_7_0
15
- ruby: 3.1
16
-
17
- - gemfile: rails_7_1
18
- ruby: 2.7
19
- - gemfile: rails_7_1
20
- ruby: 3.0
21
- - gemfile: rails_7_1
22
- ruby: 3.1
23
- - gemfile: rails_7_1
24
- ruby: 3.2
25
-
26
- - gemfile: rails_7_2
27
- ruby: 3.1
28
- - gemfile: rails_7_2
10
+ - gemfile: rails_8_0
29
11
  ruby: 3.2
30
- - gemfile: rails_7_2
12
+ - gemfile: rails_8_0
31
13
  ruby: 3.3
32
14
 
33
15
  name: ${{ matrix.gemfile }}, ruby ${{ matrix.ruby }}
data/CHANGELOG.md CHANGED
@@ -1,3 +1,17 @@
1
+ # 8.0.0 [2024-12-31]
2
+ * Support Rails v8.x
3
+ * Support passing non-reserved validation options to errors
4
+
5
+ # 7.0.0 [2024-11-30]
6
+ * Support Rails v7.x
7
+ * Removed all method overrides in ActiveModel now that the datetime type correctly stores before_type_cast values.
8
+
9
+ # 6.0.1 [2023-01-12]
10
+ * TODO need to complete this
11
+
12
+ # 6.0.0 [2022-10-20]
13
+ * TODO need to complete this
14
+
1
15
  # 5.0.0 [2021-04-03]
2
16
  * Fix DateTimeSelect extension support (AquisTech)
3
17
  * Relaxed Timeliness dependency version which allows for >= 0.4.0 with
data/README.md CHANGED
@@ -6,13 +6,14 @@
6
6
 
7
7
  ## Description
8
8
 
9
- Complete validation of dates, times and datetimes for Rails 7.x and ActiveModel.
9
+ Complete validation of dates, times and datetimes for Rails 8.x and ActiveModel.
10
10
 
11
11
  Older Rails versions:
12
12
 
13
13
  - Rails 4.x: [https://github.com/adzap/validates_timeliness/tree/4-0-stable]
14
14
  - Rails 5.x: [https://github.com/adzap/validates_timeliness/tree/5-0-stable]
15
15
  - Rails 6.x: [https://github.com/adzap/validates_timeliness/tree/6-0-stable]
16
+ - Rails 7.x: [https://github.com/adzap/validates_timeliness/tree/7-0-stable]
16
17
 
17
18
 
18
19
  ## Features
@@ -30,7 +31,7 @@ Older Rails versions:
30
31
 
31
32
  In Gemfile
32
33
  ```ruby
33
- gem 'validates_timeliness', '~> 7.0.0'
34
+ gem 'validates_timeliness', '~> 8.0.0.beta1'
34
35
  ```
35
36
 
36
37
  Run bundler:
@@ -2,10 +2,10 @@
2
2
 
3
3
  source "https://rubygems.org"
4
4
 
5
- gem "rails", "~> 7.0.0"
5
+ gem "rails", "~> 8.0.0"
6
6
  gem "rspec"
7
7
  gem "rspec-rails", "~> 6.0"
8
- gem "sqlite3", "~> 1.4"
8
+ gem "sqlite3", "~> 2.0"
9
9
  gem "byebug"
10
10
  gem "appraisal"
11
11
  gem "nokogiri"
@@ -21,6 +21,8 @@ module ValidatesTimeliness
21
21
 
22
22
  RESTRICTION_ERROR_MESSAGE = "Error occurred validating %s for %s restriction:\n%s"
23
23
 
24
+ RESERVED_OPTIONS = (RESTRICTIONS.keys + RESTRICTIONS.keys.map { |option| :"#{option}_message" }).freeze
25
+
24
26
  def self.kind
25
27
  :timeliness
26
28
  end
@@ -72,7 +74,7 @@ module ValidatesTimeliness
72
74
  begin
73
75
  restriction_value = @converter.type_cast_value(@converter.evaluate(options[restriction], record))
74
76
  unless value.send(RESTRICTIONS[restriction], restriction_value)
75
- add_error(record, attr_name, restriction, restriction_value) and break
77
+ add_error(record, attr_name, restriction, value: value, restriction_value: restriction_value) and break
76
78
  end
77
79
  rescue => e
78
80
  unless ValidatesTimeliness.ignore_restriction_errors
@@ -83,13 +85,20 @@ module ValidatesTimeliness
83
85
  end
84
86
  end
85
87
 
86
- def add_error(record, attr_name, message, value=nil)
87
- value = format_error_value(value) if value
88
- message_options = { message: options.fetch(:"#{message}_message", options[:message]), restriction: value }
89
- record.errors.add(attr_name, message, **message_options)
88
+ def add_error(record, attr_name, message, restriction_value: nil, value: nil)
89
+ error_options = options.except(*RESERVED_OPTIONS).merge!(
90
+ restriction: format_error_value(restriction_value),
91
+ value: value
92
+ )
93
+
94
+ message_text = options[:"#{message}_message"]
95
+ error_options[:message] = message_text if message_text.present?
96
+
97
+ record.errors.add(attr_name, message, **error_options)
90
98
  end
91
99
 
92
100
  def format_error_value(value)
101
+ return unless value
93
102
  format = I18n.t(@type, default: DEFAULT_ERROR_VALUE_FORMATS[@type], scope: 'validates_timeliness.error_value_formats')
94
103
  value.strftime(format)
95
104
  end
@@ -1,3 +1,3 @@
1
1
  module ValidatesTimeliness
2
- VERSION = '7.0.0'
2
+ VERSION = '8.0.0'
3
3
  end
@@ -185,6 +185,26 @@ RSpec.describe ValidatesTimeliness::Validator do
185
185
  end
186
186
  end
187
187
 
188
+ describe "custom option" do
189
+ it "should pass custom options to the error" do
190
+ Person.validates_datetime :birth_datetime, :on_or_before => Time.utc(2010,1,2,3,4,5), :custom => 'option'
191
+
192
+ with_each_model_value(:birth_datetime, Time.utc(2010,1,2,3,4,5,10000), Person) do |record, value|
193
+ expect(record).to_not be_valid
194
+ expect(record.errors.where(:birth_datetime).first.options).to include(custom: 'option')
195
+ end
196
+ end
197
+
198
+ it "should not pass config options to the error" do
199
+ Person.validates_datetime :birth_datetime, :on_or_before => Time.utc(2010,1,2,3,4,5), :custom => 'option'
200
+
201
+ with_each_model_value(:birth_datetime, Time.utc(2010,1,2,3,4,5,10000), Person) do |record, value|
202
+ expect(record).to_not be_valid
203
+ expect(record.errors.where(:birth_datetime).first.options.keys).to_not include(:on_or_before)
204
+ end
205
+ end
206
+ end
207
+
188
208
  describe "restriction value errors" do
189
209
  let(:person) { Person.new(:birth_date => Date.today) }
190
210
 
@@ -28,6 +28,6 @@ Gem::Specification.new do |s|
28
28
  "wiki_uri" => "#{github_url}/wiki",
29
29
  }
30
30
 
31
- s.add_runtime_dependency("activemodel", [">= 7.0.0", "< 8"])
31
+ s.add_runtime_dependency("activemodel", [">= 8.0.0", "< 9"])
32
32
  s.add_runtime_dependency("timeliness", [">= 0.3.10", "< 1"])
33
33
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: validates_timeliness
3
3
  version: !ruby/object:Gem::Version
4
- version: 7.0.0
4
+ version: 8.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Adam Meehan
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2024-11-30 00:00:00.000000000 Z
11
+ date: 2024-12-31 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activemodel
@@ -16,20 +16,20 @@ dependencies:
16
16
  requirements:
17
17
  - - ">="
18
18
  - !ruby/object:Gem::Version
19
- version: 7.0.0
19
+ version: 8.0.0
20
20
  - - "<"
21
21
  - !ruby/object:Gem::Version
22
- version: '8'
22
+ version: '9'
23
23
  type: :runtime
24
24
  prerelease: false
25
25
  version_requirements: !ruby/object:Gem::Requirement
26
26
  requirements:
27
27
  - - ">="
28
28
  - !ruby/object:Gem::Version
29
- version: 7.0.0
29
+ version: 8.0.0
30
30
  - - "<"
31
31
  - !ruby/object:Gem::Version
32
- version: '8'
32
+ version: '9'
33
33
  - !ruby/object:Gem::Dependency
34
34
  name: timeliness
35
35
  requirement: !ruby/object:Gem::Requirement
@@ -66,9 +66,7 @@ files:
66
66
  - LICENSE
67
67
  - README.md
68
68
  - Rakefile
69
- - gemfiles/rails_7_0.gemfile
70
- - gemfiles/rails_7_1.gemfile
71
- - gemfiles/rails_7_2.gemfile
69
+ - gemfiles/rails_8_0.gemfile
72
70
  - init.rb
73
71
  - lib/generators/validates_timeliness/install_generator.rb
74
72
  - lib/generators/validates_timeliness/templates/en.yml
@@ -131,7 +129,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
131
129
  - !ruby/object:Gem::Version
132
130
  version: '0'
133
131
  requirements: []
134
- rubygems_version: 3.3.27
132
+ rubygems_version: 3.4.19
135
133
  signing_key:
136
134
  specification_version: 4
137
135
  summary: Date and time validation plugin for Rails which allows custom formats
@@ -1,13 +0,0 @@
1
- # This file was generated by Appraisal
2
-
3
- source "https://rubygems.org"
4
-
5
- gem "rails", "~> 7.1.0"
6
- gem "rspec"
7
- gem "rspec-rails", "~> 6.0"
8
- gem "sqlite3", "~> 1.4"
9
- gem "byebug"
10
- gem "appraisal"
11
- gem "nokogiri"
12
-
13
- gemspec path: "../"
@@ -1,13 +0,0 @@
1
- # This file was generated by Appraisal
2
-
3
- source "https://rubygems.org"
4
-
5
- gem "rails", "~> 7.2.0"
6
- gem "rspec"
7
- gem "rspec-rails", "~> 6.0"
8
- gem "sqlite3", "~> 1.4"
9
- gem "byebug"
10
- gem "appraisal"
11
- gem "nokogiri"
12
-
13
- gemspec path: "../"