valcro 0.1.1 → 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
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: