valcro 0.0.2 → 0.1

Sign up to get free protection for your applications and to get access to all the features.
data/README.md CHANGED
@@ -1,6 +1,7 @@
1
1
  # Valcro
2
2
 
3
- [![Build Status](https://secure.travis-ci.org/hgimenez/valcro.png?branch=master)](http://travis-ci.org/hgimenez/valcro)
3
+ [![Build Status](https://secure.travis-ci.org/hgmnz/valcro.png?branch=master)](http://travis-ci.org/hgmnz/valcro)
4
+ [![Code Climate](https://codeclimate.com/badge.png)](https://codeclimate.com/github/hgmnz/valcro)
4
5
 
5
6
  Valcro is the simple validation library for Ruby. It provides
6
7
 
@@ -25,8 +26,7 @@ class Dog
25
26
 
26
27
  attr_accessor :name
27
28
 
28
- def validate
29
- super
29
+ validate do
30
30
  errors.add(:name, 'must be great') unless name =~ /super|great|cool/
31
31
  end
32
32
  end
@@ -24,6 +24,9 @@ module Valcro
24
24
  self.class.validators.each do |validator_class|
25
25
  validation_runner.add_validator validator_class.new(self)
26
26
  end
27
+ self.class.validation_blocks.each do |validation_block|
28
+ instance_eval(&validation_block)
29
+ end
27
30
  validation_runner.validate
28
31
  end
29
32
 
@@ -39,5 +42,12 @@ module Valcro
39
42
  def validators
40
43
  @validators ||= []
41
44
  end
45
+ def validation_blocks
46
+ @validation_blocks ||= []
47
+ end
48
+
49
+ def validate(&block)
50
+ validation_blocks << block
51
+ end
42
52
  end
43
53
  end
@@ -1,3 +1,3 @@
1
1
  module Valcro
2
- VERSION = "0.0.2"
2
+ VERSION = "0.1"
3
3
  end
@@ -5,7 +5,7 @@ describe Valcro::ErrorList, 'adding errors' do
5
5
  list = Valcro::ErrorList.new
6
6
  list << Valcro::Error.new(:prop, 'message')
7
7
 
8
- list.should have(1).errors
8
+ expect(list.errors.length).to eq(1)
9
9
  end
10
10
  end
11
11
 
@@ -13,13 +13,13 @@ describe Valcro::ErrorList, '#add' do
13
13
  it 'finds and agregates error messages' do
14
14
  list = Valcro::ErrorList.new
15
15
 
16
- list[:one].should == []
16
+ expect(list[:one]).to be_empty
17
17
 
18
18
  list.add(:one, 'message one')
19
19
  list.add(:two, 'message two')
20
20
  list.add(:one, 'another message one')
21
21
 
22
- list[:one].should == ['message one', 'another message one']
22
+ expect(list[:one]).to eq(['message one', 'another message one'])
23
23
  end
24
24
  end
25
25
 
@@ -31,7 +31,7 @@ describe Valcro::ErrorList, '#full_messages' do
31
31
  list.add :prop, 'two'
32
32
  list.add :prop,'three'
33
33
 
34
- list.full_messages.should == ["prop one", "prop two", "prop three"]
34
+ expect(list.full_messages).to eq(["prop one", "prop two", "prop three"])
35
35
  end
36
36
  end
37
37
 
@@ -43,7 +43,7 @@ describe Valcro::ErrorList, '#to_s' do
43
43
  list.add :prop, 'two'
44
44
  list.add :prop, 'three'
45
45
 
46
- list.to_s.should == "prop one prop two prop three"
46
+ expect(list.to_s).to eq("prop one prop two prop three")
47
47
  end
48
48
  end
49
49
 
@@ -51,10 +51,10 @@ describe Valcro::ErrorList, '#any?' do
51
51
  it 'is true when there are errors 'do
52
52
  list = Valcro::ErrorList.new
53
53
 
54
- list.any?.should be_false
54
+ expect(list.any?).to be_false
55
55
  list.add :prop, 'some error'
56
56
 
57
- list.any?.should be_true
57
+ expect(list.any?).to be_true
58
58
  end
59
59
  end
60
60
 
@@ -62,9 +62,9 @@ describe Valcro::ErrorList, '#clear!' do
62
62
  it 'removes all errors' do
63
63
  list = Valcro::ErrorList.new
64
64
  list.add :prop, 'some error'
65
- list.any?.should be_true
65
+ expect(list.any?).to be_true
66
66
 
67
67
  list.clear!
68
- list.any?.should be_false
68
+ expect(list.any?).to be_false
69
69
  end
70
70
  end
@@ -4,18 +4,18 @@ describe Valcro::Error do
4
4
  it 'has a property and a message' do
5
5
  error = create_error(:prop, 'message')
6
6
 
7
- error.property.should == :prop
8
- error.message.should == 'message'
7
+ expect(error.property).to eq(:prop)
8
+ expect(error.message).to eq('message')
9
9
  end
10
10
 
11
11
  it 'can coerce to a string' do
12
12
  error = create_error
13
- error.to_s.should == 'prop message'
13
+ expect(error.to_s).to eq('prop message')
14
14
  end
15
15
 
16
16
  it 'does not include property if it is base' do
17
17
  error = create_error(:base)
18
- error.to_s.should == 'message'
18
+ expect(error.to_s).to eq('message')
19
19
  end
20
20
 
21
21
  def create_error(prop = :prop, message = 'message')
@@ -4,7 +4,7 @@ describe Valcro::Runner do
4
4
  it 'can store validators' do
5
5
  runner = Valcro::Runner.new
6
6
  runner.add_validator :some_validator
7
- runner.validators.should have(1).validator
7
+ expect(runner.validators).to have(1).validator
8
8
  end
9
9
 
10
10
  it 'runs validators' do
@@ -14,6 +14,6 @@ describe Valcro::Runner do
14
14
 
15
15
  runner.validate
16
16
 
17
- error_list.any?.should be_true
17
+ expect(error_list.any?).to be_true
18
18
  end
19
19
  end
@@ -1,2 +1,16 @@
1
- require 'rspec'
2
1
  require 'valcro'
2
+ RSpec.configure do |config|
3
+ config.treat_symbols_as_metadata_keys_with_true_values = true
4
+ config.run_all_when_everything_filtered = true
5
+ config.filter_run :focus
6
+
7
+ # Run specs in random order to surface order dependencies. If you find an
8
+ # order dependency and want to debug it, you can fix the order by providing
9
+ # the seed, which is printed after each run.
10
+ # --seed 1234
11
+ config.order = 'random'
12
+
13
+ config.expect_with :rspec do |c|
14
+ c.syntax = :expect
15
+ end
16
+ end
@@ -5,29 +5,31 @@ describe Valcro do
5
5
  include Valcro
6
6
  end
7
7
 
8
- subject { TestClass.new }
9
- it { should be_valid }
8
+ it 'is valid with no validations defined' do
9
+ expect(TestClass.new.valid?).to be_true
10
+ end
10
11
  end
11
12
 
12
13
  describe Valcro, 'adding some errors' do
13
- class TestClass
14
+ let(:test_class) do
15
+ Class.new do
14
16
  include Valcro
17
+ end
15
18
  end
16
19
 
17
20
  it 'gives access to the error list' do
18
- test_instance = TestClass.new
19
- test_instance.should be_valid
21
+ test_instance = test_class.new
20
22
 
21
23
  test_instance.errors.add(:foo, 'too foo for my taste')
22
24
 
23
- test_instance.errors[:foo].should have(1).error
25
+ expect(test_instance.errors[:foo]).to have(1).error
24
26
 
25
- test_instance.should_not be_valid
27
+ expect(test_instance).not_to be_valid
26
28
  end
27
29
  end
28
30
 
29
31
  describe Valcro, 'validators' do
30
- class StatusFail
32
+ class StatusFailValidator
31
33
  def initialize(context)
32
34
  @context = context
33
35
  end
@@ -36,43 +38,68 @@ describe Valcro, 'validators' do
36
38
  end
37
39
  end
38
40
 
39
- class TestClass
40
- include Valcro
41
- attr_accessor :status
42
- def status
43
- @status ||= "fail"
41
+ let(:test_class) do
42
+ Class.new do
43
+ include Valcro
44
+ attr_accessor :status
45
+ def status
46
+ @status ||= "fail"
47
+ end
48
+ validates_with StatusFailValidator
44
49
  end
45
- validates_with StatusFail
46
50
  end
47
51
 
48
52
  it 'can be added validators' do
49
- test_instance = TestClass.new
53
+ test_instance = test_class.new
50
54
 
51
55
  test_instance.validate
52
- test_instance.should_not be_valid
56
+ expect(test_instance).not_to be_valid
53
57
  end
54
58
 
55
59
  it 'clears validations on subsequent runs' do
56
- test_instance = TestClass.new
60
+ test_instance = test_class.new
57
61
 
58
62
  test_instance.validate
59
- test_instance.should_not be_valid
63
+ expect(test_instance).not_to be_valid
60
64
 
61
65
  test_instance.status = 'win'
62
66
  test_instance.validate
63
- test_instance.should be_valid
67
+ expect(test_instance).to be_valid
64
68
  end
65
69
  end
66
70
 
67
71
  describe Valcro, '#error_messages' do
68
- class TestClass
69
- include Valcro
72
+ let(:test_class) do
73
+ Class.new { include Valcro }
70
74
  end
71
75
 
72
76
  it 'delegates to errors' do
73
- test_instance = TestClass.new
77
+ test_instance = test_class.new
74
78
  test_instance.stub!(errors: double(to_s: 'some errors'))
75
79
 
76
- test_instance.error_messages.should == 'some errors'
80
+ expect(test_instance.error_messages).to eq('some errors')
81
+ end
82
+ end
83
+
84
+ describe Valcro, '.validate' do
85
+ let(:test_class) do
86
+ Class.new do
87
+ include Valcro
88
+ attr_accessor :works
89
+ validate do
90
+ errors.add(:works, 'does not work') unless works
91
+ end
92
+ end
93
+ end
94
+
95
+ it 'sets validations on the included class' do
96
+ test_instance = test_class.new
97
+ test_instance.works = false
98
+ test_instance.validate
99
+ expect(test_instance.valid?).to be_false
100
+
101
+ test_instance.works = true
102
+ test_instance.validate
103
+ expect(test_instance.valid?).to be_true
77
104
  end
78
105
  end
@@ -7,9 +7,9 @@ Gem::Specification.new do |s|
7
7
  s.version = Valcro::VERSION
8
8
  s.authors = ["Harold Giménez"]
9
9
  s.email = ["harold.gimenez@gmail.com"]
10
- s.homepage = ""
11
- s.summary = %q{The simplest possible validation library for ruby}
12
- s.description = %q{The simplest possible validation library for ruby}
10
+ s.homepage = "https://github.com/hgimenez/valcro"
11
+ s.summary = %q{The simplest possible validation library for Ruby}
12
+ s.description = %q{Valcro is a validation library for arbitrary ruby objects. I's primary goal is to remain as simple as possible so that it can be useful to a large surface of use cases remaining easily extensible.}
13
13
 
14
14
  s.rubyforge_project = "valcro"
15
15
 
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: valcro
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.2
4
+ version: '0.1'
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,11 +9,11 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-02-22 00:00:00.000000000Z
12
+ date: 2012-10-16 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rspec
16
- requirement: &70251622748220 !ruby/object:Gem::Requirement
16
+ requirement: &70279594936620 !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ! '>='
@@ -21,10 +21,10 @@ dependencies:
21
21
  version: '0'
22
22
  type: :development
23
23
  prerelease: false
24
- version_requirements: *70251622748220
24
+ version_requirements: *70279594936620
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: rake
27
- requirement: &70251622747460 !ruby/object:Gem::Requirement
27
+ requirement: &70279594952580 !ruby/object:Gem::Requirement
28
28
  none: false
29
29
  requirements:
30
30
  - - ! '>='
@@ -32,8 +32,10 @@ dependencies:
32
32
  version: '0'
33
33
  type: :development
34
34
  prerelease: false
35
- version_requirements: *70251622747460
36
- description: The simplest possible validation library for ruby
35
+ version_requirements: *70279594952580
36
+ description: Valcro is a validation library for arbitrary ruby objects. I's primary
37
+ goal is to remain as simple as possible so that it can be useful to a large surface
38
+ of use cases remaining easily extensible.
37
39
  email:
38
40
  - harold.gimenez@gmail.com
39
41
  executables: []
@@ -57,7 +59,7 @@ files:
57
59
  - spec/spec_helper.rb
58
60
  - spec/valcro_spec.rb
59
61
  - valcro.gemspec
60
- homepage: ''
62
+ homepage: https://github.com/hgimenez/valcro
61
63
  licenses: []
62
64
  post_install_message:
63
65
  rdoc_options: []
@@ -71,7 +73,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
71
73
  version: '0'
72
74
  segments:
73
75
  - 0
74
- hash: -250877099063039284
76
+ hash: -54788049467793668
75
77
  required_rubygems_version: !ruby/object:Gem::Requirement
76
78
  none: false
77
79
  requirements:
@@ -80,13 +82,13 @@ required_rubygems_version: !ruby/object:Gem::Requirement
80
82
  version: '0'
81
83
  segments:
82
84
  - 0
83
- hash: -250877099063039284
85
+ hash: -54788049467793668
84
86
  requirements: []
85
87
  rubyforge_project: valcro
86
88
  rubygems_version: 1.8.10
87
89
  signing_key:
88
90
  specification_version: 3
89
- summary: The simplest possible validation library for ruby
91
+ summary: The simplest possible validation library for Ruby
90
92
  test_files:
91
93
  - spec/error_list_spec.rb
92
94
  - spec/error_spec.rb