valcro 0.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 ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA256:
3
+ metadata.gz: d0b163e4ce4b3622845484854e1d18cb2da5c979a6d7553ac4dafddbf3a30b53
4
+ data.tar.gz: 755ae121491f4a852b2aa98ac57f167a411b93d4f8626ed99d2fea8e76bcca18
5
+ SHA512:
6
+ metadata.gz: 635a3e342da795569d4ed2998c7a719d308fccb66d9fde5783328d03d5e65bbb4a4ce622f62111b20239909c56e102065e1e9c03e81e721daec06a96b1df3b5a
7
+ data.tar.gz: 68e7c8ff05dd6543efdb7916c6a495ae7ad66fb2c38c708a8cc97b0681864356716d7b9d6f8b0807ddd115867dd4835de66bc9835143f216cced8d630da11af9
data/.travis.yml CHANGED
@@ -1,6 +1,5 @@
1
1
  language: ruby
2
2
  rvm:
3
- - 1.9.2
4
- - 1.9.3
5
- - jruby-19mode
6
- - rbx-19mode
3
+ - 2.2
4
+ - 2.3
5
+ - 2.4.1
@@ -32,5 +32,9 @@ module Valcro
32
32
  def any?
33
33
  @errors.any?
34
34
  end
35
+
36
+ def none?
37
+ @errors.none?
38
+ end
35
39
  end
36
40
  end
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"
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)
@@ -51,10 +51,21 @@ describe Valcro::ErrorList, '#any?' do
51
51
  it 'is true when there are errors 'do
52
52
  list = Valcro::ErrorList.new
53
53
 
54
- expect(list.any?).to be_false
54
+ expect(list.any?).to be_falsey
55
55
  list.add :prop, 'some error'
56
56
 
57
- expect(list.any?).to be_true
57
+ expect(list.any?).to be_truthy
58
+ end
59
+ end
60
+
61
+ describe Valcro::ErrorList, '#none?' do
62
+ it 'is true when there no errors 'do
63
+ list = Valcro::ErrorList.new
64
+
65
+ expect(list.none?).to be_truthy
66
+ list.add :prop, 'some error'
67
+
68
+ expect(list.none?).to be_falsey
58
69
  end
59
70
  end
60
71
 
@@ -62,9 +73,9 @@ describe Valcro::ErrorList, '#clear!' do
62
73
  it 'removes all errors' do
63
74
  list = Valcro::ErrorList.new
64
75
  list.add :prop, 'some error'
65
- expect(list.any?).to be_true
76
+ expect(list.any?).to be_truthy
66
77
 
67
78
  list.clear!
68
- expect(list.any?).to be_false
79
+ expect(list.any?).to be_falsey
69
80
  end
70
81
  end
data/spec/runner_spec.rb CHANGED
@@ -14,6 +14,6 @@ describe Valcro::Runner do
14
14
 
15
15
  runner.validate
16
16
 
17
- expect(error_list.any?).to be_true
17
+ expect(error_list.any?).to be_truthy
18
18
  end
19
19
  end
data/spec/spec_helper.rb CHANGED
@@ -1,6 +1,6 @@
1
1
  require 'valcro'
2
+ require 'rspec/collection_matchers'
2
3
  RSpec.configure do |config|
3
- config.treat_symbols_as_metadata_keys_with_true_values = true
4
4
  config.run_all_when_everything_filtered = true
5
5
  config.filter_run :focus
6
6
 
data/spec/valcro_spec.rb CHANGED
@@ -6,7 +6,7 @@ describe Valcro do
6
6
  end
7
7
 
8
8
  it 'is valid with no validations defined' do
9
- expect(TestClass.new.valid?).to be_true
9
+ expect(TestClass.new.valid?).to be_truthy
10
10
  end
11
11
  end
12
12
 
@@ -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 }
@@ -75,7 +120,7 @@ describe Valcro, '#error_messages' do
75
120
 
76
121
  it 'delegates to errors' do
77
122
  test_instance = test_class.new
78
- test_instance.stub!(errors: double(to_s: 'some errors'))
123
+ allow(test_instance).to receive(:errors).and_return(double(to_s: 'some errors'))
79
124
 
80
125
  expect(test_instance.error_messages).to eq('some errors')
81
126
  end
@@ -96,10 +141,10 @@ describe Valcro, '.validate' do
96
141
  test_instance = test_class.new
97
142
  test_instance.works = false
98
143
  test_instance.validate
