test_geo_code_repo.rb

 1# frozen_string_literal: true
 2
 3require "test_helper"
 4require "geo_code_repo"
 5
 6class GeoCodeRepoTest < Minitest::Test
 7	def test_reverse
 8		stub_request(
 9			:get,
10			"https://geocoder.ca/?json=1&latt=40.739362&longt=-73.991043"
11		).to_return(status: 200, body: {
12			"city" => "New York",
13			"prov" => "NY",
14			"latt" => "40.739362",
15			"longt" => "-73.991043",
16			"usa" => { "uscity" => "New York", "state" => "NY", "zip" => "10011" }
17		}.to_json)
18
19		geo = GeoCodeRepo.new(memcache: FakeMemcache.new)
20			.reverse(40.739362, -73.991043).sync
21
22		assert_equal "New York", geo.locality
23		assert_equal "NY", geo.region
24	end
25	em :test_reverse
26
27	def test_reverse_raises_on_missing_coords
28		stub_request(
29			:get,
30			"https://geocoder.ca/?json=1&latt=0.0&longt=0.0"
31		).to_return(status: 200, body: { "error" => "no result" }.to_json)
32
33		assert_raises(RuntimeError) do
34			GeoCodeRepo.new(memcache: FakeMemcache.new)
35				.reverse(0.0, 0.0).sync
36		end
37	end
38	em :test_reverse_raises_on_missing_coords
39end