mongoid-rspec 4.0.1 → 4.1.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.
- checksums.yaml +5 -5
- data/README.md +4 -0
- data/lib/matchers/associations.rb +20 -1
- data/lib/mongoid/rspec.rb +1 -1
- data/lib/mongoid/rspec/version.rb +1 -1
- data/spec/models/message.rb +6 -0
- data/spec/models/user.rb +1 -0
- data/spec/spec_helper.rb +0 -1
- data/spec/unit/associations_spec.rb +7 -1
- metadata +70 -29
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: 6c59448b4e72ebb718332a28e7ddf77de5b792a09ea273b75959930e2c6c2918
|
4
|
+
data.tar.gz: b1818ed7a513db7a4e31bcdd5a492504a75becfc866dd95505192da1db7a56cc
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 995c284d71146d52d554e8eff18e48605e76546ebce9428674d1fcefe4c560a73973651f4eb4496d21a839fb35944c37f98cc21eb78ddd1e1eea80a57d1392c4
|
7
|
+
data.tar.gz: a2e400ead572f31c614a294f1d5d10116e08fa6f152b2f58cf112da45608a3d72be2c5893ceb035c8a6f514af8ef55bcfdffd0a55a81a2e0f97ad43fd0699cf2
|
data/README.md
CHANGED
@@ -261,6 +261,10 @@ end
|
|
261
261
|
RSpec.describe Site do
|
262
262
|
it { is_expected.to have_many(:users).as_inverse_of(:site).ordered_by(:email.asc).with_counter_cache }
|
263
263
|
end
|
264
|
+
|
265
|
+
RSpec.describe Message do
|
266
|
+
it { is_expected.to belong_to(:user).with_optional }
|
267
|
+
end
|
264
268
|
```
|
265
269
|
|
266
270
|
### Validation Matchers
|
@@ -51,7 +51,7 @@ module Mongoid
|
|
51
51
|
@association[:order] = association_field_name.to_s
|
52
52
|
@expectation_message << " ordered by #{@association[:order].inspect}"
|
53
53
|
|
54
|
-
if association_field_name.is_a?
|
54
|
+
if association_field_name.is_a? association_kind_of
|
55
55
|
@association[:order_operator] = association_field_name.operator
|
56
56
|
@expectation_message << " #{order_way(@association[:order_operator])}"
|
57
57
|
end
|
@@ -119,6 +119,12 @@ module Mongoid
|
|
119
119
|
self
|
120
120
|
end
|
121
121
|
|
122
|
+
def with_optional
|
123
|
+
@association[:optional] = true
|
124
|
+
@expectation_message << " which specifies optional as #{@association[:optional]}"
|
125
|
+
self
|
126
|
+
end
|
127
|
+
|
122
128
|
def matches?(actual)
|
123
129
|
@actual = actual.is_a?(Class) ? actual : actual.class
|
124
130
|
metadata = @actual.relations[@association[:name]]
|
@@ -266,6 +272,15 @@ module Mongoid
|
|
266
272
|
end
|
267
273
|
end
|
268
274
|
|
275
|
+
if @association[:optional]
|
276
|
+
if metadata.options[:optional] != true
|
277
|
+
@negative_result_message = "#{@positive_result_message} which did not set optional"
|
278
|
+
return false
|
279
|
+
else
|
280
|
+
@positive_result_message = "#{@positive_result_message} which set optional"
|
281
|
+
end
|
282
|
+
end
|
283
|
+
|
269
284
|
true
|
270
285
|
end
|
271
286
|
|
@@ -311,6 +326,10 @@ module Mongoid
|
|
311
326
|
def order_way(operator)
|
312
327
|
[nil, 'ascending', 'descending'][operator]
|
313
328
|
end
|
329
|
+
|
330
|
+
def association_kind_of
|
331
|
+
Mongoid::Compatibility::Version.mongoid5_or_older? ? Origin::Key : Mongoid::Criteria::Queryable::Key
|
332
|
+
end
|
314
333
|
end
|
315
334
|
|
316
335
|
def embed_one(association_name)
|
data/lib/mongoid/rspec.rb
CHANGED
@@ -6,7 +6,7 @@ require 'rspec/core'
|
|
6
6
|
require 'rspec/expectations'
|
7
7
|
require 'rspec/mocks'
|
8
8
|
require 'active_support/core_ext/hash/keys'
|
9
|
-
require 'active_support/core_ext/hash/transform_values' if Mongoid::Compatibility::Version.mongoid4_or_newer?
|
9
|
+
require 'active_support/core_ext/hash/transform_values' if Mongoid::Compatibility::Version.mongoid4_or_newer? && ActiveSupport.version < Gem::Version.new('6')
|
10
10
|
require 'active_support/core_ext/object/blank'
|
11
11
|
require 'active_support/core_ext/string/inflections'
|
12
12
|
|
data/spec/models/message.rb
CHANGED
@@ -5,6 +5,12 @@ class Message
|
|
5
5
|
field :from
|
6
6
|
field :to
|
7
7
|
|
8
|
+
if Mongoid::Compatibility::Version.mongoid6_or_newer?
|
9
|
+
belongs_to :user, optional: true
|
10
|
+
else
|
11
|
+
belongs_to :user
|
12
|
+
end
|
13
|
+
|
8
14
|
validates :identifier, uniqueness: { message: 'uniqueness' }
|
9
15
|
validates :from, presence: { message: 'required' }
|
10
16
|
validates :to, format: { with: /[a-z]+/, message: 'format' }
|
data/spec/models/user.rb
CHANGED
@@ -13,6 +13,7 @@ class User
|
|
13
13
|
belongs_to :site, inverse_of: :users
|
14
14
|
has_many :articles, foreign_key: :author_id, order: :title
|
15
15
|
has_many :comments, dependent: :destroy, autosave: true
|
16
|
+
has_many :messages, dependent: :destroy
|
16
17
|
has_and_belongs_to_many :children, class_name: 'User'
|
17
18
|
has_one :record, autobuild: true, inverse_of: :user
|
18
19
|
|
data/spec/spec_helper.rb
CHANGED
@@ -39,10 +39,16 @@ RSpec.describe 'Associations' do
|
|
39
39
|
end
|
40
40
|
|
41
41
|
describe Site do
|
42
|
-
if Mongoid::Compatibility::Version.
|
42
|
+
if Mongoid::Compatibility::Version.mongoid6_or_older?
|
43
43
|
it { is_expected.to have_many(:users).as_inverse_of(:site).ordered_by(:email.desc).with_counter_cache }
|
44
44
|
elsif Mongoid::Compatibility::Version.mongoid7_or_newer?
|
45
45
|
it { is_expected.to have_many(:users).as_inverse_of(:site).ordered_by(:email.desc) }
|
46
46
|
end
|
47
47
|
end
|
48
|
+
|
49
|
+
describe Message do
|
50
|
+
if Mongoid::Compatibility::Version.mongoid6_or_newer?
|
51
|
+
it { is_expected.to belong_to(:user).with_optional }
|
52
|
+
end
|
53
|
+
end
|
48
54
|
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: 4.0
|
4
|
+
version: 4.1.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Evan Sagge
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date:
|
12
|
+
date: 2020-06-12 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: activesupport
|
@@ -40,7 +40,21 @@ dependencies:
|
|
40
40
|
- !ruby/object:Gem::Version
|
41
41
|
version: '3.1'
|
42
42
|
- !ruby/object:Gem::Dependency
|
43
|
-
name:
|
43
|
+
name: mongoid-compatibility
|
44
|
+
requirement: !ruby/object:Gem::Requirement
|
45
|
+
requirements:
|
46
|
+
- - ">="
|
47
|
+
- !ruby/object:Gem::Version
|
48
|
+
version: 0.5.1
|
49
|
+
type: :runtime
|
50
|
+
prerelease: false
|
51
|
+
version_requirements: !ruby/object:Gem::Requirement
|
52
|
+
requirements:
|
53
|
+
- - ">="
|
54
|
+
- !ruby/object:Gem::Version
|
55
|
+
version: 0.5.1
|
56
|
+
- !ruby/object:Gem::Dependency
|
57
|
+
name: rspec-core
|
44
58
|
requirement: !ruby/object:Gem::Requirement
|
45
59
|
requirements:
|
46
60
|
- - "~>"
|
@@ -54,33 +68,61 @@ dependencies:
|
|
54
68
|
- !ruby/object:Gem::Version
|
55
69
|
version: '3.3'
|
56
70
|
- !ruby/object:Gem::Dependency
|
57
|
-
name:
|
71
|
+
name: rspec-expectations
|
58
72
|
requirement: !ruby/object:Gem::Requirement
|
59
73
|
requirements:
|
60
74
|
- - "~>"
|
61
75
|
- !ruby/object:Gem::Version
|
62
|
-
version: '
|
63
|
-
type: :
|
76
|
+
version: '3.3'
|
77
|
+
type: :runtime
|
64
78
|
prerelease: false
|
65
79
|
version_requirements: !ruby/object:Gem::Requirement
|
66
80
|
requirements:
|
67
81
|
- - "~>"
|
68
82
|
- !ruby/object:Gem::Version
|
69
|
-
version: '
|
83
|
+
version: '3.3'
|
70
84
|
- !ruby/object:Gem::Dependency
|
71
|
-
name:
|
85
|
+
name: rspec-mocks
|
72
86
|
requirement: !ruby/object:Gem::Requirement
|
73
87
|
requirements:
|
74
|
-
- - "
|
88
|
+
- - "~>"
|
75
89
|
- !ruby/object:Gem::Version
|
76
|
-
version:
|
90
|
+
version: '3.3'
|
77
91
|
type: :runtime
|
78
92
|
prerelease: false
|
79
93
|
version_requirements: !ruby/object:Gem::Requirement
|
80
94
|
requirements:
|
81
|
-
- - "
|
95
|
+
- - "~>"
|
82
96
|
- !ruby/object:Gem::Version
|
83
|
-
version:
|
97
|
+
version: '3.3'
|
98
|
+
- !ruby/object:Gem::Dependency
|
99
|
+
name: appraisal
|
100
|
+
requirement: !ruby/object:Gem::Requirement
|
101
|
+
requirements:
|
102
|
+
- - "~>"
|
103
|
+
- !ruby/object:Gem::Version
|
104
|
+
version: '2.2'
|
105
|
+
type: :development
|
106
|
+
prerelease: false
|
107
|
+
version_requirements: !ruby/object:Gem::Requirement
|
108
|
+
requirements:
|
109
|
+
- - "~>"
|
110
|
+
- !ruby/object:Gem::Version
|
111
|
+
version: '2.2'
|
112
|
+
- !ruby/object:Gem::Dependency
|
113
|
+
name: rake
|
114
|
+
requirement: !ruby/object:Gem::Requirement
|
115
|
+
requirements:
|
116
|
+
- - "~>"
|
117
|
+
- !ruby/object:Gem::Version
|
118
|
+
version: '10.0'
|
119
|
+
type: :development
|
120
|
+
prerelease: false
|
121
|
+
version_requirements: !ruby/object:Gem::Requirement
|
122
|
+
requirements:
|
123
|
+
- - "~>"
|
124
|
+
- !ruby/object:Gem::Version
|
125
|
+
version: '10.0'
|
84
126
|
description: RSpec matches for Mongoid models, including association and validation
|
85
127
|
matchers.
|
86
128
|
email: evansagge@gmail.com contato@rodrigopinto.me
|
@@ -159,31 +201,30 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
159
201
|
- !ruby/object:Gem::Version
|
160
202
|
version: 1.3.6
|
161
203
|
requirements: []
|
162
|
-
|
163
|
-
rubygems_version: 2.6.13
|
204
|
+
rubygems_version: 3.1.3
|
164
205
|
signing_key:
|
165
206
|
specification_version: 4
|
166
207
|
summary: RSpec matchers for Mongoid
|
167
208
|
test_files:
|
168
|
-
- spec/models/article.rb
|
169
|
-
- spec/models/comment.rb
|
170
|
-
- spec/models/log.rb
|
171
|
-
- spec/models/message.rb
|
172
|
-
- spec/models/movie_article.rb
|
173
|
-
- spec/models/permalink.rb
|
174
|
-
- spec/models/person.rb
|
175
|
-
- spec/models/profile.rb
|
176
|
-
- spec/models/record.rb
|
177
|
-
- spec/models/site.rb
|
178
|
-
- spec/models/user.rb
|
179
209
|
- spec/spec_helper.rb
|
180
|
-
- spec/unit/accept_nested_attributes_spec.rb
|
181
210
|
- spec/unit/associations_spec.rb
|
182
211
|
- spec/unit/be_dynamic_document_spec.rb
|
183
|
-
- spec/unit/
|
212
|
+
- spec/unit/validations_spec.rb
|
184
213
|
- spec/unit/be_stored_in.rb
|
185
|
-
- spec/unit/document_spec.rb
|
186
214
|
- spec/unit/have_index_for_spec.rb
|
215
|
+
- spec/unit/accept_nested_attributes_spec.rb
|
216
|
+
- spec/unit/document_spec.rb
|
217
|
+
- spec/unit/be_mongoid_document_spec.rb
|
187
218
|
- spec/unit/have_timestamps_spec.rb
|
188
|
-
- spec/
|
219
|
+
- spec/models/article.rb
|
220
|
+
- spec/models/movie_article.rb
|
221
|
+
- spec/models/record.rb
|
222
|
+
- spec/models/site.rb
|
223
|
+
- spec/models/message.rb
|
224
|
+
- spec/models/permalink.rb
|
225
|
+
- spec/models/profile.rb
|
226
|
+
- spec/models/comment.rb
|
227
|
+
- spec/models/person.rb
|
228
|
+
- spec/models/log.rb
|
229
|
+
- spec/models/user.rb
|
189
230
|
- spec/validators/ssn_validator.rb
|