|
280 | 280 | expect(user.orders.sum(:amount)).to eq(500)
|
281 | 281 | end
|
282 | 282 | 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 |
283 | 357 | end
|
0 commit comments