Compare commits

..

48 Commits

Author SHA1 Message Date
Adam Meehan
3269312ae2 v4.1.1 2019-08-06 15:12:47 +10:00
Adam Meehan
d9b81b79a4 bump README install version 2019-08-06 15:07:30 +10:00
Adam Meehan
8a85da19e2 removing ruby 2.3 and rails 4.0 and 4.1 official support 2019-08-06 15:04:17 +10:00
Adam Meehan
f2cd9aca17 ensure timeliness initializer is after initializer files 2019-08-03 12:53:04 +10:00
Adam Meehan
5354f603ff fix sqlite3 version 2019-08-03 12:52:30 +10:00
Adam Meehan
6193410b55 Add Rails initializer to set Timeliness.ambiguous_date_format for Timeliness v0.4+ 2019-08-03 12:39:18 +10:00
Adam Meehan
93b8b1a70b v4.1.0 2019-06-11 20:51:42 +10:00
Adam Meehan
e531c8f8ef update changelog 2019-06-11 20:51:34 +10:00
Adam Meehan
658deca1c8 use travis matrix for ruby + rails versions 2019-06-11 20:24:14 +10:00
Adam Meehan
a6d617e77d limit all gemfiles sqlite version 2019-06-11 19:37:18 +10:00
Adam Meehan
101bb5d5f7 limit sqlite3 version 2019-06-11 19:28:02 +10:00
Adam Meehan
5e6e5222dc https on rubygems 2019-06-11 19:25:47 +10:00
Adam Meehan
c81ec5d604 sqlite3 gem issue 2019-06-11 19:13:00 +10:00
Adam Meehan
f3f3d01db7 fix sqlite gem issue 2019-06-11 17:57:38 +10:00
Adam Meehan
acd9fc13e4 add bundle command to travis 2019-06-11 17:24:32 +10:00
Adam Meehan
5743d87bc7 wrangle bundler versions in travis 2019-06-11 17:17:14 +10:00
Adam Meehan
e0790bca9b bump appraisal rails to 4.2.11 2019-06-11 14:51:12 +10:00
Adam Meehan
39f698feb2 bump travis to ruby 2.5.5 2019-06-11 14:50:51 +10:00
Adam Meehan
bd39aef4fb Revert "drop rails 4.0 and 4.1 both EOLed"
This reverts commit a05f091a42.
2019-06-11 14:50:05 +10:00
Adam Meehan
a3431bc91a relax timeliness dependency 2019-06-11 14:42:11 +10:00
Adam Meehan
fda194584a bump timeliness version 2019-02-03 11:57:36 +11:00
Adam Meehan
a05f091a42 drop rails 4.0 and 4.1 both EOLed 2018-05-13 21:30:20 +10:00
Adam Meehan
faf708e3be force nokigiri version up 2018-05-13 21:25:31 +10:00
Adam Meehan
38bb74844d need travis bundler fix 2018-05-13 21:15:11 +10:00
Adam Meehan
e275b63203 Merge branch 'master' of github.com:adzap/validates_timeliness 2018-05-13 21:01:36 +10:00
Adam Meehan
e73e0eb30f change travis command to rspec bin 2018-05-13 21:01:12 +10:00
Adam Meehan
43554d8bf0 Merge pull request #152 from aditya-kapoor/allow-generic-msg
Allow the validator to take in the `message` option too.
2018-05-13 20:50:08 +10:00
Adam Meehan
da473b7eea Update validator.rb
tweak message key lookup
2018-05-13 20:49:25 +10:00
Adam Meehan
fc2af73656 update travis rubies and appraisal rails 2018-05-13 20:46:53 +10:00
Adam Meehan
936c853fdd Merge branch 'master' of github.com:adzap/validates_timeliness 2018-05-13 20:39:32 +10:00
Adam Meehan
f27324a404 relax gemfile gem version 2018-05-13 20:38:23 +10:00
Adam Meehan
4221bf7709 Merge pull request #161 from pedrofurtado/patch-1
Update README.rdoc with the suggestion of a gem with i18n translations
2018-05-13 11:54:55 +10:00
Pedro Felipe de Azevedo Furtado
b51a4544ff Update README.rdoc 2018-05-10 13:12:52 -03:00
pedrofurtado
285bc769ba Update README.rdoc 2017-12-29 13:45:39 -02:00
Adam Meehan
a0f2759c7a Merge pull request #160 from reiz/patch-1
Add license info to the gemspec.
2017-10-03 09:42:27 +11:00
Robert Reiz
cc57b1b758 Add license info to the gemspec. 2017-10-02 16:16:36 +02:00
Adam Meehan
d30cebfc7b Update gemfiles 2017-05-14 20:43:39 +10:00
Adam Meehan
a96c24268d Update travis ruby versions 2017-05-14 20:33:33 +10:00
Adam Meehan
13fcc32a83 Test model had wrong validation method 2017-05-14 20:12:36 +10:00
Adam Meehan
e8a96fe9b5 Set ruby version in gemfile 2017-05-14 20:12:14 +10:00
Adam Meehan
f9009995fc Update rspec and rails versions 2017-05-14 19:44:13 +10:00
Adam Meehan
5419a1cc42 Merge branch 'master' of github.com:adzap/validates_timeliness 2017-05-14 19:43:14 +10:00
Adam Meehan
9dd2e87087 Merge pull request #154 from yxf/master
Fixed version checking of ActiveModel
2017-05-14 19:35:49 +10:00
yxf
8a04deebfa Fixed version checking of ActiveModel 2017-05-14 17:07:24 +08:00
Aditya Kapoor
e9c9914c4f Allow the validator to take in the message option too. This is useful in those scenarios where we have a set of generic keys which we need to show.
This would eliminate the need to keeping multiple copies for the default keys set defined by gem.

    The following seems more apt than the later one:

    ```
    validates_date :start_at, on_or_after: :today, message: 'should not be in past'
    ```

    ```
    validates_date :start_at, on_or_after: :today, on_or_after_message: 'should not be in past'
    ```
