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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
- SHA1:
3
- metadata.gz: fcbac62421055229ee2460f427804335464feff1
4
- data.tar.gz: cc32e12f3d05f65819d2753efcdb614ad8559ae0
2
+ SHA256:
3
+ metadata.gz: d0b163e4ce4b3622845484854e1d18cb2da5c979a6d7553ac4dafddbf3a30b53
4
+ data.tar.gz: 755ae121491f4a852b2aa98ac57f167a411b93d4f8626ed99d2fea8e76bcca18
5
5
  SHA512:
6
- metadata.gz: 12a29984eb35f88ad6049a15a0f51c73deb632c2f4321f0efa041a7ba69597cb6f0fa6ecaddc93fc4e8d576c23adce0991dafd09b5fe977f5cf2b6364a3d735b
7
- data.tar.gz: f8859de06c414bbad878c92420c40ee712384f054e9a2c47b6486036c98fb56889c7663bedd0ce0cefbaf1ce21b850c77642ff2baca348b3c448ba1fb1fc3f94
6
+ metadata.gz: 635a3e342da795569d4ed2998c7a719d308fccb66d9fde5783328d03d5e65bbb4a4ce622f62111b20239909c56e102065e1e9c03e81e721daec06a96b1df3b5a
7
+ data.tar.gz: 68e7c8ff05dd6543efdb7916c6a495ae7ad66fb2c38c708a8cc97b0681864356716d7b9d6f8b0807ddd115867dd4835de66bc9835143f216cced8d630da11af9
data/lib/valcro/runner.rb CHANGED
@@ -6,6 +6,11 @@ module Valcro
6
6
  @error_list = error_list
7
7
  end
8
8
 
9
+ def clear!
10
+ @validators.clear
11
+ @error_list.clear!
12
+ end
13
+
9
14
  def add_validator(validator)
10
15
  @validators << validator
11
16
  end
@@ -1,3 +1,3 @@
1
1
  module Valcro
2
- VERSION = "0.1.1"
2
+ VERSION = "0.2.0"
3
3
  end
data/lib/valcro.rb CHANGED
@@ -20,9 +20,14 @@ module Valcro
20
20
  end
21
21
 
22
22
  def validate
23
- errors.clear!
23
+ validation_runner.clear!
24
24
  self.class.validators.each do |validator_class|
25
- validation_runner.add_validator validator_class.new(self)
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.1.1
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: 2017-04-10 00:00:00.000000000 Z
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
- rubyforge_project: valcro
100
- rubygems_version: 2.6.11
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: