valid_attribute 0.0.1 → 0.0.2

Sign up to get free protection for your applications and to get access to all the features.
data/.gitignore CHANGED
@@ -2,3 +2,5 @@
2
2
  .bundle
3
3
  Gemfile.lock
4
4
  pkg/*
5
+ doc/
6
+ .yardoc
data/HISTORY ADDED
@@ -0,0 +1,3 @@
1
+ == 0.0.2
2
+ Removed default value, allways required to pass value
3
+ Changed #with to #when
data/README.markdown CHANGED
@@ -27,18 +27,17 @@ Instead of having validation specific matchers ValidAttribute only cares if the
27
27
  end
28
28
 
29
29
  describe User do
30
- # The .with method can take any number of values that you want to pass
31
- it { should have_valid(:email).with('test@test.com', 'test+spam@gmail.com') }
32
- it { should_not have_valid(:email).with('fail', 123).message('invalid email format') }
33
- it { should have_valid(:name).with('TestName')
34
- it { should_not have_valid(:name).with('Test')
30
+ # The .when method can take any number of values that you want to pass
31
+ it { should have_valid(:email).when('test@test.com', 'test+spam@gmail.com') }
32
+ it { should_not have_valid(:email).when('fail', 123).message('invalid email format') }
33
+ it { should have_valid(:name).when('TestName')
34
+ it { should_not have_valid(:name).when('Test')
35
35
 
36
36
  # Because 'should' works off the the 'subject' in RSpec we can set other values if necessary for a given validation test
37
37
  describe 'password' do
38
38
  before { subject.password_confirmation = 'password' }
39
- it { should have_valid(:password).with('password') }
40
- # Not providing '.with' defaults to nil
41
- it { should_not have_valid(:password) }
39
+ it { should have_valid(:password).when('password') }
40
+ it { should_not have_valid(:password).when(nil) }
42
41
  end
43
42
  end
44
43
 
@@ -1,3 +1,3 @@
1
1
  module ValidAttribute
2
- VERSION = "0.0.1"
2
+ VERSION = "0.0.2"
3
3
  end
@@ -1,5 +1,15 @@
1
1
  module ValidAttribute
2
-
2
+ class NoValues < StandardError; end
3
+ # Test if an attribute is valid
4
+ #
5
+ # examples:
6
+ # it { should have_valid(:name).when('Brian') }
7
+ # it { should_not have_valid(:name).message("can't be blank") }
8
+ # it { should have_valid(:email).when('test@test.com', 'test+spam@gmail.com') }
9
+ #
10
+ # @param [Symbol]
11
+ #
12
+ # @return [ValidAttribute::ValidAttributeMatcher]
3
13
  def have_valid(attr)
4
14
  ValidAttributeMatcher.new(attr)
5
15
  end
@@ -9,10 +19,9 @@ module ValidAttribute
9
19
 
10
20
  def initialize(attr)
11
21
  self.attr = attr
12
- self.values = [nil]
13
22
  end
14
23
 
15
- def with(*values)
24
+ def when(*values)
16
25
  self.values = values
17
26
  self
18
27
  end
@@ -45,6 +54,10 @@ module ValidAttribute
45
54
  end
46
55
 
47
56
  def matches?(subject)
57
+ unless values
58
+ raise ::ValidAttribute::NoValues, "you need to set the values with .when on the matcher (ex. it { should have_valid(:name).when('Brian') })"
59
+ end
60
+
48
61
  self.subject = subject
49
62
 
50
63
  values.each do |value|
@@ -29,12 +29,12 @@ describe 'ValidAttribute' do
29
29
  end
30
30
 
31
31
  it 'passes with no value set' do
32
- matcher = @should.have_valid(:name)
32
+ matcher = @should.have_valid(:name).when(nil)
33
33
  matcher.matches?(@user).should be_true
34
34
  end
35
35
 
36
36
  it 'passes with values set' do
37
- matcher = @should.have_valid(:name).with('Brian', 'Stephanie')
37
+ matcher = @should.have_valid(:name).when('Brian', 'Stephanie')
38
38
  matcher.matches?(@user).should be_true
39
39
  end
40
40
  end
@@ -46,17 +46,17 @@ describe 'ValidAttribute' do
46
46
  end
47
47
 
48
48
  it 'returns false when no message passed' do
49
- matcher = @should.have_valid(:name)
49
+ matcher = @should.have_valid(:name).when(nil)
50
50
  matcher.matches?(@user).should be_false
51
51
  end
52
52
 
53
53
  it 'returns true when wrong message is passed' do
54
- matcher = @should.have_valid(:name).message('wrong message')
54
+ matcher = @should.have_valid(:name).when(nil).message('wrong message')
55
55
  matcher.matches?(@user).should_not be_false
56
56
  end
57
57
 
58
58
  it 'returns false when correct message is passed' do
59
- matcher = @should.have_valid(:name).message('is not valid')
59
+ matcher = @should.have_valid(:name).when(nil).message('is not valid')
60
60
  matcher.matches?(@user).should be_false
61
61
  end
62
62
  end
@@ -68,7 +68,7 @@ describe 'ValidAttribute' do
68
68
  end
69
69
 
70
70
  it 'returns false' do
71
- matcher = @should.have_valid(:name).with('true', 'false')
71
+ matcher = @should.have_valid(:name).when('true', 'false')
72
72
  matcher.matches?(@user).should be_false
73
73
  end
74
74
  end
@@ -80,13 +80,13 @@ describe 'ValidAttribute' do
80
80
  end
81
81
 
82
82
  it 'has a message for string values' do
83
- matcher = @should.have_valid(:name).with('Brian')
83
+ matcher = @should.have_valid(:name).when('Brian')
84
84
  matcher.matches?(@user)
85
85
  matcher.failure_message.should == " expected User#name to accept a value of 'Brian'"
86
86
  end
87
87
 
88
88
  it 'has a message for non string values' do
89
- matcher = @should.have_valid(:name).with(123)
89
+ matcher = @should.have_valid(:name).when(123)
90
90
  matcher.matches?(@user)
91
91
  matcher.failure_message.should == " expected User#name to accept a value of 123"
92
92
  end
@@ -99,22 +99,29 @@ describe 'ValidAttribute' do
99
99
  end
100
100
 
101
101
  it 'has a message for string values' do
102
- matcher = @should.have_valid(:name).with('Brian')
102
+ matcher = @should.have_valid(:name).when('Brian')
103
103
  matcher.matches?(@user)
104
104
  matcher.negative_failure_message.should == " expected User#name to not accept a value of 'Brian'"
105
105
  end
106
106
 
107
107
  it 'has a message for non string values' do
108
- matcher = @should.have_valid(:name).with(123)
108
+ matcher = @should.have_valid(:name).when(123)
109
109
  matcher.matches?(@user)
110
110
  matcher.negative_failure_message.should == " expected User#name to not accept a value of 123"
111
111
  end
112
112
 
113
113
  it 'includes the validation message' do
114
- matcher = @should.have_valid(:name).with('Brian').message('is not valid')
114
+ matcher = @should.have_valid(:name).when('Brian').message('is not valid')
115
115
  matcher.matches?(@user)
116
116
  matcher.negative_failure_message.should == " expected User#name to not accept a value of 'Brian' with a message of 'is not valid'"
117
117
  end
118
118
  end
119
119
 
120
+ it 'requires .when to always be used' do
121
+ matcher = @should.have_valid(:name)
122
+ expect do
123
+ matcher.matches?(@user)
124
+ end.to raise_error ValidAttribute::NoValues, "you need to set the values with .when on the matcher (ex. it { should have_valid(:name).when('Brian') })"
125
+ end
126
+
120
127
  end
metadata CHANGED
@@ -2,7 +2,7 @@
2
2
  name: valid_attribute
3
3
  version: !ruby/object:Gem::Version
4
4
  prerelease:
5
- version: 0.0.1
5
+ version: 0.0.2
6
6
  platform: ruby
7
7
  authors:
8
8
  - Brian Cardarella
@@ -10,7 +10,7 @@ autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
12
 
13
- date: 2011-04-04 00:00:00 -04:00
13
+ date: 2011-04-05 00:00:00 -04:00
14
14
  default_executable:
15
15
  dependencies:
16
16
  - !ruby/object:Gem::Dependency
@@ -60,6 +60,7 @@ files:
60
60
  - .rspec
61
61
  - .rvmrc
62
62
  - Gemfile
63
+ - HISTORY
63
64
  - README.markdown
64
65
  - Rakefile
65
66
  - lib/valid_attribute.rb