2017-03-22 13:21:59 +05:30
Adam Meehan
0219c3850d minimum timeliness 0.3.8 2017-03-07 20:33:46 +11:00
Adam Meehan
35caf3638e Fix undefine_attribute_methods spec 2016-01-07 20:50:17 +11:00
Adam Meehan
153051730b Add latest changes 2016-01-07 08:29:49 +11:00
16 changed files with 112 additions and 81 deletions

View File

@@ -1,16 +1,20 @@
language: ruby
before_install:
- gem uninstall -v '>= 2' -i $(rvm gemdir)@global -ax bundler || true
- gem install bundler -v '< 2'
before_script:
- bundle install
cache: bundler
bundler_args: --verbose
gemfile:
- gemfiles/rails_4_0.gemfile
- gemfiles/rails_4_1.gemfile
- gemfiles/rails_4_2.gemfile
matrix:
include:
- rvm: "2.4.6"
gemfile: gemfiles/rails_4_2.gemfile
- rvm: "2.5.5"
gemfile: gemfiles/rails_4_2.gemfile
rvm:
- "2.2.3"
- "2.3.0"
script: 'bundle exec rake'
script: 'bundle exec rspec'
notifications:
email:

View File

@@ -7,5 +7,5 @@ appraise "rails_4_1" do
end
appraise "rails_4_2" do
gem "rails", "~> 4.2.5"
end
gem "rails", "~> 4.2.11"
end

View File

@@ -1,3 +1,22 @@
= 4.1.1 [2019-08-06]
* Add initializer to ensure Timeliness default ambigiuous date handling config
in Timeliness v0.4.1+ is set correctly when using `use_us_formats` or
`use_euro_formats` switcher to set default.
* Removed build support for Ruby 2.3 and Rails 4.0 and 4.1 to EOL official
support for those.
= 4.1.0 [2019-06-11]
* Relaxed Timeliness dependency version to >= 0.3.10 and < 1, which allows
version 0.4 with threadsafety fix for use_us_formats and use_euro_formats
hot switching in a request.
= 4.0.2 [2016-01-07]
* Fix undefine_generated_methods ivar guard setting to false
= 4.0.1 [2016-01-06]
* Fix undefine_generated_methods thread locking bug
* Created an ActiveModel ORM, for manual require if using without any full blown ORM
= 4.0.0 [2015-12-29]
* Extracted mongoid support into https://github.com/adzap/validates_timeliness-mongoid which is broken (not supported anymore).
* Fixed Rails 4.0, 4.1 and 4.2 compatability issues

17
Gemfile
View File

