Skip to content

Commit

Permalink
pohandler specs: refactor to use factories
Browse files Browse the repository at this point in the history
  • Loading branch information
ndushay committed Jun 27, 2018
1 parent b185f7f commit 5bfe377
Show file tree
Hide file tree
Showing 4 changed files with 42 additions and 117 deletions.
16 changes: 6 additions & 10 deletions spec/services/preserved_object_handler_check_exist_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -400,19 +400,15 @@
end

it 'calls PreservedCopy.save! (but not PreservedObject.save!) if the existing record is NOT altered' do
po_handler = described_class.new(druid, 1, 1, ep)
po = instance_double(PreservedObject)
pc = instance_double(PreservedCopy)
druid = 'zy987xw6543'
po = create :preserved_object, druid: druid
allow(PreservedObject).to receive(:find_by!).with(druid: druid).and_return(po)
allow(po).to receive(:current_version).and_return(1)
allow(po).to receive(:save!)
pc = create :preserved_copy, preserved_object: po
allow(PreservedCopy).to receive(:find_by!).with(preserved_object: po, endpoint: ep).and_return(pc)
allow(pc).to receive(:matches_po_current_version?).and_return(true)
allow(pc).to receive(:status).and_return(PreservedCopy::OK_STATUS)
allow(pc).to receive(:version).and_return(1)
allow(pc).to receive(:update_audit_timestamps)
allow(pc).to receive(:changed?).and_return(false)

allow(po).to receive(:save!)
allow(pc).to receive(:save!)
po_handler = described_class.new(druid, 1, 1, ep)
po_handler.check_existence
expect(po).not_to have_received(:save!)
expect(pc).to have_received(:save!)
Expand Down
43 changes: 12 additions & 31 deletions spec/services/preserved_object_handler_confirm_version_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -225,20 +225,13 @@
let(:result_code) { AuditResults::DB_UPDATE_FAILED }
let(:incoming_version) { 2 }
let(:results) do

po = instance_double("PreservedObject")
po = create :preserved_object, current_version: 2
allow(PreservedObject).to receive(:find_by).with(druid: druid).and_return(po)
pc = instance_double("PreservedCopy")
pc = create :preserved_copy, preserved_object: po, version: 2
allow(PreservedCopy).to receive(:find_by).and_return(pc)
allow(pc).to receive(:version).and_return(2)
allow(pc).to receive(:status)
allow(pc).to receive(:update_status)
allow(pc).to receive(:update_audit_timestamps)
allow(pc).to receive(:changed?).and_return(true)
allow(pc).to receive(:save!).and_raise(ActiveRecord::ActiveRecordError, 'foo')
allow(pc).to receive(:matches_po_current_version?).and_return(true)
allow(po).to receive(:current_version).and_return(2)
allow(po_handler).to receive(:moab_validation_errors).and_return([])

allow(pc).to receive(:save!).and_raise(ActiveRecord::ActiveRecordError, 'foo')
po_handler.confirm_version
end

Expand All @@ -249,39 +242,27 @@
end

it 'calls PreservedCopy.save! (but not PreservedObject.save!) if the existing record is altered' do
po = instance_double(PreservedObject)
pc = instance_double(PreservedCopy)
status = PreservedCopy::UNEXPECTED_VERSION_ON_STORAGE_STATUS
po = create :preserved_object
allow(PreservedObject).to receive(:find_by).with(druid: druid).and_return(po)
allow(po).to receive(:current_version).and_return(1)
allow(po).to receive(:save!)
pc = create :preserved_copy, preserved_object: po
allow(PreservedCopy).to receive(:find_by).with(preserved_object: po, endpoint: ep).and_return(pc)
allow(pc).to receive(:version).and_return(1)
allow(pc).to receive(:update_status).with(status)
allow(pc).to receive(:update_audit_timestamps)
allow(pc).to receive(:changed?).and_return(true)
allow(pc).to receive(:save!)
allow(pc).to receive(:matches_po_current_version?).and_return(true)
allow(pc).to receive(:status).and_return(PreservedCopy::OK_STATUS)
allow(po_handler).to receive(:moab_validation_errors).and_return([])

allow(po).to receive(:save!)
allow(pc).to receive(:save!)
po_handler.confirm_version
expect(po).not_to have_received(:save!)
expect(pc).to have_received(:save!)
end
it 'calls PreservedCopy.save! (but not PreservedObject.save!) if the existing record is NOT altered' do
po_handler = described_class.new(druid, 1, 1, ep)
po = instance_double(PreservedObject)
pc = instance_double(PreservedCopy)
po = create :preserved_object
allow(PreservedObject).to receive(:find_by).with(druid: druid).and_return(po)
allow(po).to receive(:current_version).and_return(1)
pc = create :preserved_copy, preserved_object: po
allow(PreservedCopy).to receive(:find_by).with(preserved_object: po, endpoint: ep).and_return(pc)
allow(pc).to receive(:status).and_return(PreservedCopy::OK_STATUS)
allow(pc).to receive(:version).and_return(1)
allow(pc).to receive(:update_audit_timestamps)
allow(pc).to receive(:changed?).and_return(false)

allow(po).to receive(:save!)
allow(pc).to receive(:save!)
allow(pc).to receive(:matches_po_current_version?).and_return(true)
po_handler.confirm_version
expect(pc).to have_received(:save!)
expect(po).not_to have_received(:save!)
Expand Down
94 changes: 23 additions & 71 deletions spec/services/preserved_object_handler_update_version_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -123,19 +123,12 @@
context 'ActiveRecordError' do
let(:results) do
allow(Rails.logger).to receive(:log)
po = instance_double('PreservedObject')
allow(po).to receive(:current_version).and_return(1)
po = instance_double('PreservedObject', current_version: 1)
allow(PreservedObject).to receive(:find_by!).with(druid: druid).and_return(po)
pc = instance_double('PreservedCopy')
pc = create :preserved_copy
allow(PreservedCopy).to receive(:find_by!).with(preserved_object: po, endpoint: ep).and_return(pc)
allow(pc).to receive(:version).and_return(1)
allow(pc).to receive(:upd_audstamps_version_size)
allow(pc).to receive(:status).and_return(PreservedCopy::OK_STATUS)
allow(pc).to receive(:status=)
allow(pc).to receive(:update_audit_timestamps)
allow(pc).to receive(:changed?).and_return(true)

allow(pc).to receive(:save!).and_raise(ActiveRecord::ActiveRecordError, 'foo')
allow(pc).to receive(:matches_po_current_version?).and_return(true)
po_handler.update_version
end

Expand All @@ -156,22 +149,12 @@
context 'ActiveRecordError' do
let(:results) do
allow(Rails.logger).to receive(:log)
po = instance_double('PreservedObject')
allow(po).to receive(:current_version).and_return(5)
allow(po).to receive(:current_version=).with(incoming_version)
allow(po).to receive(:changed?).and_return(true)
allow(po).to receive(:save!).and_raise(ActiveRecord::ActiveRecordError, 'foo')
po = create :preserved_object, current_version: 5
allow(PreservedObject).to receive(:find_by).with(druid: druid).and_return(po)
pc = instance_double('PreservedCopy')
pc = create :preserved_copy
allow(PreservedCopy).to receive(:find_by).with(preserved_object: po, endpoint: ep).and_return(pc)
allow(pc).to receive(:version).and_return(5)
allow(pc).to receive(:upd_audstamps_version_size).with(boolean, incoming_version, incoming_size)
allow(pc).to receive(:status).and_return(PreservedCopy::OK_STATUS)
allow(pc).to receive(:status=)
allow(pc).to receive(:update_audit_timestamps)
allow(pc).to receive(:changed?).and_return(true)
allow(pc).to receive(:save!)
allow(pc).to receive(:matches_po_current_version?).and_return(true)

allow(po).to receive(:save!).and_raise(ActiveRecord::ActiveRecordError, 'foo')
po_handler.update_version
end

Expand All @@ -191,43 +174,26 @@
end

it 'calls PreservedObject.save! and PreservedCopy.save! if the records are altered' do
po = instance_double(PreservedObject)
po = create :preserved_object
allow(PreservedObject).to receive(:find_by).with(druid: druid).and_return(po)
allow(po).to receive(:current_version).and_return(1)
allow(po).to receive(:current_version=).with(incoming_version)
allow(po).to receive(:changed?).and_return(true)
allow(po).to receive(:save!)
pc = instance_double(PreservedCopy)
pc = create :preserved_copy
allow(PreservedCopy).to receive(:find_by).with(preserved_object: po, endpoint: ep).and_return(pc)
allow(pc).to receive(:version).and_return(1)
allow(pc).to receive(:upd_audstamps_version_size).with(boolean, incoming_version, incoming_size)
allow(pc).to receive(:endpoint).with(ep)
allow(pc).to receive(:status).and_return(PreservedCopy::OK_STATUS)
allow(pc).to receive(:status=)
allow(pc).to receive(:update_audit_timestamps)
allow(pc).to receive(:changed?).and_return(true)

