@@ -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