shoulda-matchers 1.4.0 → 1.4.1
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/Gemfile.lock +1 -1
- data/NEWS.md +5 -0
- data/gemfiles/3.0.gemfile.lock +8 -8
- data/gemfiles/3.1.gemfile.lock +8 -8
- data/gemfiles/3.2.gemfile.lock +8 -8
- data/lib/shoulda/matchers/active_model/allow_mass_assignment_of_matcher.rb +11 -1
- data/lib/shoulda/matchers/active_model/allow_value_matcher.rb +1 -1
- data/lib/shoulda/matchers/active_model/ensure_inclusion_of_matcher.rb +7 -11
- data/lib/shoulda/matchers/version.rb +1 -1
- data/spec/shoulda/active_model/allow_mass_assignment_of_matcher_spec.rb +18 -0
- data/spec/shoulda/active_model/allow_value_matcher_spec.rb +8 -0
- data/spec/shoulda/active_model/ensure_inclusion_of_matcher_spec.rb +11 -2
- metadata +4 -4
data/Gemfile.lock
CHANGED
data/NEWS.md
CHANGED
data/gemfiles/3.0.gemfile.lock
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
PATH
|
2
2
|
remote: /Users/draper/Dropbox/Development/shoulda-matchers
|
3
3
|
specs:
|
4
|
-
shoulda-matchers (1.
|
4
|
+
shoulda-matchers (1.4.0)
|
5
5
|
activesupport (>= 3.0.0)
|
6
6
|
|
7
7
|
GEM
|
@@ -38,16 +38,16 @@ GEM
|
|
38
38
|
bundler
|
39
39
|
rake
|
40
40
|
arel (2.0.10)
|
41
|
-
aruba (0.
|
42
|
-
childprocess (
|
41
|
+
aruba (0.5.0)
|
42
|
+
childprocess (= 0.2.3)
|
43
43
|
cucumber (>= 1.1.1)
|
44
44
|
ffi (>= 1.0.11)
|
45
|
-
rspec (>= 2.7.0)
|
45
|
+
rspec-expectations (>= 2.7.0)
|
46
46
|
bourne (1.1.2)
|
47
47
|
mocha (= 0.10.5)
|
48
48
|
builder (2.1.2)
|
49
|
-
childprocess (0.3
|
50
|
-
ffi (~> 1.0
|
49
|
+
childprocess (0.2.3)
|
50
|
+
ffi (~> 1.0.6)
|
51
51
|
cucumber (1.1.9)
|
52
52
|
builder (>= 2.1.2)
|
53
53
|
diff-lcs (>= 1.1.2)
|
@@ -57,7 +57,7 @@ GEM
|
|
57
57
|
diff-lcs (1.1.3)
|
58
58
|
erubis (2.6.6)
|
59
59
|
abstract (>= 1.0.0)
|
60
|
-
ffi (1.
|
60
|
+
ffi (1.0.11)
|
61
61
|
gherkin (2.9.3)
|
62
62
|
json (>= 1.4.6)
|
63
63
|
i18n (0.5.0)
|
@@ -111,7 +111,7 @@ GEM
|
|
111
111
|
sqlite3 (1.3.6)
|
112
112
|
term-ansicolor (1.0.7)
|
113
113
|
thor (0.14.6)
|
114
|
-
treetop (1.4.
|
114
|
+
treetop (1.4.11)
|
115
115
|
polyglot
|
116
116
|
polyglot (>= 0.3.1)
|
117
117
|
tzinfo (0.3.33)
|
data/gemfiles/3.1.gemfile.lock
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
PATH
|
2
2
|
remote: /Users/draper/Dropbox/Development/shoulda-matchers
|
3
3
|
specs:
|
4
|
-
shoulda-matchers (1.
|
4
|
+
shoulda-matchers (1.4.0)
|
5
5
|
activesupport (>= 3.0.0)
|
6
6
|
|
7
7
|
GEM
|
@@ -39,16 +39,16 @@ GEM
|
|
39
39
|
bundler
|
40
40
|
rake
|
41
41
|
arel (2.2.3)
|
42
|
-
aruba (0.
|
43
|
-
childprocess (
|
42
|
+
aruba (0.5.0)
|
43
|
+
childprocess (= 0.2.3)
|
44
44
|
cucumber (>= 1.1.1)
|
45
45
|
ffi (>= 1.0.11)
|
46
|
-
rspec (>= 2.7.0)
|
46
|
+
rspec-expectations (>= 2.7.0)
|
47
47
|
bourne (1.1.2)
|
48
48
|
mocha (= 0.10.5)
|
49
49
|
builder (3.0.3)
|
50
|
-
childprocess (0.3
|
51
|
-
ffi (~> 1.0
|
50
|
+
childprocess (0.2.3)
|
51
|
+
ffi (~> 1.0.6)
|
52
52
|
cucumber (1.1.9)
|
53
53
|
builder (>= 2.1.2)
|
54
54
|
diff-lcs (>= 1.1.2)
|
@@ -57,7 +57,7 @@ GEM
|
|
57
57
|
term-ansicolor (>= 1.0.6)
|
58
58
|
diff-lcs (1.1.3)
|
59
59
|
erubis (2.7.0)
|
60
|
-
ffi (1.
|
60
|
+
ffi (1.0.11)
|
61
61
|
gherkin (2.9.3)
|
62
62
|
json (>= 1.4.6)
|
63
63
|
hike (1.2.1)
|
@@ -131,7 +131,7 @@ GEM
|
|
131
131
|
term-ansicolor (1.0.7)
|
132
132
|
thor (0.14.6)
|
133
133
|
tilt (1.3.3)
|
134
|
-
treetop (1.4.
|
134
|
+
treetop (1.4.11)
|
135
135
|
polyglot
|
136
136
|
polyglot (>= 0.3.1)
|
137
137
|
tzinfo (0.3.33)
|
data/gemfiles/3.2.gemfile.lock
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
PATH
|
2
2
|
remote: /Users/draper/Dropbox/Development/shoulda-matchers
|
3
3
|
specs:
|
4
|
-
shoulda-matchers (1.
|
4
|
+
shoulda-matchers (1.4.0)
|
5
5
|
activesupport (>= 3.0.0)
|
6
6
|
|
7
7
|
GEM
|
@@ -38,16 +38,16 @@ GEM
|
|
38
38
|
bundler
|
39
39
|
rake
|
40
40
|
arel (3.0.2)
|
41
|
-
aruba (0.
|
42
|
-
childprocess (
|
41
|
+
aruba (0.5.0)
|
42
|
+
childprocess (= 0.2.3)
|
43
43
|
cucumber (>= 1.1.1)
|
44
44
|
ffi (>= 1.0.11)
|
45
|
-
rspec (>= 2.7.0)
|
45
|
+
rspec-expectations (>= 2.7.0)
|
46
46
|
bourne (1.1.2)
|
47
47
|
mocha (= 0.10.5)
|
48
48
|
builder (3.0.3)
|
49
|
-
childprocess (0.3
|
50
|
-
ffi (~> 1.0
|
49
|
+
childprocess (0.2.3)
|
50
|
+
ffi (~> 1.0.6)
|
51
51
|
cucumber (1.1.9)
|
52
52
|
builder (>= 2.1.2)
|
53
53
|
diff-lcs (>= 1.1.2)
|
@@ -56,7 +56,7 @@ GEM
|
|
56
56
|
term-ansicolor (>= 1.0.6)
|
57
57
|
diff-lcs (1.1.3)
|
58
58
|
erubis (2.7.0)
|
59
|
-
ffi (1.
|
59
|
+
ffi (1.0.11)
|
60
60
|
gherkin (2.9.3)
|
61
61
|
json (>= 1.4.6)
|
62
62
|
hike (1.2.1)
|
@@ -128,7 +128,7 @@ GEM
|
|
128
128
|
term-ansicolor (1.0.7)
|
129
129
|
thor (0.16.0)
|
130
130
|
tilt (1.3.3)
|
131
|
-
treetop (1.4.
|
131
|
+
treetop (1.4.11)
|
132
132
|
polyglot
|
133
133
|
polyglot (>= 0.3.1)
|
134
134
|
tzinfo (0.3.33)
|
@@ -57,11 +57,21 @@ module Shoulda # :nodoc:
|
|
57
57
|
end
|
58
58
|
|
59
59
|
def description
|
60
|
-
"
|
60
|
+
[base_description, role_description].compact.join(" ")
|
61
61
|
end
|
62
62
|
|
63
63
|
private
|
64
64
|
|
65
|
+
def base_description
|
66
|
+
"allow mass assignment of #{@attribute}"
|
67
|
+
end
|
68
|
+
|
69
|
+
def role_description
|
70
|
+
if role != :default
|
71
|
+
"as #{role}"
|
72
|
+
end
|
73
|
+
end
|
74
|
+
|
65
75
|
def role
|
66
76
|
@options[:role] || :default
|
67
77
|
end
|
@@ -22,6 +22,8 @@ module Shoulda # :nodoc:
|
|
22
22
|
end
|
23
23
|
|
24
24
|
class EnsureInclusionOfMatcher < ValidationMatcher # :nodoc:
|
25
|
+
ARBITRARY_OUTSIDE_STRING = "shouldamatchersteststring"
|
26
|
+
|
25
27
|
def initialize(attribute)
|
26
28
|
super(attribute)
|
27
29
|
@options = {}
|
@@ -138,20 +140,14 @@ module Shoulda # :nodoc:
|
|
138
140
|
end
|
139
141
|
|
140
142
|
def disallows_value_outside_of_array?
|
141
|
-
|
142
|
-
disallows_value_of(value_outside_of_array)
|
143
|
-
else
|
144
|
-
raise CouldNotDetermineValueOutsideOfArray
|
145
|
-
end
|
143
|
+
disallows_value_of(value_outside_of_array)
|
146
144
|
end
|
147
145
|
|
148
146
|
def value_outside_of_array
|
149
|
-
|
150
|
-
|
151
|
-
|
152
|
-
|
153
|
-
if found
|
154
|
-
found.next
|
147
|
+
if @array.include?(ARBITRARY_OUTSIDE_STRING)
|
148
|
+
raise CouldNotDetermineValueOutsideOfArray
|
149
|
+
else
|
150
|
+
ARBITRARY_OUTSIDE_STRING
|
155
151
|
end
|
156
152
|
end
|
157
153
|
end
|
@@ -1,6 +1,24 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
|
3
3
|
describe Shoulda::Matchers::ActiveModel::AllowMassAssignmentOfMatcher do
|
4
|
+
describe "#description" do
|
5
|
+
context 'without a role' do
|
6
|
+
it 'includes the attribute name' do
|
7
|
+
matcher = Shoulda::Matchers::ActiveModel::AllowMassAssignmentOfMatcher.new(:attr)
|
8
|
+
matcher.description.should eq("allow mass assignment of attr")
|
9
|
+
end
|
10
|
+
end
|
11
|
+
|
12
|
+
if active_model_3_1?
|
13
|
+
context 'with a role' do
|
14
|
+
it 'includes the attribute name and the role' do
|
15
|
+
matcher = Shoulda::Matchers::ActiveModel::AllowMassAssignmentOfMatcher.new(:attr).as(:admin)
|
16
|
+
matcher.description.should eq("allow mass assignment of attr as admin")
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
21
|
+
|
4
22
|
context "an attribute that is blacklisted from mass-assignment" do
|
5
23
|
let(:model) do
|
6
24
|
define_model(:example, :attr => :string) do
|
@@ -79,6 +79,14 @@ describe Shoulda::Matchers::ActiveModel::AllowValueMatcher do
|
|
79
79
|
matcher = allow_value("foo").for(:baz)
|
80
80
|
matcher.description.should eq('allow baz to be set to "foo"')
|
81
81
|
end
|
82
|
+
|
83
|
+
it "allows you to call description before calling matches?" do
|
84
|
+
model = define_model(:example, :attr => :string).new
|
85
|
+
matcher = Shoulda::Matchers::ActiveModel::AllowValueMatcher.new("foo").for(:attr)
|
86
|
+
matcher.description
|
87
|
+
|
88
|
+
expect { matcher.matches?(model) }.not_to raise_error
|
89
|
+
end
|
82
90
|
end
|
83
91
|
|
84
92
|
context "an AllowValueMatcher with no values" do
|
@@ -12,11 +12,20 @@ describe Shoulda::Matchers::ActiveModel::EnsureInclusionOfMatcher do
|
|
12
12
|
end
|
13
13
|
end
|
14
14
|
|
15
|
+
context "with true/false values" do
|
16
|
+
it "can verify outside values to ensure the negative case" do
|
17
|
+
model = define_model(:example, :attr => :string).new
|
18
|
+
|
19
|
+
model.should_not ensure_inclusion_of(:attr).in_array([true, false])
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
15
23
|
context "where we cannot determine a value outside the array" do
|
16
24
|
it "should raise a custom exception" do
|
17
|
-
|
25
|
+
model = define_model(:example, :attr => :string).new
|
18
26
|
|
19
|
-
|
27
|
+
arbitrary_string = Shoulda::Matchers::ActiveModel::EnsureInclusionOfMatcher::ARBITRARY_OUTSIDE_STRING
|
28
|
+
expect { model.should ensure_inclusion_of(:attr).in_array([arbitrary_string]) }.to raise_error Shoulda::Matchers::ActiveModel::CouldNotDetermineValueOutsideOfArray
|
20
29
|
end
|
21
30
|
end
|
22
31
|
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: shoulda-matchers
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.4.
|
4
|
+
version: 1.4.1
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -14,7 +14,7 @@ authors:
|
|
14
14
|
autorequire:
|
15
15
|
bindir: bin
|
16
16
|
cert_chain: []
|
17
|
-
date: 2012-10-
|
17
|
+
date: 2012-10-15 00:00:00.000000000 Z
|
18
18
|
dependencies:
|
19
19
|
- !ruby/object:Gem::Dependency
|
20
20
|
name: activesupport
|
@@ -289,7 +289,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
289
289
|
version: '0'
|
290
290
|
segments:
|
291
291
|
- 0
|
292
|
-
hash:
|
292
|
+
hash: 2974632708122422691
|
293
293
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
294
294
|
none: false
|
295
295
|
requirements:
|
@@ -298,7 +298,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
298
298
|
version: '0'
|
299
299
|
segments:
|
300
300
|
- 0
|
301
|
-
hash:
|
301
|
+
hash: 2974632708122422691
|
302
302
|
requirements: []
|
303
303
|
rubyforge_project:
|
304
304
|
rubygems_version: 1.8.24
|