mongoid-rspec 1.5.6 → 1.6.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.
- data/README.md +23 -12
- data/lib/matchers/accept_nested_attributes.rb +65 -0
- data/lib/matchers/validations/length_of.rb +2 -6
- data/lib/mongoid-rspec.rb +1 -0
- data/lib/mongoid-rspec/version.rb +1 -1
- data/spec/models/article.rb +2 -0
- data/spec/models/user.rb +2 -0
- data/spec/unit/accept_nested_attributes_spec.rb +12 -0
- metadata +6 -4
data/README.md
CHANGED
@@ -9,6 +9,18 @@ RSpec matchers for Mongoid 3.x.
|
|
9
9
|
|
10
10
|
For Mongoid 2.x, use [mongoid-rspec 1.4.5](http://rubygems.org/gems/mongoid-rspec/versions/1.4.5)
|
11
11
|
|
12
|
+
Installation
|
13
|
+
-
|
14
|
+
Add to your Gemfile
|
15
|
+
|
16
|
+
gem 'mongoid-rspec'
|
17
|
+
|
18
|
+
Drop in existing or dedicated support file in spec/support (spec/support/mongoid.rb)
|
19
|
+
|
20
|
+
RSpec.configure do |configuration|
|
21
|
+
configuration.include Mongoid::Matchers
|
22
|
+
end
|
23
|
+
|
12
24
|
Association Matchers
|
13
25
|
-
|
14
26
|
describe User do
|
@@ -104,6 +116,17 @@ Validation Matchers
|
|
104
116
|
it { should custom_validate(:ssn).with_validator(SsnValidator) }
|
105
117
|
end
|
106
118
|
|
119
|
+
Accepts Nested Attributes Matcher
|
120
|
+
-
|
121
|
+
describe User do
|
122
|
+
it { should accept_nested_attributes_for(:articles) }
|
123
|
+
it { should accept_nested_attributes_for(:comments) }
|
124
|
+
end
|
125
|
+
|
126
|
+
describe Article do
|
127
|
+
it { should accept_nested_attributes_for(:permalink) }
|
128
|
+
end
|
129
|
+
|
107
130
|
Index Matcher
|
108
131
|
-
|
109
132
|
describe Article do
|
@@ -143,18 +166,6 @@ Others
|
|
143
166
|
it { should_not have_field(:number_of_comments).of_type(Integer).with_default_value_of(1) }
|
144
167
|
end
|
145
168
|
|
146
|
-
Use
|
147
|
-
-
|
148
|
-
add in Gemfile
|
149
|
-
|
150
|
-
gem 'mongoid-rspec'
|
151
|
-
|
152
|
-
drop in existing or dedicated support file in spec/support (spec/support/mongoid.rb)
|
153
|
-
|
154
|
-
RSpec.configure do |configuration|
|
155
|
-
configuration.include Mongoid::Matchers
|
156
|
-
end
|
157
|
-
|
158
169
|
Acknowledgement
|
159
170
|
-
|
160
171
|
Thanks to [Durran Jordan](https://github.com/durran) for providing the changes necessary to make
|
@@ -0,0 +1,65 @@
|
|
1
|
+
module Mongoid
|
2
|
+
module Matchers # :nodoc:
|
3
|
+
|
4
|
+
# Ensures that the model can accept nested attributes for the specified
|
5
|
+
# association.
|
6
|
+
#
|
7
|
+
# Example:
|
8
|
+
# it { should accept_nested_attributes_for(:articles) }
|
9
|
+
#
|
10
|
+
def accept_nested_attributes_for(attribute)
|
11
|
+
AcceptNestedAttributesForMatcher.new(attribute)
|
12
|
+
end
|
13
|
+
|
14
|
+
class AcceptNestedAttributesForMatcher
|
15
|
+
|
16
|
+
def initialize(attribute)
|
17
|
+
@attribute = attribute.to_s
|
18
|
+
@options = {}
|
19
|
+
end
|
20
|
+
|
21
|
+
def matches?(subject)
|
22
|
+
@subject = subject
|
23
|
+
match?
|
24
|
+
end
|
25
|
+
|
26
|
+
def failure_message
|
27
|
+
"Expected #{expectation} (#{@problem})"
|
28
|
+
end
|
29
|
+
|
30
|
+
def negative_failure_message
|
31
|
+
"Did not expect #{expectation}"
|
32
|
+
end
|
33
|
+
|
34
|
+
def description
|
35
|
+
description = "accepts_nested_attributes_for :#{@attribute}"
|
36
|
+
end
|
37
|
+
|
38
|
+
protected
|
39
|
+
def match?
|
40
|
+
exists?
|
41
|
+
end
|
42
|
+
|
43
|
+
def exists?
|
44
|
+
if config
|
45
|
+
true
|
46
|
+
else
|
47
|
+
@problem = 'is not declared'
|
48
|
+
false
|
49
|
+
end
|
50
|
+
end
|
51
|
+
|
52
|
+
def config
|
53
|
+
model_class.nested_attributes["#{@attribute}_attributes"]
|
54
|
+
end
|
55
|
+
|
56
|
+
def model_class
|
57
|
+
@subject.class
|
58
|
+
end
|
59
|
+
|
60
|
+
def expectation
|
61
|
+
"#{model_class.name} to accept nested attributes for #{@attribute}"
|
62
|
+
end
|
63
|
+
end
|
64
|
+
end
|
65
|
+
end
|
@@ -109,15 +109,11 @@ module Mongoid
|
|
109
109
|
end
|
110
110
|
|
111
111
|
def actual_min
|
112
|
-
@validator.options[:minimum] || ((@validator.options[:in] || @validator.options[:within]).try(&:min))
|
113
|
-
puts "minimum: #{x}, #{@validator.options}"
|
114
|
-
end
|
112
|
+
@validator.options[:minimum] || ((@validator.options[:in] || @validator.options[:within]).try(&:min))
|
115
113
|
end
|
116
114
|
|
117
115
|
def actual_max
|
118
|
-
@validator.options[:maximum] || ((@validator.options[:in] || @validator.options[:within]).try(&:max))
|
119
|
-
puts "maximum: #{x}"
|
120
|
-
end
|
116
|
+
@validator.options[:maximum] || ((@validator.options[:in] || @validator.options[:within]).try(&:max))
|
121
117
|
end
|
122
118
|
end
|
123
119
|
|
data/lib/mongoid-rspec.rb
CHANGED
@@ -8,6 +8,7 @@ require 'matchers/associations'
|
|
8
8
|
require 'matchers/collections'
|
9
9
|
require 'matchers/indexes'
|
10
10
|
require 'matchers/allow_mass_assignment'
|
11
|
+
require 'matchers/accept_nested_attributes'
|
11
12
|
require 'matchers/validations'
|
12
13
|
require 'matchers/validations/associated'
|
13
14
|
require 'matchers/validations/confirmation_of'
|
data/spec/models/article.rb
CHANGED
data/spec/models/user.rb
CHANGED
@@ -0,0 +1,12 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe "AcceptsNestedAttributes" do
|
4
|
+
describe User do
|
5
|
+
it { should accept_nested_attributes_for(:articles) }
|
6
|
+
it { should accept_nested_attributes_for(:comments) }
|
7
|
+
end
|
8
|
+
|
9
|
+
describe Article do
|
10
|
+
it { should accept_nested_attributes_for(:permalink) }
|
11
|
+
end
|
12
|
+
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: mongoid-rspec
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.6.0
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2013-01-
|
12
|
+
date: 2013-01-27 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: rake
|
@@ -75,6 +75,7 @@ files:
|
|
75
75
|
- LICENSE
|
76
76
|
- README.md
|
77
77
|
- Rakefile
|
78
|
+
- lib/matchers/accept_nested_attributes.rb
|
78
79
|
- lib/matchers/allow_mass_assignment.rb
|
79
80
|
- lib/matchers/associations.rb
|
80
81
|
- lib/matchers/collections.rb
|
@@ -106,6 +107,7 @@ files:
|
|
106
107
|
- spec/models/site.rb
|
107
108
|
- spec/models/user.rb
|
108
109
|
- spec/spec_helper.rb
|
110
|
+
- spec/unit/accept_nested_attributes_spec.rb
|
109
111
|
- spec/unit/allow_mass_assignment_spec.rb
|
110
112
|
- spec/unit/associations_spec.rb
|
111
113
|
- spec/unit/collections_spec.rb
|
@@ -133,7 +135,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
133
135
|
version: '0'
|
134
136
|
requirements: []
|
135
137
|
rubyforge_project: mongoid-rspec
|
136
|
-
rubygems_version: 1.8.
|
138
|
+
rubygems_version: 1.8.24
|
137
139
|
signing_key:
|
138
140
|
specification_version: 3
|
139
141
|
summary: RSpec matchers for Mongoid
|
@@ -149,6 +151,7 @@ test_files:
|
|
149
151
|
- spec/models/site.rb
|
150
152
|
- spec/models/user.rb
|
151
153
|
- spec/spec_helper.rb
|
154
|
+
- spec/unit/accept_nested_attributes_spec.rb
|
152
155
|
- spec/unit/allow_mass_assignment_spec.rb
|
153
156
|
- spec/unit/associations_spec.rb
|
154
157
|
- spec/unit/collections_spec.rb
|
@@ -156,4 +159,3 @@ test_files:
|
|
156
159
|
- spec/unit/indexes_spec.rb
|
157
160
|
- spec/unit/validations_spec.rb
|
158
161
|
- spec/validators/ssn_validator.rb
|
159
|
-
has_rdoc:
|