valcro 0.1.1 → 0.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 +5 -5
- data/lib/valcro/runner.rb +5 -0
- data/lib/valcro/version.rb +1 -1
- data/lib/valcro.rb +7 -2
- data/spec/valcro_spec.rb +45 -0
- metadata +6 -7
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: d0b163e4ce4b3622845484854e1d18cb2da5c979a6d7553ac4dafddbf3a30b53
|
4
|
+
data.tar.gz: 755ae121491f4a852b2aa98ac57f167a411b93d4f8626ed99d2fea8e76bcca18
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 635a3e342da795569d4ed2998c7a719d308fccb66d9fde5783328d03d5e65bbb4a4ce622f62111b20239909c56e102065e1e9c03e81e721daec06a96b1df3b5a
|
7
|
+
data.tar.gz: 68e7c8ff05dd6543efdb7916c6a495ae7ad66fb2c38c708a8cc97b0681864356716d7b9d6f8b0807ddd115867dd4835de66bc9835143f216cced8d630da11af9
|
data/lib/valcro/runner.rb
CHANGED
data/lib/valcro/version.rb
CHANGED
data/lib/valcro.rb
CHANGED
@@ -20,9 +20,14 @@ module Valcro
|
|
20
20
|
end
|
21
21
|
|
22
22
|
def validate
|
23
|
-
|
23
|
+
validation_runner.clear!
|
24
24
|
self.class.validators.each do |validator_class|
|
25
|
-
|
25
|
+
validator = if validator_class.respond_to?(:build)
|
26
|
+
validator_class.build(self)
|
27
|
+
else
|
28
|
+
validator_class.new(self)
|
29
|
+
end
|
30
|
+
validation_runner.add_validator validator
|
26
31
|
end
|
27
32
|
self.class.validation_blocks.each do |validation_block|
|
28
33
|
instance_eval(&validation_block)
|
data/spec/valcro_spec.rb
CHANGED
@@ -68,6 +68,51 @@ describe Valcro, 'validators' do
|
|
68
68
|
end
|
69
69
|
end
|
70
70
|
|
71
|
+
describe Valcro, 'reusable validators' do
|
72
|
+
class ScopedStatusFailValidator
|
73
|
+
def self.build(context)
|
74
|
+
new(context.status)
|
75
|
+
end
|
76
|
+
|
77
|
+
def initialize(status)
|
78
|
+
@status = status
|
79
|
+
end
|
80
|
+
def call(errors)
|
81
|
+
errors.add(:status, 'big mistake') if @status == 'fail'
|
82
|
+
end
|
83
|
+
end
|
84
|
+
|
85
|
+
let(:test_class) do
|
86
|
+
Class.new do
|
87
|
+
include Valcro
|
88
|
+
attr_accessor :status
|
89
|
+
def status
|
90
|
+
@status ||= "fail"
|
91
|
+
end
|
92
|
+
|
93
|
+
validates_with ScopedStatusFailValidator
|
94
|
+
end
|
95
|
+
end
|
96
|
+
|
97
|
+
it 'can be added validators' do
|
98
|
+
test_instance = test_class.new
|
99
|
+
|
100
|
+
test_instance.validate
|
101
|
+
expect(test_instance).not_to be_valid
|
102
|
+
end
|
103
|
+
|
104
|
+
it 'clears validations on subsequent runs' do
|
105
|
+
test_instance = test_class.new
|
106
|
+
|
107
|
+
test_instance.validate
|
108
|
+
expect(test_instance).not_to be_valid
|
109
|
+
|
110
|
+
test_instance.status = 'win'
|
111
|
+
test_instance.validate
|
112
|
+
expect(test_instance).to be_valid
|
113
|
+
end
|
114
|
+
end
|
115
|
+
|
71
116
|
describe Valcro, '#error_messages' do
|
72
117
|
let(:test_class) do
|
73
118
|
Class.new { include Valcro }
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: valcro
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Harold Giménez
|
8
|
-
autorequire:
|
8
|
+
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2023-04-25 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rspec
|
@@ -81,7 +81,7 @@ files:
|
|
81
81
|
homepage: https://github.com/hgimenez/valcro
|
82
82
|
licenses: []
|
83
83
|
metadata: {}
|
84
|
-
post_install_message:
|
84
|
+
post_install_message:
|
85
85
|
rdoc_options: []
|
86
86
|
require_paths:
|
87
87
|
- lib
|
@@ -96,9 +96,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
96
96
|
- !ruby/object:Gem::Version
|
97
97
|
version: '0'
|
98
98
|
requirements: []
|
99
|
-
|
100
|
-
|
101
|
-
signing_key:
|
99
|
+
rubygems_version: 3.4.12
|
100
|
+
signing_key:
|
102
101
|
specification_version: 4
|
103
102
|
summary: The simplest possible validation library for Ruby
|
104
103
|
test_files:
|