allow(po).to receive(:save!)
allow(pc).to receive(:save!)
allow(pc).to receive(:matches_po_current_version?).and_return(true)
po_handler.update_version
expect(po).to have_received(:save!)
expect(pc).to have_received(:save!)
end

it 'does not call PreservedObject.save when PreservedCopy only has timestamp updates' do
po = instance_double(PreservedObject)
po = create :preserved_object
allow(PreservedObject).to receive(:find_by).with(druid: druid).and_return(po)
allow(po).to receive(:current_version).and_return(1)
allow(po).to receive(:touch)
allow(po).to receive(:save!)
pc = instance_double(PreservedCopy)
pc = create :preserved_copy
allow(PreservedCopy).to receive(:find_by).with(preserved_object: po, endpoint: ep).and_return(pc)
allow(pc).to receive(:version).and_return(1)
allow(pc).to receive(:endpoint).with(ep)
allow(pc).to receive(:update_audit_timestamps)
allow(pc).to receive(:update_status)
allow(pc).to receive(:changed?).and_return(true)

allow(po).to receive(:save!)
allow(pc).to receive(:save!)
allow(pc).to receive(:matches_po_current_version?).and_return(true)
po_handler = described_class.new(druid, 1, 1, ep)
po_handler.update_version
expect(po).not_to have_received(:save!)
Expand Down Expand Up @@ -422,21 +388,14 @@
end

it 'does not call PreservedObject.save! when PreservedCopy only has timestamp updates' do
po = instance_double(PreservedObject)
po = create :preserved_object
allow(PreservedObject).to receive(:find_by).with(druid: druid).and_return(po)
allow(po).to receive(:save!)
pc = instance_double(PreservedCopy)
pc = create :preserved_copy
allow(PreservedCopy).to receive(:find_by).with(preserved_object: po, endpoint: ep).and_return(pc)
allow(pc).to receive(:version).and_return(1)
allow(pc).to receive(:version=).with(incoming_version)
allow(pc).to receive(:size=).with(incoming_size)
allow(pc).to receive(:endpoint).with(ep)
allow(pc).to receive(:status).and_return(PreservedCopy::OK_STATUS)
allow(pc).to receive(:update_status)
allow(pc).to receive(:update_audit_timestamps)
allow(pc).to receive(:changed?).and_return(true)
allow(pc).to receive(:save!)
allow(po_handler).to receive(:moab_validation_errors).and_return(['foo'])

allow(po).to receive(:save!)
allow(pc).to receive(:save!)
po_handler.update_version_after_validation
expect(po).not_to have_received(:save!)
expect(pc).to have_received(:save!)
Expand Down Expand Up @@ -474,19 +433,12 @@
context 'ActiveRecordError' do
let(:results) do
allow(Rails.logger).to receive(:log)
po = instance_double('PreservedObject')
allow(po).to receive(:current_version).and_return(1)
po = instance_double(PreservedObject, current_version: 1)
allow(PreservedObject).to receive(:find_by!).with(druid: druid).and_return(po)
pc = instance_double('PreservedCopy')
pc = create :preserved_copy
allow(PreservedCopy).to receive(:find_by!).with(preserved_object: po, endpoint: ep).and_return(pc)
allow(pc).to receive(:version).and_return(1)
allow(pc).to receive(:version=)
allow(pc).to receive(:status).and_return(PreservedCopy::OK_STATUS)
allow(pc).to receive(:update_status)
allow(pc).to receive(:update_audit_timestamps)
allow(pc).to receive(:changed?).and_return(true)

allow(pc).to receive(:save!).and_raise(ActiveRecord::ActiveRecordError, 'foo')
allow(pc).to receive(:size=)
po_handler.update_version_after_validation
end

Expand Down
6 changes: 1 addition & 5 deletions spec/services/shared_examples_preserved_object_handler.rb
Original file line number Diff line number Diff line change
Expand Up @@ -75,11 +75,7 @@
let(:exp_msg) { "#<ActiveRecord::RecordNotFound: foo> db object does not exist" }
let(:results) do
allow(Rails.logger).to receive(:log)
po = instance_double(PreservedObject)
allow(po).to receive(:current_version).and_return(2)
allow(po).to receive(:current_version=)
allow(po).to receive(:changed?).and_return(true)
allow(po).to receive(:save!)
po = create :preserved_object, current_version: 2
allow(PreservedObject).to receive(:find_by!).and_return(po)
allow(PreservedCopy).to receive(:find_by!).and_raise(ActiveRecord::RecordNotFound, 'foo')
po_handler.send(method_sym)
Expand Down

0 comments on commit 5bfe377

Please sign in to comment.