lite-validators 1.6.0 → 1.7.2

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: 32c7948a3f64e0f2f5d648e6b78585100ddf30c3907a85df9072b36bd8237f3b
4
- data.tar.gz: 7bdf81ee68471f5825d0ec93d96c215990c4b8b65dc60fd749206affc98c54db
3
+ metadata.gz: 0d3f051d098209d84823656f14c23f4537aa26b0f554328752ede05dd12f8fe2
4
+ data.tar.gz: 138ce3bcc2159ab4e53023e1184e0012be5ec0941cb50f2d906f3b3f0261f1fc
5
5
  SHA512:
6
- metadata.gz: bc9194585c2429df1cdfccc1439288d94eb3de065dc40491155c01f159355d5c5331175519d01effe12e1e6d5a6050dcab078eee9254ab9ed1a2d1517567f538
7
- data.tar.gz: '00058c1e04fa56864e51e2bba074059b1ecef3d54361e5651b15718c06de7dface5505dd39c2135ee7c70e27d44e2d5e52a4c874e9c66a8fded2907981174643'
6
+ metadata.gz: aba646abaf9c698367acc9e2f798358e109cec13fb7442c6cd8e79578c46a9a3210fefa458f71e91990dc9cc96a54af239696f42563d1199eaa1351d7c11c656
7
+ data.tar.gz: 0b5479cfb1066309c1854e4359396528b7e8a7004bae4de5beabca38db4e7824e44028919c30144d3cc00fb1f34538179bd47bd0b924d6701845978b783e30a1
data/CHANGELOG.md CHANGED
@@ -6,9 +6,22 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
6
6
 
7
7
  ## [Unreleased]
8
8
 
9
- ## [1.6.0] - 2022-02-17
9
+ ## [1.7.2] - 2022-03-18
10
+ ### Changed
11
+ - Check associated object is valid to reference validator
12
+
13
+ ## [1.7.1] - 2022-03-17
10
14
  ### Changed
15
+ - Added polymorphic support to reference validator
16
+
17
+ ## [1.7.0] - 2022-03-17
18
+ ### Added
19
+ - Added Reference validator
20
+
21
+ ## [1.6.0] - 2022-02-17
22
+ ### Added
11
23
  - Added List validator
24
+ ### Changed
12
25
  - Update to use public_send instead of send
13
26
 
14
27
  ## [1.5.0] - 2022-02-17
data/Gemfile.lock CHANGED
@@ -1,28 +1,28 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- lite-validators (1.6.0)
4
+ lite-validators (1.7.2)
5
5
  activemodel
6
6
 
7
7
  GEM
8
8
  remote: https://rubygems.org/
9
9
  specs:
10
- actionpack (7.0.2.2)
11
- actionview (= 7.0.2.2)
12
- activesupport (= 7.0.2.2)
10
+ actionpack (7.0.2.3)
11
+ actionview (= 7.0.2.3)
12
+ activesupport (= 7.0.2.3)
13
13
  rack (~> 2.0, >= 2.2.0)
14
14
  rack-test (>= 0.6.3)
15
15
  rails-dom-testing (~> 2.0)
16
16
  rails-html-sanitizer (~> 1.0, >= 1.2.0)
17
- actionview (7.0.2.2)
18
- activesupport (= 7.0.2.2)
17
+ actionview (7.0.2.3)
18
+ activesupport (= 7.0.2.3)
19
19
  builder (~> 3.1)
20
20
  erubi (~> 1.4)
21
21
  rails-dom-testing (~> 2.0)
22
22
  rails-html-sanitizer (~> 1.1, >= 1.2.0)
23
- activemodel (7.0.2.2)
24
- activesupport (= 7.0.2.2)
25
- activesupport (7.0.2.2)
23
+ activemodel (7.0.2.3)
24
+ activesupport (= 7.0.2.3)
25
+ activesupport (7.0.2.3)
26
26
  concurrent-ruby (~> 1.0, >= 1.0.2)
27
27
  i18n (>= 1.6, < 2)
28
28
  minitest (>= 5.1)
@@ -39,7 +39,7 @@ GEM
39
39
  ruby_parser (>= 3.14.1)
40
40
  i18n (1.10.0)
41
41
  concurrent-ruby (~> 1.0)
42
- loofah (2.14.0)
42
+ loofah (2.15.0)
43
43
  crass (~> 1.0.2)
44
44
  nokogiri (>= 1.5.9)
45
45
  method_source (1.0.0)
@@ -60,9 +60,9 @@ GEM
60
60
  nokogiri (>= 1.6)
61
61
  rails-html-sanitizer (1.4.2)
62
62
  loofah (~> 2.3)
63
- railties (7.0.2.2)
64
- actionpack (= 7.0.2.2)
65
- activesupport (= 7.0.2.2)
63
+ railties (7.0.2.3)
64
+ actionpack (= 7.0.2.3)
65
+ activesupport (= 7.0.2.3)
66
66
  method_source
67
67
  rake (>= 12.2)
68
68
  thor (~> 1.0)
@@ -83,7 +83,7 @@ GEM
83
83
  rspec-mocks (3.11.0)
84
84
  diff-lcs (>= 1.2.0, < 2.0)
85
85
  rspec-support (~> 3.11.0)
86
- rspec-rails (5.1.0)
86
+ rspec-rails (5.1.1)
87
87
  actionpack (>= 5.2)
88
88
  activesupport (>= 5.2)
89
89
  railties (>= 5.2)
@@ -92,18 +92,18 @@ GEM
92
92
  rspec-mocks (~> 3.10)
