diff --git a/lib/alma/request.rb b/lib/alma/request.rb index 408ac1e..ffa1765 100644 --- a/lib/alma/request.rb +++ b/lib/alma/request.rb @@ -157,6 +157,8 @@ def initialize(args) end def additional_validation!(args) + return unless args.fetch(:request_type) == "DIGITIZATION" + args.fetch(:description) do raise ArgumentError.new( ":description option must be specified when request_type is DIGITIZATION" diff --git a/spec/lib/request_spec.rb b/spec/lib/request_spec.rb index 45bbc26..a4ef30f 100644 --- a/spec/lib/request_spec.rb +++ b/spec/lib/request_spec.rb @@ -179,11 +179,21 @@ expect { described_class.submit({ mms_id: "foo" }) }.to raise_error(ArgumentError, /:user_id option/) end - it "raises an Error when description is not an included option" do + it "raises an Error when holding_type is DIGITIZATION and description is not an included option" do options = { mms_id: "foo", holding_id: "hold", item_pid: "pid", user_id: "user", request_type: "DIGITIZATION", target_destination: "DIGI_DEPT_INST", partial_digitization: false } expect { described_class.submit(options) }.to raise_error(ArgumentError, /:description option/) end + it "raises an Error when holding_type is HOLD and pickup_location_type is not an included option" do + options = { mms_id: "foo", holding_id: "hold", item_pid: "pid", user_id: "user", request_type: "HOLD" } + expect { described_class.submit(options) }.to raise_error(ArgumentError, /:pickup_location_type option/) + end + + it "raises an Error when holding_type is HOLD and pickup_location_type is not an included option" do + options = { mms_id: "foo", holding_id: "hold", item_pid: "pid", user_id: "user", request_type: "HOLD", pickup_location_type: "LIBRARY" } + expect { described_class.submit(options) }.to raise_error(ArgumentError, /:pickup_location_library option/) + end + it "raises an Error when request_type is not an included option" do expect { described_class.submit({ mms_id: "foo", user_id: "user" }) }.to raise_error(ArgumentError, /:request_type option/) end