Skip to content

Commit 1710dde

Browse files
committed
Specs. Refactor a bit specs for upsert/update_fields
1 parent 93f297d commit 1710dde

File tree

1 file changed

+42
-16
lines changed

1 file changed

+42
-16
lines changed

spec/dynamoid/document_spec.rb

Lines changed: 42 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -321,16 +321,29 @@ def city=(value)
321321
expect(result.title).to eq 'New title'
322322
end
323323

324-
it 'checks the conditions on update' do
325-
obj = document_class.create(title: 'Old title', version: 1)
326-
expect do
327-
document_class.update_fields(obj.id, { title: 'New title' }, if: { version: 1 })
328-
end.to change { document_class.find(obj.id).title }.to('New title')
324+
context 'condition specified' do
325+
it 'updates when model matches conditions' do
326+
obj = document_class.create(title: 'Old title', version: 1)
327+
328+
expect {
329+
document_class.update_fields(obj.id, { title: 'New title' }, if: { version: 1 })
330+
}.to change { document_class.find(obj.id).title }.to('New title')
331+
end
332+
333+
it 'does not update when model does not match conditions' do
334+
obj = document_class.create(title: 'Old title', version: 1)
335+
336+
expect {
337+
result = document_class.update_fields(obj.id, { title: 'New title' }, if: { version: 6 })
338+
}.not_to change { document_class.find(obj.id).title }
339+
end
340+
341+
it 'returns nil when model does not match conditions' do
342+
obj = document_class.create(title: 'Old title', version: 1)
329343

330-
obj = document_class.create(title: 'Old title', version: 1)
331-
expect do
332344
result = document_class.update_fields(obj.id, { title: 'New title' }, if: { version: 6 })
333-
end.not_to change { document_class.find(obj.id).title }
345+
expect(result).to eq nil
346+
end
334347
end
335348

336349
it 'does not create new document if it does not exist yet' do
@@ -481,16 +494,29 @@ def city=(value)
481494
expect(result.title).to eq 'New title'
482495
end
483496

484-
it 'checks the conditions on update' do
485-
obj = document_class.create(title: 'Old title', version: 1)
486-
expect do
487-
document_class.upsert(obj.id, { title: 'New title' }, if: { version: 1 })
488-
end.to change { document_class.find(obj.id).title }.to('New title')
497+
context 'conditions specified' do
498+
it 'updates when model matches conditions' do
499+
obj = document_class.create(title: 'Old title', version: 1)
500+
501+
expect {
502+
document_class.upsert(obj.id, { title: 'New title' }, if: { version: 1 })
503+
}.to change { document_class.find(obj.id).title }.to('New title')
504+
end
505+
506+
it 'does not update when model does not match conditions' do
507+
obj = document_class.create(title: 'Old title', version: 1)
508+
509+
expect {
510+
result = document_class.upsert(obj.id, { title: 'New title' }, if: { version: 6 })
511+
}.not_to change { document_class.find(obj.id).title }
512+
end
513+
514+
it 'returns nil when model does not match conditions' do
515+
obj = document_class.create(title: 'Old title', version: 1)
489516

490-
obj = document_class.create(title: 'Old title', version: 1)
491-
expect do
492517
result = document_class.upsert(obj.id, { title: 'New title' }, if: { version: 6 })
493-
end.not_to change { document_class.find(obj.id).title }
518+
expect(result).to eq nil
519+
end
494520
end
495521

496522
it 'creates new document if it does not exist yet' do

0 commit comments

Comments
 (0)