# frozen_string_literal: true

require "test_helper"
require "geo_code_repo"

class GeoCodeRepoTest < Minitest::Test
	def test_reverse
		stub_request(
			:get,
			"https://geocoder.ca/?json=1&latt=40.739362&longt=-73.991043"
		).to_return(status: 200, body: {
			"city" => "New York",
			"prov" => "NY",
			"latt" => "40.739362",
			"longt" => "-73.991043",
			"usa" => { "uscity" => "New York", "state" => "NY", "zip" => "10011" }
		}.to_json)

		geo = GeoCodeRepo.new(memcache: FakeMemcache.new)
			.reverse(40.739362, -73.991043).sync

		assert_equal "New York", geo.locality
		assert_equal "NY", geo.region
	end
	em :test_reverse

	def test_reverse_raises_on_missing_coords
		stub_request(
			:get,
			"https://geocoder.ca/?json=1&latt=0.0&longt=0.0"
		).to_return(status: 200, body: { "error" => "no result" }.to_json)

		assert_raises(RuntimeError) do
			GeoCodeRepo.new(memcache: FakeMemcache.new)
				.reverse(0.0, 0.0).sync
		end
	end
	em :test_reverse_raises_on_missing_coords
end
