Skip to content

Commit 6c03385

Browse files
p-mongop
andauthored
MONGOID-5364 failing test (#5414)
Co-authored-by: Oleg Pudeyev <[email protected]>
1 parent 266ee32 commit 6c03385

File tree

2 files changed

+86
-0
lines changed

2 files changed

+86
-0
lines changed

spec/integration/associations/embedded_spec.rb

Lines changed: 74 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -280,4 +280,78 @@
280280
expect(user.orders.sum(:amount)).to eq(500)
281281
end
282282
end
283+
284+
context 'when modifying an embedded document & removing another embedded document' do
285+
let(:user) do
286+
EmmUser.create!(orders: [
287+
EmmOrder.new(sku: 0, amount: 0),
288+
EmmOrder.new(sku: 1, amount: 1),
289+
EmmOrder.new(sku: 2, amount: 2),
290+
])
291+
end
292+
293+
context 'when modifying first and removing second' do
294+
it 'works correctly' do
295+
user.orders[1].assign_attributes(amount: 10)
296+
user.orders[0].destroy
297+
user.save!
298+
user.reload
299+
300+
user.orders.map do
301+
|order| [order.sku, order.amount]
302+
end.should == [[1, 10], [2, 2]]
303+
end
304+
end
305+
306+
context 'when removing first and modifying second' do
307+
it 'works correctly' do
308+
user.orders[0].destroy
309+
user.orders[1].assign_attributes(amount: 20)
310+
user.save!
311+
user.reload
312+
313+
user.orders.map do
314+
|order| [order.sku, order.amount]
315+
end.should == [[1, 1], [2, 20]]
316+
end
317+
end
318+
end
319+
320+
context 'when modifying a nested embedded document & removing another nested embedded document' do
321+
let(:user) do
322+
EmmUser.create!(orders: [
323+
EmmOrder.new(sku: 0, surcharges: [EmmSurcharge.new(amount: 0)]),
324+
EmmOrder.new(sku: 1, surcharges: [EmmSurcharge.new(amount: 1)]),
325+
EmmOrder.new(sku: 2, surcharges: [EmmSurcharge.new(amount: 2)]),
326+
])
327+
end
328+
329+
context 'when modifying first and removing second' do
330+
it 'works correctly' do
331+
pending 'MONGOID-5364'
332+
333+
user.orders[1].assign_attributes(surcharges: [amount: 10])
334+
user.orders[0].destroy
335+
user.save!
336+
user.reload
337+
338+
user.orders.map do
339+
|order| [order.sku, order.surcharges.first.amount]
340+
end.should == [[1, 10], [2, 2]]
341+
end
342+
end
343+
344+
context 'when removing first and modifying second' do
345+
it 'works correctly' do
346+
user.orders[0].destroy
347+
user.orders[1].assign_attributes(surcharges: [amount: 20])
348+
user.save!
349+
user.reload
350+
351+
user.orders.map do
352+
|order| [order.sku, order.surcharges.first.amount]
353+
end.should == [[1, 1], [2, 20]]
354+
end
355+
end
356+
end
283357
end

spec/mongoid/association/embedded/embeds_many_models.rb

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -100,9 +100,21 @@ class EmmUser
100100
class EmmOrder
101101
include Mongoid::Document
102102

103+
field :sku
103104
field :amount, type: Integer
104105

105106
embedded_in :user, class_name: 'EmmUser'
107+
108+
embeds_many :surcharges, class_name: 'EmmSurcharge'
109+
end
110+
111+
class EmmSurcharge
112+
include Mongoid::Document
113+
114+
field :sku
115+
field :amount, type: Integer
116+
117+
embedded_in :order, class_name: 'EmmOrder'
106118
end
107119

108120
module EmmSpec

0 commit comments

Comments
 (0)