lite-validators 1.6.0 → 1.7.2

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.
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