99
- expect(test_instance.valid?).to be_false
144
+ expect(test_instance.valid?).to be_falsey
100
145
 
101
146
  test_instance.works = true
102
147
  test_instance.validate
103
- expect(test_instance.valid?).to be_true
148
+ expect(test_instance.valid?).to be_truthy
104
149
  end
105
150
  end
data/valcro.gemspec CHANGED
@@ -19,5 +19,6 @@ Gem::Specification.new do |s|
19
19
  s.require_paths = ["lib"]
20
20
 
21
21
  s.add_development_dependency "rspec"
22
+ s.add_development_dependency "rspec-collection_matchers"
22
23
  s.add_development_dependency "rake"
23
24
  end
metadata CHANGED
@@ -1,38 +1,57 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: valcro
3
3
  version: !ruby/object:Gem::Version
4
- version: '0.1'
5
- prerelease:
4
+ version: 0.2.0
6
5
  platform: ruby
7
6
  authors:
8
7
  - Harold Giménez
9
- autorequire:
8
+ autorequire:
10
9
  bindir: bin
11
10
  cert_chain: []
12
- date: 2012-10-16 00:00:00.000000000 Z
11
+ date: 2023-04-25 00:00:00.000000000 Z
13
12
  dependencies:
14
13
  - !ruby/object:Gem::Dependency
15
14
  name: rspec
16
- requirement: &70279594936620 !ruby/object:Gem::Requirement
17
- none: false
15
+ requirement: !ruby/object:Gem::Requirement
18
16
  requirements:
19
- - - ! '>='
17
+ - - ">="
20
18
  - !ruby/object:Gem::Version
21
19
  version: '0'
22
20
  type: :development
23
21
  prerelease: false
24
- version_requirements: *70279594936620
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ">="
25
+ - !ruby/object:Gem::Version
26
+ version: '0'
27
+ - !ruby/object:Gem::Dependency
28
+ name: rspec-collection_matchers
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: '0'
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ">="
39
+ - !ruby/object:Gem::Version
40
+ version: '0'
25
41
  - !ruby/object:Gem::Dependency
26
42
  name: rake
27
- requirement: &70279594952580 !ruby/object:Gem::Requirement
28
- none: false
43
+ requirement: !ruby/object:Gem::Requirement
29
44
  requirements:
30
- - - ! '>='
45
+ - - ">="
31
46
  - !ruby/object:Gem::Version
32
47
  version: '0'
33
48
  type: :development
34
49
  prerelease: false
35
- version_requirements: *70279594952580
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ">="
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
36
55
  description: Valcro is a validation library for arbitrary ruby objects. I's primary
37
56
  goal is to remain as simple as possible so that it can be useful to a large surface
38
57
  of use cases remaining easily extensible.
@@ -42,8 +61,8 @@ executables: []
42
61
  extensions: []
43
62
  extra_rdoc_files: []
44
63
  files:
45
- - .gitignore
46
- - .travis.yml
64
+ - ".gitignore"
65
+ - ".travis.yml"
47
66
  - Gemfile
48
67
  - LICENSE
49
68
  - README.md
@@ -61,33 +80,25 @@ files:
61
80
  - valcro.gemspec
62
81
  homepage: https://github.com/hgimenez/valcro
63
82
  licenses: []
64
- post_install_message:
83
+ metadata: {}
84
+ post_install_message:
65
85
  rdoc_options: []
66
86
  require_paths:
67
87
  - lib
68
88
  required_ruby_version: !ruby/object:Gem::Requirement
69
- none: false
70
89
  requirements:
71
- - - ! '>='
90
+ - - ">="
72
91
  - !ruby/object:Gem::Version
73
92
  version: '0'
74
- segments:
75
- - 0
76
- hash: -54788049467793668
77
93
  required_rubygems_version: !ruby/object:Gem::Requirement
78
- none: false
79
94
  requirements:
80
- - - ! '>='
95
+ - - ">="
81
96
  - !ruby/object:Gem::Version
82
97
  version: '0'
83
- segments:
84
- - 0
85
- hash: -54788049467793668
86
98
  requirements: []
87
- rubyforge_project: valcro
88
- rubygems_version: 1.8.10
89
- signing_key:
90
- specification_version: 3
99
+ rubygems_version: 3.4.12
100
+ signing_key:
101
+ specification_version: 4
91
102
  summary: The simplest possible validation library for Ruby
92
103
  test_files:
93
104
  - spec/error_list_spec.rb