93
93
  rspec-support (~> 3.10)
94
94
  rspec-support (3.11.0)
95
- rubocop (1.25.1)
95
+ rubocop (1.26.0)
96
96
  parallel (~> 1.10)
97
97
  parser (>= 3.1.0.0)
98
98
  rainbow (>= 2.2.2, < 4.0)
99
99
  regexp_parser (>= 1.8, < 3.0)
100
100
  rexml
101
- rubocop-ast (>= 1.15.1, < 2.0)
101
+ rubocop-ast (>= 1.16.0, < 2.0)
102
102
  ruby-progressbar (~> 1.7)
103
103
  unicode-display_width (>= 1.4.0, < 3.0)
104
104
  rubocop-ast (1.16.0)
105
105
  parser (>= 3.1.1.0)
106
- rubocop-performance (1.13.2)
106
+ rubocop-performance (1.13.3)
107
107
  rubocop (>= 1.7.0, < 2.0)
108
108
  rubocop-ast (>= 0.4.0)
109
109
  rubocop-rake (0.6.0)
data/README.md CHANGED
@@ -56,6 +56,7 @@ Or install it yourself as:
56
56
  * [Name](https://github.com/drexed/lite-validators/blob/master/docs/NAME.md)
57
57
  * [Password](https://github.com/drexed/lite-validators/blob/master/docs/PASSWORD.md)
58
58
  * [Phone number](https://github.com/drexed/lite-validators/blob/master/docs/PHONE_NUMBER.md)
59
+ * [Reference](https://github.com/drexed/lite-validators/blob/master/docs/REFERENCE.md)
59
60
  * [SEDOL](https://github.com/drexed/lite-validators/blob/master/docs/SEDOL.md)
60
61
  * [Slug](https://github.com/drexed/lite-validators/blob/master/docs/SLUG.md)
61
62
  * [SSN](https://github.com/drexed/lite-validators/blob/master/docs/SSN.md)
data/docs/REFERENCE.md ADDED
@@ -0,0 +1,27 @@
1
+ # Reference
2
+
3
+ #### Rules
4
+
5
+ ```ruby
6
+ # 1. Pattern
7
+ /\A[+-]?\d+\z/
8
+ ```
9
+
10
+ #### Options
11
+
12
+ Option | Type | Available | Default
13
+ --- | --- | --- | ---
14
+ association | symbol | object method | attribute without `_id`
15
+ polymorphic | symbol | true, false | false
16
+
17
+ #### Usage
18
+
19
+ ```ruby
20
+ class User < ActiveRecord::Base
21
+
22
+ validates :input_id, reference: true
23
+ validates :output_id, reference: { polymorphic: true }
24
+ validates :output_id, reference: { association: :input }
25
+
26
+ end
27
+ ```
@@ -0,0 +1,38 @@
1
+ # frozen_string_literal: true
2
+
3
+ class ReferenceValidator < BaseValidator
4
+
5
+ REGEXP = /\A[+-]?\d+\z/
6
+
7
+ private
8
+
9
+ def valid?
10
+ (valid_id? && valid_type?) || valid_object?
11
+ end
12
+
13
+ def valid_id?
14
+ if value.blank?
15
+ false
16
+ elsif !valid_regexp?
17
+ record.errors.add(attribute, *error_message)
18
+ else
19
+ !value.to_i.negative?
20
+ end
21
+ end
22
+
23
+ def valid_object?
24
+ association_type = options[:association] || attribute.to_s.chomp('_id')
25
+ association_object = record.send(association_type)
26
+ return true if association_object.present? && association_object.valid?
27
+
28
+ record.errors.add(association_type, *error_message)
29
+ end
30
+
31
+ def valid_type?
32
+ return true unless options[:polymorphic]
33
+
34
+ association_type = "#{attribute.to_s.chomp('_id')}_type"
35
+ record.send(association_type).present?
36
+ end
37
+
38
+ end
@@ -3,7 +3,7 @@
3
3
  module Lite
4
4
  module Validators
5
5
 
6
- VERSION = '1.6.0'
6
+ VERSION = '1.7.2'
7
7
 
8
8
  end
9
9
  end
@@ -30,6 +30,7 @@ require 'lite/validators/mac_address_validator'
30
30
  require 'lite/validators/name_validator'
31
31
  require 'lite/validators/password_validator'
32
32
  require 'lite/validators/phone_number_validator'
33
+ require 'lite/validators/reference_validator'
33
34
  require 'lite/validators/sedol_validator'
34
35
  require 'lite/validators/slug_validator'
35
36
  require 'lite/validators/ssn_validator'
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: lite-validators
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.6.0
4
+ version: 1.7.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Juan Gomez
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2022-03-04 00:00:00.000000000 Z
11
+ date: 2022-03-18 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activemodel
@@ -210,6 +210,7 @@ files:
210
210
  - docs/NAME.md
211
211
  - docs/PASSWORD.md
212
212
  - docs/PHONE_NUMBER.md
213
+ - docs/REFERENCE.md
213
214
  - docs/SEDOL.md
214
215
  - docs/SLUG.md
215
216
  - docs/SSN.md
@@ -246,6 +247,7 @@ files:
246
247
  - lib/lite/validators/password_validator.rb
247
248
  - lib/lite/validators/phone_number_validator.rb
248
249
  - lib/lite/validators/railtie.rb
250
+ - lib/lite/validators/reference_validator.rb
249
251
  - lib/lite/validators/sedol_validator.rb
250
252
  - lib/lite/validators/slug_validator.rb
251
253
  - lib/lite/validators/ssn_validator.rb