spec/rest/orders_spec.rb in finapps-5.0.3 vs spec/rest/orders_spec.rb in finapps-5.0.4

- old
+ new

@@ -6,53 +6,65 @@ include SpecHelpers::Client describe '#show' do context 'when missing params' do subject { FinApps::REST::Orders.new(client).show(nil) } - it { expect { subject }.to raise_error(FinAppsCore::MissingArgumentsError) } + it do + expect { subject }.to raise_error(FinAppsCore::MissingArgumentsError) + end end context 'when valid params are provided' do subject { FinApps::REST::Orders.new(client).show(:valid_id) } it { expect { subject }.not_to raise_error } it('returns an array') { expect(subject).to be_a(Array) } it('performs a get and returns the response') do - expect(subject[RESULTS]).to respond_to(:public_id) - expect(subject[RESULTS]).to respond_to(:consumer_id) + expect(subject[RESULTS]).to have_key(:public_id) + expect(subject[RESULTS]).to have_key(:consumer_id) end - it('returns no error messages') { expect(subject[ERROR_MESSAGES]).to be_empty } + it('returns no error messages') do + expect(subject[ERROR_MESSAGES]).to be_empty + end end end describe '#create' do context 'when missing params' do subject { FinApps::REST::Orders.new(client).create(nil) } - it { expect { subject }.to raise_error(FinAppsCore::MissingArgumentsError) } + it do + expect { subject }.to raise_error(FinAppsCore::MissingArgumentsError) + end end context 'when valid params are provided' do subject { FinApps::REST::Orders.new(client).create(valid_params) } - let(:valid_params) { { applicant: 'valid', institutions: 'valid', product: 'valid' } } + let(:valid_params) do + { applicant: 'valid', institutions: 'valid', product: 'valid' } + end it { expect { subject }.not_to raise_error } it('returns an array') { expect(subject).to be_a(Array) } it('performs a post and returns the response') do - expect(subject[RESULTS]).to respond_to(:public_id) - expect(subject[RESULTS]).to respond_to(:consumer_id) + expect(subject[RESULTS]).to have_key(:public_id) + expect(subject[RESULTS]).to have_key(:consumer_id) end - it('returns no error messages') { expect(subject[ERROR_MESSAGES]).to be_empty } + it('returns no error messages') do + expect(subject[ERROR_MESSAGES]).to be_empty + end end context 'when invalid params are provided' do subject { FinApps::REST::Orders.new(client).create(invalid_params) } let(:invalid_params) { { applicant: 'valid' } } it { expect { subject }.not_to raise_error } it('results is nil') { expect(subject[RESULTS]).to be_nil } it('error messages array is populated') do - expect(subject[ERROR_MESSAGES].first.downcase).to eq('invalid request body') + expect(subject[ERROR_MESSAGES].first.downcase).to eq( + 'invalid request body' + ) end end end describe '#list' do @@ -61,71 +73,97 @@ subject { FinApps::REST::Orders.new(client).list } it { expect { subject }.not_to raise_error } it('returns an array') { expect(subject).to be_a(Array) } - it('performs a get and returns the response') { expect(subject[RESULTS]).to respond_to(:orders) } - it('returns no error messages') { expect(subject[ERROR_MESSAGES]).to be_empty } + it('performs a get and returns the response') do + expect(subject[RESULTS]).to have_key(:orders) + end + it('returns no error messages') do + expect(subject[ERROR_MESSAGES]).to be_empty + end end context 'when invalid params are provided' do subject { FinApps::REST::Orders.new(client).list(invalid_params) } let(:invalid_params) { %w[this is an array] } - it { expect { subject }.to raise_error(FinAppsCore::InvalidArgumentsError) } + it do + expect { subject }.to raise_error(FinAppsCore::InvalidArgumentsError) + end end context 'when including valid params' do subject { FinApps::REST::Orders.new(client).list(params) } let(:params) do - { page: 2, sort: 'status', requested: 25, searchTerm: 'term', status: %w[1 7], - assignment: 'valid_operator', relation: ['valid_order_id'] } + { + page: 2, + sort: 'status', + requested: 25, + searchTerm: 'term', + status: %w[1 7], + assignment: 'valid_operator', + relation: %w[valid_order_id] + } end it { expect { subject }.not_to raise_error } it('returns an array') { expect(subject).to be_a(Array) } - it('performs a get and returns the response') { expect(subject[RESULTS]).to respond_to(:orders) } - it('each order contains a consumer_id') { expect(subject[RESULTS].orders).to all(have_key('consumer_id')) } - it('returns no error messages') { expect(subject[ERROR_MESSAGES]).to be_empty } + it('performs a get and returns the response') do + expect(subject[RESULTS]).to have_key(:orders) + end + it('each order contains a consumer_id') do + expect(subject[RESULTS][:orders]).to all(have_key(:consumer_id)) + end + it('returns no error messages') do + expect(subject[ERROR_MESSAGES]).to be_empty + end it 'builds query and sends proper request' do subject - url = "#{versioned_api_path}/orders?filter=%7B%22$or%22:%5B%7B%22public_id%22:" \ - '%7B%22$regex%22:%22%5Eterm%22,%22$options%22:%22i%22%7D%7D,%7B%22applicant.last_name%22:%22term%22%7D' \ - ',%7B%22assignment.last_name%22:%22term%22%7D,%7B%22requestor.reference_no%22:%7B%22$regex%22:%22%5E' \ - 'term%22,%22$options%22:%22i%22%7D%7D%5D,%22status%22:%7B%22$in%22:%5B1,7%5D%7D,%22assignment.' \ - 'operator_id%22:%22valid_operator%22%7D&page=2&requested=25&sort=status' + url = + "#{versioned_api_path}/orders?filter=%7B%22$or%22:%5B%7B%22public_id%22:" \ + '%7B%22$regex%22:%22%5Eterm%22,%22$options%22:%22i%22%7D%7D,%7B%22applicant.last_name%22:%22term%22%7D' \ + ',%7B%22assignment.last_name%22:%22term%22%7D,%7B%22requestor.reference_no%22:%7B%22$regex%22:%22%5E' \ + 'term%22,%22$options%22:%22i%22%7D%7D%5D,%22status%22:%7B%22$in%22:%5B1,7%5D%7D,%22assignment.' \ + 'operator_id%22:%22valid_operator%22%7D&page=2&requested=25&sort=status' expect(WebMock).to have_requested(:get, url) end it 'builds query and sends proper request with searchTerm/relation exclusivity' do params[:searchTerm] = nil subject - url = "#{versioned_api_path}/orders?filter=%7B%22status%22:%7B%22$in%22:%5B1," \ - '7%5D%7D,%22assignment.operator_id%22:%22valid_operator%22,%22$or%22:%5B%7B%22public_id%22:%7B%22$in' \ - '%22:%5B%22valid_order_id%22%5D%7D%7D,%7B%22original_order_id%22:%7B%22$in%22:%5B%22valid_order_id%22' \ - '%5D%7D%7D%5D%7D&page=2&requested=25&sort=status' + url = + "#{versioned_api_path}/orders?filter=%7B%22status%22:%7B%22$in%22:%5B1," \ + '7%5D%7D,%22assignment.operator_id%22:%22valid_operator%22,%22$or%22:%5B%7B%22public_id%22:%7B%22$in' \ + '%22:%5B%22valid_order_id%22%5D%7D%7D,%7B%22original_order_id%22:%7B%22$in%22:%5B%22valid_order_id%22' \ + '%5D%7D%7D%5D%7D&page=2&requested=25&sort=status' expect(WebMock).to have_requested(:get, url) end it 'builds null assignment query properly when supplied w/ empty string' do FinApps::REST::Orders.new(client).list(assignment: '') - url = "#{versioned_api_path}/orders?filter=%7B%22assignment.operator_id%22:null%7D" + url = + "#{versioned_api_path}/orders?filter=%7B%22assignment.operator_id%22:null%7D" expect(WebMock).to have_requested(:get, url) end end end describe '#update' do subject(:orders) { FinApps::REST::Orders.new(client) } context 'when missing id' do let(:update) { subject.update(nil, :params) } - it('returns missing argument error') { expect { update }.to raise_error(FinAppsCore::MissingArgumentsError) } + it('returns missing argument error') do + expect { update }.to raise_error(FinAppsCore::MissingArgumentsError) + end end context 'when missing params' do let(:update) { subject.update(:id, nil) } - it('returns missing argument error') { expect { update }.to raise_error(FinAppsCore::MissingArgumentsError) } + it('returns missing argument error') do + expect { update }.to raise_error(FinAppsCore::MissingArgumentsError) + end end context 'when valid id and params are provided' do let(:update) { subject.update('valid_id', accounts: 'valid_account') } # how to stub params let(:results) { update[RESULTS] } @@ -141,39 +179,47 @@ let(:results) { update[RESULTS] } let(:error_messages) { update[ERROR_MESSAGES] } it { expect { update }.not_to raise_error } it('results is nil') { expect(results).to be_nil } - it('error messages array is populated') { expect(error_messages.first.downcase).to eq('resource not found') } + it('error messages array is populated') do + expect(error_messages.first.downcase).to eq('resource not found') + end end context 'when invalid params are provided' do let(:update) { subject.update('valid_id', accounts: 'invalid_account') } let(:results) { update[RESULTS] } let(:error_messages) { update[ERROR_MESSAGES] } it { expect { update }.not_to raise_error } it('results is nil') { expect(results).to be_nil } - it('error messages array is populated') { expect(error_messages.first.downcase).to eq('invalid request body') } + it('error messages array is populated') do + expect(error_messages.first.downcase).to eq('invalid request body') + end end end describe '#destroy' do subject(:orders) { FinApps::REST::Orders.new(client) } context 'when missing id' do let(:destroy) { subject.destroy(nil) } - it('returns missing argument error') { expect { destroy }.to raise_error(FinAppsCore::MissingArgumentsError) } + it('returns missing argument error') do + expect { destroy }.to raise_error(FinAppsCore::MissingArgumentsError) + end end context 'when invalid id is provided' do let(:destroy) { subject.destroy(:invalid_id) } let(:results) { destroy[RESULTS] } let(:error_messages) { destroy[ERROR_MESSAGES] } it { expect { destroy }.not_to raise_error } it('results is nil') { expect(results).to be_nil } - it('error messages array is populated') { expect(error_messages.first.downcase).to eq('resource not found') } + it('error messages array is populated') do + expect(error_messages.first.downcase).to eq('resource not found') + end end context 'for valid id' do let(:destroy) { subject.destroy(:valid_id) } let(:results) { destroy[RESULTS] }