module GdsApi::TestHelpers::LocationsApi

def stub_locations_api_does_not_have_a_bad_postcode(postcode)

def stub_locations_api_does_not_have_a_bad_postcode(postcode)
  stub_request(:get, "#{LOCATIONS_API_ENDPOINT}/v1/locations?postcode=#{postcode}")
   .to_return(body: { "code" => 400, "error" => "Postcode '#{postcode}' is not valid." }.to_json, status: 400)
end

def stub_locations_api_has_location(postcode, locations)

def stub_locations_api_has_location(postcode, locations)
  results = []
  locations.each_with_index do |l, i|
    results << {
      "address" => l["address"] || "Empty Address #{i}",
      "latitude" => l["latitude"] || 0,
      "longitude" => l["longitude"] || 0,
      "local_custodian_code" => l["local_custodian_code"],
    }
  end
  response = {
    "average_latitude" => results.sum { |r| r["latitude"] } / results.size.to_f,
    "average_longitude" => results.sum { |r| r["longitude"] } / results.size.to_f,
    "results" => results,
  }
  stub_request(:get, "#{LOCATIONS_API_ENDPOINT}/v1/locations?postcode=#{postcode}")
    .to_return(body: response.to_json, status: 200)
end

def stub_locations_api_has_no_location(postcode)

def stub_locations_api_has_no_location(postcode)
  stub_request(:get, "#{LOCATIONS_API_ENDPOINT}/v1/locations?postcode=#{postcode}")
    .to_return(body: { "results" => nil }.to_json, status: 200)
end