valid_attribute 0.0.3 → 0.0.4

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.
data/HISTORY CHANGED
@@ -1,3 +1,6 @@
1
+ == 0.0.4
2
+ fix for multiple should_not values
3
+
1
4
  == 0.0.3
2
5
  should_not fix for when the validation key doesn't exist yet
3
6
  removed .message method. Not good BDD
@@ -1,3 +1,3 @@
1
1
  module ValidAttribute
2
- VERSION = "0.0.3"
2
+ VERSION = "0.0.4"
3
3
  end
@@ -19,9 +19,7 @@ module ValidAttribute
19
19
  attr_accessor :attr, :values, :subject, :failed_values, :passed_values
20
20
 
21
21
  def initialize(attr)
22
- self.attr = attr
23
- self.failed_values = []
24
- self.passed_values = []
22
+ self.attr = attr
25
23
  end
26
24
 
27
25
  def when(*values)
@@ -46,11 +44,25 @@ module ValidAttribute
46
44
  end
47
45
 
48
46
  def matches?(subject)
47
+ check_values(subject)
48
+ failed_values.empty?
49
+ end
50
+
51
+ def does_not_match?(subject)
52
+ check_values(subject)
53
+ passed_values.empty?
54
+ end
55
+
56
+ private
57
+
58
+ def check_values(subject)
49
59
  unless values
50
60
  raise ::ValidAttribute::NoValues, "you need to set the values with .when on the matcher (ex. it { should have_valid(:name).when('Brian') })"
51
61
  end
52
62
 
53
- self.subject = subject
63
+ self.subject = subject
64
+ self.failed_values = []
65
+ self.passed_values = []
54
66
 
55
67
  values.each do |value|
56
68
  subject.send("#{attr}=", value)
@@ -61,12 +73,8 @@ module ValidAttribute
61
73
  self.passed_values << value
62
74
  end
63
75
  end
64
-
65
- failed_values.empty?
66
76
  end
67
77
 
68
- private
69
-
70
78
  def quote_values(values)
71
79
  values.map { |value| value.is_a?(String) ? "'#{value}'" : value }.join(', ')
72
80
  end
@@ -37,14 +37,19 @@ describe 'ValidAttribute' do
37
37
 
38
38
  describe 'data is first invalid then invalid' do
39
39
  before do
40
- @user.stubs(:valid?).returns(false).then.returns(true).then.returns(false)
41
- @user.stubs(:errors).returns({:name => []}).then.returns({})
42
- @matcher = @should.have_valid(:name).when('abc', 123)
43
- @result = @matcher.matches?(@user)
40
+ @user.stubs(:valid?).returns(false).then.returns(true).then.returns(false).then.returns(true)
41
+ @user.stubs(:errors).returns({:name => []}).then.returns({}).then.returns({:name => []}).then.returns({})
42
+ @matcher = @should.have_valid(:name).when('abc', 123)
43
+ @matches = @matcher.matches?(@user)
44
+ @does_not_match = @matcher.does_not_match?(@user)
45
+ end
46
+
47
+ it 'matches? returns false' do
48
+ @matches.should be_false
44
49
  end
45
50
 
46
- it 'returns false' do
47
- @result.should be_false
51
+ it 'does_not_match? returns false' do
52
+ @does_not_match.should be_false
48
53
  end
49
54
 
50
55
  it 'has a failure message of the failed values' do
@@ -58,14 +63,19 @@ describe 'ValidAttribute' do
58
63
 
59
64
  describe 'data is first invalid then valid then invalid then valid' do
60
65
  before do
61
- @user.stubs(:valid?).returns(false).then.returns(true).then.returns(false)
62
- @user.stubs(:errors).returns({:name => []}).then.returns({}).then.returns({:name => []}).then.returns({})
63
- @matcher = @should.have_valid(:name).when('abc', 123, 456, 'def')
64
- @result = @matcher.matches?(@user)
66
+ @user.stubs(:valid?).returns(false).then.returns(true).then.returns(false).then.returns(false).then.returns(true).then.returns(false)
67
+ @user.stubs(:errors).returns({:name => []}).then.returns({}).then.returns({:name => []}).then.returns({}).then.returns({:name => []}).then.returns({}).then.returns({:name => []}).then.returns({})
68
+ @matcher = @should.have_valid(:name).when('abc', 123, 456, 'def')
69
+ @matches = @matcher.matches?(@user)
70
+ @does_not_match = @matcher.does_not_match?(@user)
71
+ end
72
+
73
+ it 'matches? returns false' do
74
+ @matches.should be_false
65
75
  end
66
76
 
67
- it 'returns false' do
68
- @result.should be_false
77
+ it 'does_not_match? returns true' do
78
+ @does_not_match.should be_false
69
79
  end
70
80
 
71
81
  it 'has a failure message of the failed values' do
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.3
5
+ version: 0.0.4
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-12 00:00:00 -04:00
13
+ date: 2011-05-05 00:00:00 -04:00
14
14
  default_executable:
15
15
  dependencies:
16
16
  - !ruby/object:Gem::Dependency