dry-validation-matchers 0.3.0 → 0.4.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: e683c7835e3bdb494ff818f193966dc2a8cc4db3
4
- data.tar.gz: 3255c6fec6c3ed488f14d66ca13af1edf2c07919
3
+ metadata.gz: 114a34fb8b5a6e38dd5940013d850f90c143b3ac
4
+ data.tar.gz: 8de84e039e1f043018ffb97d591c73b65a361abe
5
5
  SHA512:
6
- metadata.gz: 4e59cf54eb8b8377fcb5c15caa216bd6fe6526d9b05174263bf8bc4e2df934114743a238cd107b6538ff08b416b2f190b3f84fc8bc0d5d412bb305006c2f83e5
7
- data.tar.gz: 4b6985fbfe900d657f0f9816b79e36b3c1ffa50a5577845fb28d967f79ae6faaaadbdfa2bf3051282899de0ec51ff9eaa256f26b8871bbb976dbacfcb40dcde8
6
+ metadata.gz: c9684d7132fce67d1d6933e22b124979fa32f415fa4bcd169d3acba074e4636d870514c676752ba2e6db51d998c0919ef9411f27514bdcefb6f00cf2165c38d3
7
+ data.tar.gz: f3889efd51bedc92d9b2a8d650f3a9543ed35061dadce9f06cab7b3fbbaf012ecdbe86338dbac2a97ce30c7f19593f03de8bbccee4026049788c7dca434e8328
@@ -4,6 +4,10 @@ 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
+ ## [0.4.0] - 2016-11-10
8
+ ### Added
9
+ - Add support for checking that the value is included_in
10
+
7
11
  ## [0.3.0] - 2016-11-09
8
12
  ### Added
9
13
  - Add support for float, decimal, bool, date, time, date_time, array, hash
@@ -49,6 +49,7 @@ module Dry::Validation::Matchers
49
49
  @attr = attr
50
50
  @acceptance = acceptance
51
51
  @type = DEFAULT_TYPE
52
+ @value_rules = []
52
53
  end
53
54
 
54
55
  def description
@@ -87,7 +88,8 @@ module Dry::Validation::Matchers
87
88
 
88
89
  check_required_or_optional!(schema) &&
89
90
  check_filled!(schema) &&
90
- check_filled_with_type!(schema)
91
+ check_filled_with_type!(schema) &&
92
+ check_value!(schema)
91
93
  end
92
94
 
93
95
  def filled(type=:str)
@@ -96,6 +98,11 @@ module Dry::Validation::Matchers
96
98
  self
97
99
  end
98
100
 
101
+ def value(value_rules)
102
+ @value_rules = value_rules
103
+ self
104
+ end
105
+
99
106
  private
100
107
 
101
108
  def check_required_or_optional!(schema)
@@ -131,5 +138,32 @@ module Dry::Validation::Matchers
131
138
  unallowed_errors.empty?
132
139
  end
133
140
 
141
+ def check_value!(schema)
142
+ @value_rules.map do |rule|
143
+ method_name = :"check_value_#{rule[0]}!"
144
+ return true if !self.class.private_method_defined?(method_name)
145
+ send(method_name, schema, rule)
146
+ end.none? {|result| result == false}
147
+ end
148
+
149
+ def check_value_included_in!(schema, rule)
150
+ predicate = rule[0]
151
+ allowed_values = rule[1]
152
+
153
+ invalid_for_expected_values = allowed_values.map do |v|
154
+ result = schema.(@attr => v)
155
+ error_messages = result.errors[@attr]
156
+ error_messages.present? && error_messages.grep(/must be one of/).any?
157
+ end.all? {|result| result == true}
158
+ return false if invalid_for_expected_values
159
+
160
+ value_outside_required = allowed_values.sample.to_s + SecureRandom.hex(2)
161
+ result = schema.(@attr => value_outside_required)
162
+ error_messages = result.errors[@attr]
163
+ return false if error_messages.nil?
164
+ return true if error_messages.grep(/must be one of/).any?
165
+ false
166
+ end
167
+
134
168
  end
135
169
  end
@@ -1,7 +1,7 @@
1
1
  module Dry
2
2
  module Validation
3
3
  module Matchers
4
- VERSION = "0.3.0"
4
+ VERSION = "0.4.0"
5
5
  end
6
6
  end
7
7
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: dry-validation-matchers
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.0
4
+ version: 0.4.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: 2016-11-09 00:00:00.000000000 Z
11
+ date: 2016-11-10 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport