dry-validation-matchers 1.1.1 → 1.2.0
Sign up to get free protection for your applications and to get access to all the features.
- 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
|