dry-validation-matchers 1.1.1 → 1.2.0
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 +4 -4
- data/.ruby-version +1 -1
- data/.travis.yml +1 -1
- data/CHANGELOG.md +5 -0
- data/README.md +20 -5
- data/dry-validation-matchers.gemspec +1 -1
- data/lib/dry/validation/matchers/validate_matcher.rb +37 -3
- data/lib/dry/validation/matchers/version.rb +1 -1
- metadata +7 -8
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: b0ee4b633e751ffaa7fdafb364f58990e9ebf09a952b87075a77ad36c84eb278
|
4
|
+
data.tar.gz: 2cbeb8982b547830905e1b4e7783e7bad557138a47c0ec5160e25c66d1ac95bc
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: d9e3c8cb7a06630dbc433284bb9e8e720a5b80b4ad11b59c7f134e406b5355fef5e7ff1586785d815a83e78b931ac69424ba1ecba9f17b5ead299f408dab8328
|
7
|
+
data.tar.gz: 442e5b9d788d9f01422d4d56d457e65bb98d89360f1dc5133f8550410c183443287bf01944f1448794961c30607e88a8be82af3386429621fc685013f8bdca2e
|
data/.ruby-version
CHANGED
@@ -1 +1 @@
|
|
1
|
-
ruby-2.6.
|
1
|
+
ruby-2.6.3
|
data/.travis.yml
CHANGED
data/CHANGELOG.md
CHANGED
@@ -4,6 +4,11 @@ All notable changes to this project will be documented in this file.
|
|
4
4
|
The format is based on [Keep a Changelog](http://keepachangelog.com/)
|
5
5
|
and this project adheres to [Semantic Versioning](http://semver.org/).
|
6
6
|
|
7
|
+
## [1.2.0] - 2019-11-17
|
8
|
+
### Added
|
9
|
+
- Add support for checking that the macro is used through the method `macro_use?`
|
10
|
+
- Updated gem dependency `"dry-validation", "~> 1.3"`
|
11
|
+
|
7
12
|
## [1.1.1] - 2019-04-10
|
8
13
|
### Fixed
|
9
14
|
- when `min_size` is set to 1 (and 0 in tests)
|
data/README.md
CHANGED
@@ -23,25 +23,40 @@ Or install it yourself as:
|
|
23
23
|
## Usage
|
24
24
|
|
25
25
|
```ruby
|
26
|
-
RSpec.describe "
|
26
|
+
RSpec.describe "Integration with RSpec", type: %i[dry_validation] do
|
27
|
+
|
27
28
|
subject(:schema_class) do
|
28
|
-
Class.new(Dry::Validation::
|
29
|
-
|
29
|
+
Class.new(Dry::Validation::Contract) do
|
30
|
+
register_macro(:email) do
|
31
|
+
key.failure('must_be_a_valid_email') if value.is_a?(String) &&
|
32
|
+
!value.match?(/\A([\w+\-].?)+@[a-z\d\-]+(\.[a-z]+)*\.[a-z]+\z/i)
|
33
|
+
end
|
34
|
+
|
35
|
+
register_macro(:precision) do |macro:|
|
36
|
+
num = macro.args[0]
|
37
|
+
key.failure("cant_have_more_than_#{num}_decimal_numbers") if value && value.to_s.split('.').last.size > num
|
38
|
+
end
|
39
|
+
|
40
|
+
params do
|
30
41
|
required(:username).filled
|
31
42
|
required(:first_name)
|
32
43
|
required(:age).filled(:int?)
|
33
44
|
required(:last_name).filled(:str?)
|
34
|
-
required(:rank).value(included_in?: %w(sarge chief))
|
35
45
|
optional(:mobile).filled
|
36
46
|
optional(:email)
|
47
|
+
optional(:decimal_value)
|
37
48
|
end
|
49
|
+
|
50
|
+
rule(:email).validate(:email)
|
51
|
+
rule(:decimal_value).validate(precision: 5)
|
38
52
|
end
|
39
53
|
end
|
40
54
|
|
41
55
|
it { is_expected.to validate(:username, :required).filled }
|
42
56
|
it { is_expected.to validate(:mobile, :optional).filled }
|
43
57
|
it { is_expected.to validate(:email, :optional) }
|
44
|
-
it { is_expected.to validate(:
|
58
|
+
it { is_expected.to validate(:email, :optional).macro_use?(:email) }
|
59
|
+
it { is_expected.to validate(:decimal_value, :optional).macro_use?(precision: 5) }
|
45
60
|
end
|
46
61
|
```
|
47
62
|
|
@@ -30,7 +30,7 @@ Gem::Specification.new do |spec|
|
|
30
30
|
spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
|
31
31
|
spec.require_paths = ["lib"]
|
32
32
|
|
33
|
-
spec.add_runtime_dependency "dry-validation"
|
33
|
+
spec.add_runtime_dependency "dry-validation", "~> 1.3"
|
34
34
|
spec.add_development_dependency "rspec", "~> 3.0"
|
35
35
|
spec.add_development_dependency "bundler", "~> 2.0"
|
36
36
|
spec.add_development_dependency "rake", "~> 10.0"
|
@@ -50,7 +50,9 @@ module Dry::Validation::Matchers
|
|
50
50
|
@acceptance = acceptance
|
51
51
|
@type = DEFAULT_TYPE
|
52
52
|
@value_rules = []
|
53
|
+
@macro_usage_params = []
|
53
54
|
@check_filled = false
|
55
|
+
@check_macro = false
|
54
56
|
end
|
55
57
|
|
56
58
|
def description
|
@@ -59,6 +61,7 @@ module Dry::Validation::Matchers
|
|
59
61
|
|
60
62
|
validation_details_message = []
|
61
63
|
validation_details_message << "filled with #{@type}" if @check_filled
|
64
|
+
validation_details_message << "macro usage `#{@macro_usage_params.to_s}`" if @check_macro
|
62
65
|
|
63
66
|
unless validation_details_message.empty?
|
64
67
|
@desc << " ("
|
@@ -76,6 +79,7 @@ module Dry::Validation::Matchers
|
|
76
79
|
|
77
80
|
validation_details_message = []
|
78
81
|
validation_details_message << "filled with #{@type}" if @check_filled
|
82
|
+
validation_details_message << "macro usage `#{@macro_usage_params.to_s}`" if @check_macro
|
79
83
|
|
80
84
|
unless validation_details_message.empty?
|
81
85
|
@desc << " ("
|
@@ -87,10 +91,10 @@ module Dry::Validation::Matchers
|
|
87
91
|
end
|
88
92
|
|
89
93
|
def matches?(schema_or_schema_class)
|
90
|
-
if schema_or_schema_class.is_a?(Dry::Validation::
|
94
|
+
if schema_or_schema_class.is_a?(Dry::Validation::Contract)
|
91
95
|
schema = schema_or_schema_class
|
92
96
|
elsif schema_or_schema_class.is_a?(Class) &&
|
93
|
-
schema_or_schema_class.ancestors.include?(Dry::Validation::
|
97
|
+
schema_or_schema_class.ancestors.include?(Dry::Validation::Contract)
|
94
98
|
|
95
99
|
schema = schema_or_schema_class.new
|
96
100
|
else
|
@@ -103,7 +107,8 @@ module Dry::Validation::Matchers
|
|
103
107
|
check_required_or_optional!(schema) &&
|
104
108
|
check_filled!(schema) &&
|
105
109
|
check_filled_with_type!(schema) &&
|
106
|
-
check_value!(schema)
|
110
|
+
check_value!(schema) &&
|
111
|
+
check_macro_usage!(schema)
|
107
112
|
end
|
108
113
|
|
109
114
|
def filled(type=:str)
|
@@ -117,6 +122,12 @@ module Dry::Validation::Matchers
|
|
117
122
|
self
|
118
123
|
end
|
119
124
|
|
125
|
+
def macro_use?(macro_params)
|
126
|
+
@check_macro = true
|
127
|
+
@macro_usage_params = macro_params
|
128
|
+
self
|
129
|
+
end
|
130
|
+
|
120
131
|
private
|
121
132
|
|
122
133
|
def check_required_or_optional!(schema)
|
@@ -228,6 +239,29 @@ module Dry::Validation::Matchers
|
|
228
239
|
error_when_over && no_error_when_within
|
229
240
|
end
|
230
241
|
|
242
|
+
def check_macro_usage!(schema)
|
243
|
+
return true if @macro_usage_params.empty?
|
244
|
+
|
245
|
+
is_present = false
|
246
|
+
|
247
|
+
schema.rules.each do |obj|
|
248
|
+
next if obj.keys.first != @attr
|
249
|
+
|
250
|
+
value = if @macro_usage_params.is_a?(Hash) && obj.macros.flatten.count > 1
|
251
|
+
obj.macros.to_h.map { |k, v| [k, v.first] }.to_h
|
252
|
+
else
|
253
|
+
obj.macros.flatten.first
|
254
|
+
end
|
255
|
+
|
256
|
+
if value == @macro_usage_params
|
257
|
+
is_present = true
|
258
|
+
break
|
259
|
+
end
|
260
|
+
end
|
261
|
+
|
262
|
+
is_present
|
263
|
+
end
|
264
|
+
|
231
265
|
def type_error_messages
|
232
266
|
type_error_messages = []
|
233
267
|
TYPE_ERRORS.each_pair do |type, hash|
|
metadata
CHANGED
@@ -1,29 +1,29 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: dry-validation-matchers
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Ramon Tayag
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2019-
|
11
|
+
date: 2019-11-18 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: dry-validation
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
|
-
- - "
|
17
|
+
- - "~>"
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: '
|
19
|
+
version: '1.3'
|
20
20
|
type: :runtime
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
|
-
- - "
|
24
|
+
- - "~>"
|
25
25
|
- !ruby/object:Gem::Version
|
26
|
-
version: '
|
26
|
+
version: '1.3'
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: rspec
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
@@ -111,8 +111,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
111
111
|
- !ruby/object:Gem::Version
|
112
112
|
version: '0'
|
113
113
|
requirements: []
|
114
|
-
|
115
|
-
rubygems_version: 2.7.8
|
114
|
+
rubygems_version: 3.0.6
|
116
115
|
signing_key:
|
117
116
|
specification_version: 4
|
118
117
|
summary: RSpec matchers for dry-validation
|