Skip to content

Commit

Permalink
Robots sends the storage_location without the storage_trunk, so When …
Browse files Browse the repository at this point in the history
…we were making a POST or PATCH, we were getting validation errors. Need to interpolate the storage_trunk at the end of the storage_location to be able to get the Endpoint object in order for creating and updating
  • Loading branch information
SaravShah committed May 1, 2018
1 parent dfa2174 commit d17f97f
Show file tree
Hide file tree
Showing 2 changed files with 20 additions and 18 deletions.
5 changes: 3 additions & 2 deletions app/controllers/catalog_controller.rb
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,8 @@ def create
druid = poh_params[:druid]
incoming_version = poh_params[:incoming_version].to_i
incoming_size = poh_params[:incoming_size].to_i
endpoint = Endpoint.find_by(storage_location: poh_params[:storage_location])
# p poh_params[:storage_location]
endpoint = Endpoint.find_by(storage_location: "#{poh_params[:storage_location]}/#{Moab::Config.storage_trunk}")
@poh = PreservedObjectHandler.new(druid, incoming_version, incoming_size, endpoint)
poh.create
status_code =
Expand All @@ -33,7 +34,7 @@ def update
druid = poh_params[:druid]
incoming_version = poh_params[:incoming_version].to_i
incoming_size = poh_params[:incoming_size].to_i
endpoint = Endpoint.find_by(storage_location: poh_params[:storage_location])
endpoint = Endpoint.find_by(storage_location: "#{poh_params[:storage_location]}/#{Moab::Config.storage_trunk}")
@poh = PreservedObjectHandler.new(druid, incoming_version, incoming_size, endpoint)
poh.update_version
status_code =
Expand Down
33 changes: 17 additions & 16 deletions spec/controllers/catalog_controller_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -3,15 +3,16 @@
let(:size) { 2342 }
let(:ver) { 3 }
let(:druid) { 'bj102hs9687' }
let(:storage_location) { "spec/fixtures/storage_root01/moab_storage_trunk" }
let(:storage_location) { "#{storage_location_param}/moab_storage_trunk" }
let(:storage_location_param) { "spec/fixtures/storage_root01" }

describe 'POST #create' do
context 'with valid params' do
let(:pres_copy) { PreservedCopy.first }
let(:pres_obj) { PreservedObject.first }
let(:pres_obj) { PreservedObject.find_by(druid: druid) }
let(:pres_copy) { PreservedCopy.find_by(preserved_object: pres_obj) }

before do
post :create, params: { druid: druid, incoming_version: ver, incoming_size: size, storage_location: storage_location }
post :create, params: { druid: druid, incoming_version: ver, incoming_size: size, storage_location: storage_location_param }
end

it 'saves PreservedObject and PreservedCopy in db' do
Expand Down Expand Up @@ -39,7 +40,7 @@

context 'with invalid params' do
before do
post :create, params: { druid: nil, incoming_version: ver, incoming_size: size, storage_location: storage_location }
post :create, params: { druid: nil, incoming_version: ver, incoming_size: size, storage_location: storage_location_param }
end

it 'does not save PreservedObject or PreservedCopy in db' do
Expand All @@ -62,8 +63,8 @@

context 'object already exists' do
before do
post :create, params: { druid: druid, incoming_version: ver, incoming_size: size, storage_location: storage_location }
post :create, params: { druid: druid, incoming_version: ver, incoming_size: size, storage_location: storage_location }
post :create, params: { druid: druid, incoming_version: ver, incoming_size: size, storage_location: storage_location_param }
post :create, params: { druid: druid, incoming_version: ver, incoming_size: size, storage_location: storage_location_param }
end

it 'response contains error message' do
Expand All @@ -80,7 +81,7 @@
before do
allow(PreservedObject).to receive(:create!).with(hash_including(druid: druid))
.and_raise(ActiveRecord::ActiveRecordError, 'foo')
post :create, params: { druid: druid, incoming_version: ver, incoming_size: size, storage_location: storage_location }
post :create, params: { druid: druid, incoming_version: ver, incoming_size: size, storage_location: storage_location_param }
end

it 'response contains error message' do
Expand All @@ -94,7 +95,7 @@
end

it 'response body contains druid' do
post :create, params: { druid: druid, incoming_version: ver, incoming_size: size, storage_location: storage_location }
post :create, params: { druid: druid, incoming_version: ver, incoming_size: size, storage_location: storage_location_param }
expect(response.body).to include(druid)
end
end
Expand All @@ -116,7 +117,7 @@

context 'with valid params' do
before do
patch :update, params: { druid: druid, incoming_version: upd_version, incoming_size: size, storage_location: storage_location }
patch :update, params: { druid: druid, incoming_version: upd_version, incoming_size: size, storage_location: storage_location_param }
end
let(:upd_version) { 4 }

Expand Down Expand Up @@ -146,7 +147,7 @@

context 'object does not exist' do
before do
patch :update, params: { druid: 'rr111rr1111', incoming_version: ver, incoming_size: size, storage_location: storage_location }
patch :update, params: { druid: 'rr111rr1111', incoming_version: ver, incoming_size: size, storage_location: storage_location_param }
end
it 'response contains error message' do
error = "#<ActiveRecord::RecordNotFound: Couldn't find PreservedObject>"
Expand All @@ -163,7 +164,7 @@
before do
pres_copy.version = pres_copy.version + 1
pres_copy.save!
patch :update, params: { druid: druid, incoming_version: ver, incoming_size: size, storage_location: storage_location }
patch :update, params: { druid: druid, incoming_version: ver, incoming_size: size, storage_location: storage_location_param }
end
it 'response contains error message' do
exp_msg = [{ AuditResults::PC_PO_VERSION_MISMATCH => "PreservedCopy online Moab version 4 does not match PreservedObject current_version 3" }]
Expand All @@ -177,7 +178,7 @@

context 'unexpected version' do
before do
patch :update, params: { druid: druid, incoming_version: 1, incoming_size: size, storage_location: storage_location }
patch :update, params: { druid: druid, incoming_version: 1, incoming_size: size, storage_location: storage_location_param }
end

it 'response contains error message' do
Expand All @@ -204,19 +205,19 @@
end

it 'response contains error message' do
patch :update, params: { druid: druid, incoming_version: ver, incoming_size: size, storage_location: storage_location }
patch :update, params: { druid: druid, incoming_version: ver, incoming_size: size, storage_location: storage_location_param }
code = AuditResults::DB_UPDATE_FAILED.to_json
expect(response.body).to include(code)
end

it 'returns an internal server error response code' do
patch :update, params: { druid: druid, incoming_version: ver, incoming_size: size, storage_location: storage_location }
patch :update, params: { druid: druid, incoming_version: ver, incoming_size: size, storage_location: storage_location_param }
expect(response).to have_http_status(:internal_server_error)
end
end

it 'response body contains druid' do
post :update, params: { druid: druid, incoming_version: ver, incoming_size: size, storage_location: storage_location }
post :update, params: { druid: druid, incoming_version: ver, incoming_size: size, storage_location: storage_location_param }
expect(response.body).to include(druid)
end
end
Expand Down

0 comments on commit d17f97f

Please sign in to comment.