be_valid 0.1.5 → 0.1.9

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: 321b08decb577f0a5e7ceded71bf6c05829cd877a28f2b377f606e2f56cf6e61
4
- data.tar.gz: c68cb42238a0480b4c2768b159fe7dca5bb690004f43027df728bdeca71b0f23
3
+ metadata.gz: 4df30ef660224a292378d734a78f8e680410c43fd3ded2e5bb2a0e4951e9cafc
4
+ data.tar.gz: 7a4c30c3fff7ccb3b10d5cc43bf0b72d918ba2973a9a2c4363ca16ea41a699cb
5
5
  SHA512:
6
- metadata.gz: f085944be0b2681549ef91f534d2fb3a888d95be819f5bbd2e7143ac8d03817322229d5bbd1f8b46705dfe11c447006049f10c60fd301b7b4a6fa76f64c62e1e
7
- data.tar.gz: c9f38ad043a959f56386d785b747197e0e6936867532a315348b47227858615040e8a0c3c20c7dca654f8292c815257f868d0eea9fd829072330219169f18f0b
6
+ metadata.gz: a2ec3ac95e91daad7216d7a33f0d4683c796e73df92a798cbd6fc691ca554ab18efe78cfda98abe91670ac4564bb6bd09625a37229045e8e0573ef1c336a48e1
7
+ data.tar.gz: ed48033ae3870e982ece60f870e76d398ef9a4fc2d78f95b316891d92aef4491aff62c1714afdbe9852d2b038063a2953dd98bd9922fa59510de2b6bcf218233
@@ -0,0 +1,24 @@
1
+ name: Ruby
2
+
3
+ on:
4
+ push:
5
+ branches: [ main ]
6
+ pull_request:
7
+ branches: [ main ]
8
+
9
+ jobs:
10
+ test:
11
+ runs-on: ubuntu-latest
12
+ strategy:
13
+ matrix:
14
+ ruby-version: ['3.0']
15
+
16
+ steps:
17
+ - uses: actions/checkout@v2
18
+ - name: Set up Ruby
19
+ uses: ruby/setup-ruby@v1
20
+ with:
21
+ ruby-version: ${{ matrix.ruby-version }}
22
+ bundler-cache: true # runs 'bundle install' and caches installed gems automatically
23
+ - name: Run tests
24
+ run: bundle exec rake
data/Gemfile.lock CHANGED
@@ -1,43 +1,43 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- be_valid (0.1.4)
4
+ be_valid (0.1.9)
5
+ activemodel (~> 6.1)
5
6
 
6
7
  GEM
7
8
  remote: https://rubygems.org/
8
9
  specs:
9
- activemodel (5.2.5)
10
- activesupport (= 5.2.5)
11
- activerecord (5.2.5)
12
- activemodel (= 5.2.5)
13
- activesupport (= 5.2.5)
14
- arel (>= 9.0)
15
- activesupport (5.2.5)
10
+ activemodel (6.1.4.1)
11
+ activesupport (= 6.1.4.1)
12
+ activerecord (6.1.4.1)
13
+ activemodel (= 6.1.4.1)
14
+ activesupport (= 6.1.4.1)
15
+ activesupport (6.1.4.1)
16
16
  concurrent-ruby (~> 1.0, >= 1.0.2)
17
- i18n (>= 0.7, < 2)
18
- minitest (~> 5.1)
19
- tzinfo (~> 1.1)
20
- arel (9.0.0)
21
- concurrent-ruby (1.1.8)
17
+ i18n (>= 1.6, < 2)
18
+ minitest (>= 5.1)
19
+ tzinfo (~> 2.0)
20
+ zeitwerk (~> 2.3)
21
+ concurrent-ruby (1.1.9)
22
22
  i18n (1.8.10)
23
23
  concurrent-ruby (~> 1.0)
24
24
  minitest (5.14.4)
25
- rake (10.5.0)
25
+ rake (13.0.6)
26
26
  sqlite3 (1.4.2)
27
- thread_safe (0.3.6)
28
- tzinfo (1.2.9)
29
- thread_safe (~> 0.1)
27
+ tzinfo (2.0.4)
28
+ concurrent-ruby (~> 1.0)
29
+ zeitwerk (2.5.1)
30
30
 
31
31
  PLATFORMS
32
32
  ruby
33
33
 
34
34
  DEPENDENCIES
35
- activerecord (~> 5)
35
+ activerecord (~> 6)
36
36
  be_valid!
37
- bundler (~> 1.17)
37
+ bundler (~> 2)
38
38
  minitest (~> 5.0)
39
- rake (~> 10.0)
39
+ rake (~> 13.0)
40
40
  sqlite3 (~> 1.4)
41
41
 
42
42
  BUNDLED WITH
43
- 1.17.2
43
+ 2.2.22
data/be_valid.gemspec CHANGED
@@ -23,11 +23,13 @@ Gem::Specification.new do |spec|
23
23
  spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
24
24
  spec.require_paths = ["lib"]
25
25
 
26
- spec.required_ruby_version = '>= 2.3'
26
+ spec.required_ruby_version = '>= 3.0'
27
27
 
28
- spec.add_development_dependency "bundler", "~> 1.17"
29
- spec.add_development_dependency "rake", "~> 10.0"
28
+ spec.add_dependency "activemodel", "~> 6.1"
29
+
30
+ spec.add_development_dependency "bundler", "~> 2"
31
+ spec.add_development_dependency "rake", "~> 13.0"
30
32
  spec.add_development_dependency "minitest", "~> 5.0"
31
- spec.add_development_dependency "activerecord", "~> 5"
33
+ spec.add_development_dependency "activerecord", "~> 6"
32
34
  spec.add_development_dependency "sqlite3", "~> 1.4"
33
35
  end
@@ -1,3 +1,3 @@
1
1
  module BeValid
2
- VERSION = "0.1.5"
2
+ VERSION = "0.1.9"
3
3
  end
data/lib/be_valid.rb CHANGED
@@ -1,9 +1,21 @@
1
- require 'be_valid/be_valid'
2
-
3
- begin
1
+ module BeValid
4
2
  require 'validators/date_validator'
5
3
  require 'validators/must_be_validator'
6
- rescue
7
- 'unable to load be_valid validator'
8
- nil
4
+
5
+ def self.config
6
+ @@config ||= Configuration.new
7
+ end
8
+
9
+ def self.configure
10
+ self.config ||= Configuration.new
11
+ yield(config)
12
+ end
13
+
14
+ class Configuration
15
+ attr_accessor :rules
16
+
17
+ def initialize
18
+ @rules = {}
19
+ end
20
+ end
9
21
  end
@@ -1,3 +1,5 @@
1
+ require 'active_model'
2
+
1
3
  class DateValidator < ActiveModel::EachValidator
2
4
 
3
5
  # https://stackoverflow.com/questions/28538080/rails-validate-dates-in-model-before-type-cast
@@ -6,14 +8,15 @@ class DateValidator < ActiveModel::EachValidator
6
8
 
7
9
  @error_hash = options[:error_level].present? ? record.send(options[:error_level]) : record.errors
8
10
 
9
- original_value = record.read_attribute_before_type_cast( attribute )
11
+ original_value = value
12
+ original_value = record.read_attribute_before_type_cast( attribute ) rescue nil # only in rails
10
13
  # dont display date format error unless date could not be parsed
11
14
  if value.nil?
12
15
  # if blank date was given it's still not a format issue, still show message if desired
13
16
  return if original_value.blank? && options[:allow_blank]
14
17
 
15
18
  # display helpful date format validation message with original value
16
- message = options[:time] ? ": #{original_value} is not a valid value. Value must be a date in YYYY-MM-DD or YYYY-MM-DD HH:MM:SS format." : ": #{original_value} is not a valid value. Value must be a date in YYYY-MM-DD."
19
+ message = options[:time] ? ": #{original_value} is not a valid value. Value must be a date in YYYY-MM-DD or YYYY-MM-DD HH:MM:SS format." : ": #{original_value} is not a valid value. Value must be a date in YYYY-MM-DD format."
17
20
  @error_hash.add(attribute, (options[:message] || message))
18
21
  else
19
22
  # handle validation options on valid date instances
@@ -38,7 +41,7 @@ class DateValidator < ActiveModel::EachValidator
38
41
  elsif options[:after].respond_to?(:strftime)
39
42
  after_message << " Date cannot be before #{options[:after]}"
40
43
  elsif options[:after].is_a? Proc
41
- after_message << " Date cannot be before #{options[:after].call(record)}"
44
+ after_message << " Date cannot be before #{date}"
42
45
  elsif record.respond_to?(options[:after])
43
46
  after_message << " Date cannot be before #{options[:after]}"
44
47
  end
@@ -56,7 +59,7 @@ class DateValidator < ActiveModel::EachValidator
56
59
  elsif options[:before].respond_to?(:strftime)
57
60
  before_message << " Date cannot be after #{options[:before]}"
58
61
  elsif options[:before].is_a? Proc
59
- before_message << " Date cannot be after #{options[:before].call(record)}"
62
+ before_message << " Date cannot be after #{date}"
60
63
  elsif record.respond_to?(options[:before])
61
64
  before_message << " Date cannot be after #{options[:before]}"
62
65
  end
@@ -78,13 +81,11 @@ class DateValidator < ActiveModel::EachValidator
78
81
  record.__send__(option) if record.respond_to?(option)
79
82
  end
80
83
  return unless date.present?
81
- date = date.to_date unless options[:time]
82
- if date.is_a?(Time)
83
- value = value.to_time
84
- elsif date.is_a?(Date)
85
- value = value.to_date
84
+ if options[:time]
85
+ return [date.to_time, value.to_time]
86
+ else
87
+ return [date.to_date, value.to_date]
86
88
  end
87
- [date, value]
88
89
  end
89
90
 
90
91
  end
@@ -1,4 +1,4 @@
1
- require 'active_record'
1
+ require 'active_model'
2
2
 
3
3
  module ActiveModel
4
4
  module Validations
@@ -11,16 +11,19 @@ module ActiveModel
11
11
  less_or_equal_to: :<=,
12
12
  not_equal_to: :!=,
13
13
  matching: :=~,
14
- # one_of: :in?
15
14
  }.freeze
15
+
16
+ REQD_OPTS = (MATCHERS.keys + [:blank, :present, :one_of, :not_any_of, :only_from, :before, :after])
16
17
 
17
18
  MESSAGE_PREFIX = "must be"
18
19
  ERRORS_METHOD = :errors
19
20
 
20
21
  def validate_each(record, attribute, value)
21
- raise "must_be_validator requires at least one comparison operator for attribute." unless options.slice(MATCHERS.keys + [:blank, :present])
22
+ raise "Requires at least one comparison operator for attribute." unless (options.keys & REQD_OPTS).length > 0
23
+ return if options[:rule_name] && BeValid.config.rules&.fetch(options[:rule_name], {})[:disabled]
22
24
 
23
- original_value = record.read_attribute_before_type_cast( attribute )
25
+ original_value = value
26
+ original_value = record.read_attribute_before_type_cast( attribute ) rescue nil # only in rails
24
27
 
25
28
  message = self.class::MESSAGE_PREFIX.dup
26
29
 
@@ -68,13 +71,14 @@ module ActiveModel
68
71
  message << " when "
69
72
  condition_errors = []
70
73
  conditions.each do |field, values|
74
+ field_value = record.send(field)
71
75
  case values
72
76
  when Regexp
73
- return if !values.match?(record[field])
74
- condition_errors << "#{field} = #{record[field]}"
77
+ return if !values.match?(field_value)
78
+ condition_errors << "#{field} = #{field_value}"
75
79
  when Array
76
- return if !values.flatten.include?(record[field])
77
- condition_errors << "#{field} = #{record[field]}"
80
+ return if !values.flatten.include?(field_value)
81
+ condition_errors << "#{field} = #{field_value}"
78
82
  when :blank
79
83
  return unless record.send(field).blank?
80
84
  condition_errors << "#{field} is #{values.to_s.gsub('?', '')}"
@@ -85,8 +89,8 @@ module ActiveModel
85
89
  return if !record.send(field)&.send(values)
86
90
  condition_errors << "#{field} is #{values.to_s.gsub('?', '')}"
87
91
  else
88
- return if values != record[field]
89
- condition_errors << "#{field} = #{record[field]}"
92
+ return if values != field_value
93
+ condition_errors << "#{field} = #{field_value}"
90
94
  end
91
95
  end
92
96
  message << condition_errors.join(' and ')
@@ -104,6 +108,13 @@ module ActiveModel
104
108
 
105
109
  record.send(self.class::ERRORS_METHOD).add(attribute, (options[:message] || "#{message}."), rule_name: options[:rule_name])
106
110
  end
111
+ module ClassMethods
112
+ def validates_must_be_valid(*attr_names)
113
+ validates_with MustBeValidator, _merge_attributes(attr_names)
114
+ end
115
+
116
+ alias_method :validates_must_be, :validates_must_be_valid
117
+ end
107
118
  end
108
119
  end
109
120
  end
metadata CHANGED
@@ -1,43 +1,57 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: be_valid
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.5
4
+ version: 0.1.9
5
5
  platform: ruby
6
6
  authors:
7
7
  - John Stewart (johnsinco)
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2021-04-28 00:00:00.000000000 Z
11
+ date: 2022-07-28 00:00:00.000000000 Z
12
12
  dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: activemodel
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '6.1'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: '6.1'
13
27
  - !ruby/object:Gem::Dependency
14
28
  name: bundler
15
29
  requirement: !ruby/object:Gem::Requirement
16
30
  requirements:
17
31
  - - "~>"
18
32
  - !ruby/object:Gem::Version
19
- version: '1.17'
33
+ version: '2'
20
34
  type: :development
21
35
  prerelease: false
22
36
  version_requirements: !ruby/object:Gem::Requirement
23
37
  requirements:
24
38
  - - "~>"
25
39
  - !ruby/object:Gem::Version
26
- version: '1.17'
40
+ version: '2'
27
41
  - !ruby/object:Gem::Dependency
28
42
  name: rake
29
43
  requirement: !ruby/object:Gem::Requirement
30
44
  requirements:
31
45
  - - "~>"
32
46
  - !ruby/object:Gem::Version
33
- version: '10.0'
47
+ version: '13.0'
34
48
  type: :development
35
49
  prerelease: false
36
50
  version_requirements: !ruby/object:Gem::Requirement
37
51
  requirements:
38
52
  - - "~>"
39
53
  - !ruby/object:Gem::Version
40
- version: '10.0'
54
+ version: '13.0'
41
55
  - !ruby/object:Gem::Dependency
42
56
  name: minitest
43
57
  requirement: !ruby/object:Gem::Requirement
@@ -58,14 +72,14 @@ dependencies:
58
72
  requirements:
59
73
  - - "~>"
60
74
  - !ruby/object:Gem::Version
61
- version: '5'
75
+ version: '6'
62
76
  type: :development
63
77
  prerelease: false
64
78
  version_requirements: !ruby/object:Gem::Requirement
65
79
  requirements:
66
80
  - - "~>"
67
81
  - !ruby/object:Gem::Version
68
- version: '5'
82
+ version: '6'
69
83
  - !ruby/object:Gem::Dependency
70
84
  name: sqlite3
71
85
  requirement: !ruby/object:Gem::Requirement
@@ -87,6 +101,7 @@ executables: []
87
101
  extensions: []
88
102
  extra_rdoc_files: []
89
103
  files:
104
+ - ".github/workflows/ruby.yml"
90
105
  - ".gitignore"
91
106
  - Gemfile
92
107
  - Gemfile.lock
@@ -97,7 +112,6 @@ files:
97
112
  - bin/console
98
113
  - bin/setup
99
114
  - lib/be_valid.rb
100
- - lib/be_valid/be_valid.rb
101
115
  - lib/be_valid/version.rb
102
116
  - lib/validators/date_validator.rb
103
117
  - lib/validators/must_be_validator.rb
@@ -113,14 +127,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
113
127
  requirements:
114
128
  - - ">="
115
129
  - !ruby/object:Gem::Version
116
- version: '2.3'
130
+ version: '3.0'
117
131
  required_rubygems_version: !ruby/object:Gem::Requirement
118
132
  requirements:
119
133
  - - ">="
120
134
  - !ruby/object:Gem::Version
121
135
  version: '0'
122
136
  requirements: []
123
- rubygems_version: 3.0.3
137
+ rubygems_version: 3.2.22
124
138
  signing_key:
125
139
  specification_version: 4
126
140
  summary: Custom Ruby on Rails Validation library supporting 'conditional' validation
@@ -1,18 +0,0 @@
1
- module BeValid
2
- def self.config
3
- @@config ||= Configuration.new
4
- end
5
-
6
- def self.configure
7
- self.config ||= Configuration.new
8
- yield(config)
9
- end
10
-
11
- class Configuration
12
- attr_accessor :notice_rules
13
-
14
- def initialize
15
- @notice_rules= []
16
- end
17
- end
18
- end