Files
nairobi/spec/lib/census_caller_spec.rb
Senén Rodero Rodríguez 93e458d46e Return invalid response when document_type or document_number are empty
Probably this case is not real for production environments where those
arguments will always be fullfilled but seems to be interesting for
testing environment where this method is being called when those
paremeters where empty.
2020-11-02 11:42:39 +01:00

80 lines
3.1 KiB
Ruby

require "rails_helper"
describe CensusCaller do
let(:api) { CensusCaller.new }
describe "#call" do
let(:valid_body) do
{ get_habita_datos_response: {
get_habita_datos_return: { datos_habitante: { item: { fecha_nacimiento_string: "1-1-1980" }}}
}}
end
let(:invalid_body) do
{ get_habita_datos_response: { get_habita_datos_return: { datos_habitante: {}}}}
end
it "returns invalid response when document_number or document_type are empty" do
response = api.call(1, "", nil, nil)
expect(response).not_to be_valid
response = api.call("", "12345678A", nil, nil)
expect(response).not_to be_valid
end
it "returns local census response when census api response is invalid" do
census_api_response = CensusApi::Response.new(invalid_body)
allow_any_instance_of(CensusApi).to receive(:call).and_return(census_api_response)
local_census_response = LocalCensus::Response.new(create(:local_census_record))
allow_any_instance_of(LocalCensus).to receive(:call).and_return(local_census_response)
response = api.call(1, "12345678A", nil, nil)
expect(response).to eq(local_census_response)
end
describe "CensusApi" do
it "returns census api response when it's available and census api response is valid" do
census_api_response = CensusApi::Response.new(valid_body)
allow_any_instance_of(CensusApi).to receive(:call).and_return(census_api_response)
response = api.call(1, "12345678A", nil, nil)
expect(response).to eq(census_api_response)
end
end
describe "RemoteCensusApi", :remote_census do
it "returns remote census api response when it's available and response is valid" do
remote_census_api_response = RemoteCensusApi::Response.new(valid_body)
allow_any_instance_of(RemoteCensusApi).to receive(:call).and_return(remote_census_api_response)
response = api.call(1, "12345678A", Date.parse("01/01/1983"), "28001")
expect(response).to eq(remote_census_api_response)
end
it "returns remote census api response when it's available and valid without send
date_of_birth and postal_code" do
remote_census_api_response = RemoteCensusApi::Response.new(valid_body)
allow_any_instance_of(RemoteCensusApi).to receive(:call).and_return(remote_census_api_response)
response = api.call(1, "12345678A", nil, nil)
expect(response).to eq(remote_census_api_response)
end
it "returns local census record when remote census api it's available but invalid" do
remote_census_api_response = RemoteCensusApi::Response.new(invalid_body)
allow_any_instance_of(RemoteCensusApi).to receive(:call).and_return(remote_census_api_response)
local_census_response = LocalCensus::Response.new(create(:local_census_record))
allow_any_instance_of(LocalCensus).to receive(:call).and_return(local_census_response)
response = api.call(1, "12345678A", nil, nil)
expect(response).to eq(local_census_response)
end
end
end
end