@@ -1,16 +1,13 @@
source 'http://rubygems.org'
source 'https://rubygems.org'
gemspec
gem 'rails', '~> 4.0.13'
gem 'rspec', '~> 3.4.0'
gem 'rspec-rails', '~> 3.4.0'
gem 'rake'
gem 'rails', '~> 4.2.11.1'
gem 'rspec'
gem 'rspec-rails', '~> 3.7'
gem 'timecop'
gem 'byebug'
gem 'appraisal'
gem 'sqlite3'
gem 'nokogiri', '1.6.7'
group :active_record do
gem 'sqlite3-ruby', :require => 'sqlite3'
end
gem 'sqlite3', '~> 1.3.13'
gem 'nokogiri', '~> 1.8'

View File

@@ -5,7 +5,8 @@
== Description
Complete validation of dates, times and datetimes for Rails 4.x and ActiveModel.
Complete validation of dates, times and datetimes for Rails 4.2.x and ActiveModel. Rails 4.0.x and 4.1.x may
still work but official support has ended.
If you a looking for the old version for Rails 3.x go here[http://github.com/adzap/validates_timeliness/tree/v3.x].
@@ -22,7 +23,7 @@ If you a looking for the old version for Rails 3.x go here[http://github.com/adz
* Adds extensions to fix Rails date/time select issues (See Extensions)
* Supports I18n for the error messages
* Supports I18n for the error messages. For multi-language support try {timeliness-i18n gem}[https://github.com/pedrofurtado/timeliness-i18n].
* Supports all the Rubies (that any sane person would be using in production).
@@ -30,7 +31,7 @@ If you a looking for the old version for Rails 3.x go here[http://github.com/adz
== Installation
# in Gemfile
gem 'validates_timeliness', '~> 4.0'
gem 'validates_timeliness', '~> 4.1'
# Run bundler
$ bundle install

View File

@@ -1,19 +0,0 @@
# This file was generated by Appraisal
source "http://rubygems.org"
gem "rails", "~> 4.0.0"
gem "rspec", "~> 3.0.0"
gem "rspec-rails", "~> 3.0.0"
gem "timecop"
gem "rspec_tag_matchers"
gem "byebug"
gem "appraisal"
gem "sqlite3"
gem "nokogiri", "1.6.7"
group :active_record do
gem "sqlite3-ruby", :require => "sqlite3"
end
gemspec :path => "../"

View File

@@ -1,19 +0,0 @@
# This file was generated by Appraisal
source "http://rubygems.org"
gem "rails", "~> 4.1.0"
gem "rspec", "~> 3.0.0"
gem "rspec-rails", "~> 3.0.0"
gem "timecop"
gem "rspec_tag_matchers"
gem "byebug"
gem "appraisal"
gem "sqlite3"
gem "nokogiri", "1.6.7"
group :active_record do
gem "sqlite3-ruby", :require => "sqlite3"
end
gemspec :path => "../"

View File

@@ -1,19 +1,14 @@
# This file was generated by Appraisal
source "http://rubygems.org"
source "https://rubygems.org"
gem "rails", "~> 4.2.0"
gem "rspec", "~> 3.0.0"
gem "rspec-rails", "~> 3.0.0"
gem "rails", "~> 4.2.8"
gem "rspec", "~> 3.6.0"
gem "rspec-rails", "~> 3.6.0"
gem "timecop"
gem "rspec_tag_matchers"
gem "byebug"
gem "appraisal"
gem "sqlite3"
gem "sqlite3", "~> 1.3.0"
gem "nokogiri", "1.6.7"
group :active_record do
gem "sqlite3-ruby", :require => "sqlite3"
end
gemspec :path => "../"
gemspec path: "../"

View File

@@ -11,5 +11,13 @@ module ValidatesTimeliness
initializer "validates_timeliness.initialize_restriction_errors" do
ValidatesTimeliness.ignore_restriction_errors = !Rails.env.test?
end
initializer "validates_timeliness.initialize_timeliness_ambiguous_date_format", :after => 'load_config_initializers' do
if Timeliness.respond_to?(:ambiguous_date_format) # i.e. v0.4+
# Set default for each new thread if you have changed the default using
# the format switching methods.
Timeliness.configuration.ambiguous_date_format = Timeliness::Definitions.current_date_format
end
end
end
end

View File

@@ -56,7 +56,7 @@ module ValidatesTimeliness
end
# Rails 4.0 compatibility for old #setup method with class as arg
if ActiveModel.version <= Gem::Version.new('4.1')
if Gem::Version.new(ActiveModel::VERSION::STRING) <= Gem::Version.new('4.1')
alias_method(:setup, :setup_timeliness_validated_attributes)
end
@@ -91,7 +91,7 @@ module ValidatesTimeliness
def add_error(record, attr_name, message, value=nil)
value = format_error_value(value) if value
message_options = { :message => options[:"#{message}_message"], :restriction => value }
message_options = { :message => options.fetch(:"#{message}_message", options[:message]), :restriction => value }
record.errors.add(attr_name, message, message_options)
end

View File

@@ -1,3 +1,3 @@
module ValidatesTimeliness
VERSION = '4.0.2'
VERSION = '4.1.1'
end

View File

@@ -9,6 +9,8 @@ require 'timecop'
require 'validates_timeliness'
require 'validates_timeliness/orm/active_model'
require 'rails/railtie'
require 'support/test_model'
require 'support/model_helpers'
require 'support/config_helper'
@@ -71,8 +73,8 @@ end
class Employee < ActiveRecord::Base
attr_accessor :redefined_birth_date_called
validates_date :birth_date, :allow_nil => true
validates_date :birth_time, :allow_nil => true
validates_date :birth_datetime, :allow_nil => true
validates_time :birth_time, :allow_nil => true
validates_datetime :birth_datetime, :allow_nil => true
def birth_date=(value)
self.redefined_birth_date_called = true

View File

@@ -241,8 +241,14 @@ RSpec.describe ValidatesTimeliness, 'ActiveRecord' do
end
context "undefine_attribute_methods" do
it "returns a falsy value if the attribute methods have already been generated" do
expect { Employee.undefine_attribute_methods }.to_not raise_error
it "returns remove attribute methods that have already been generated" do
Employee.define_attribute_methods
expect(Employee.instance_methods).to include(:birth_datetime)
Employee.undefine_attribute_methods
expect(Employee.instance_methods).to_not include(:birth_datetime)
end
end
end

View File

@@ -0,0 +1,22 @@
require 'validates_timeliness/railtie'
RSpec.describe ValidatesTimeliness::Railtie do
context "intializers" do
context "validates_timeliness.initialize_timeliness_ambiguous_date_format" do
it 'should set the timeliness default ambiguous date format from the current format' do
expect(Timeliness.configuration.ambiguous_date_format).to eq :us
ValidatesTimeliness.parser.use_euro_formats
initializer("validates_timeliness.initialize_timeliness_ambiguous_date_format").run
expect(Timeliness.configuration.ambiguous_date_format).to eq :euro
end
end if Timeliness.respond_to?(:ambiguous_date_format)
def initializer(name)
ValidatesTimeliness::Railtie.initializers.find { |i|
i.name == name
} || raise("Initializer #{name} not found")
end
end
end

View File

@@ -87,6 +87,20 @@ RSpec.describe ValidatesTimeliness::Validator do
end
end
describe ':message options' do
it 'should allow message option too' do
Person.validates_date :birth_date, on_or_after: :today, message: 'cannot be in past'
invalid!(:birth_date, Date.today - 5.days, 'cannot be in past')
valid!(:birth_date, Date.today)
end
it 'should first allow the defined message' do
Person.validates_date :birth_date, on_or_after: :today, on_or_after_message: 'cannot be in past', message: 'dummy message'
invalid!(:birth_date, Date.today - 5.days, 'cannot be in past')
valid!(:birth_date, Date.today)
end
end
describe ":between option" do
describe "array value" do
it 'should be split option into :on_or_after and :on_or_before values' do

View File

@@ -10,11 +10,12 @@ Gem::Specification.new do |s|
s.description = %q{Adds validation methods to ActiveModel for validating dates and times. Works with multiple ORMS.}
s.email = %q{adam.meehan@gmail.com}
s.homepage = %q{http://github.com/adzap/validates_timeliness}
s.license = "MIT"
s.require_paths = ["lib"]
s.files = `git ls-files`.split("\n") - %w{ .gitignore .rspec Gemfile Gemfile.lock autotest/discover.rb Appraisals Travis.yml } - Dir['gemsfiles/*']
s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
s.extra_rdoc_files = ["README.rdoc", "CHANGELOG.rdoc", "LICENSE"]
s.add_runtime_dependency(%q<timeliness>, ["~> 0.3.7"])
s.add_runtime_dependency(%q<timeliness>, [">= 0.3.10", "< 1"])
end