def test_geonames_validate_errors(mocker, test_input): def get_none(*args, **kwargs): return None mocker.patch('nmnh_ms_tools.bots.core.Bot.delete_cached_url', get_none) with pytest.raises(SystemExit): GeoNamesBot().validate(FakeGeoNamesResponse(test_input))
def test_geonames_validate(mocker, test_input, expected): def get_none(*args, **kwargs): return None mocker.patch('nmnh_ms_tools.bots.core.Bot.delete_cached_url', get_none) result = GeoNamesBot().validate(FakeGeoNamesResponse(test_input)) assert result if expected else not result
def test_geonames_get_country(): response = GeoNamesBot().get_country('United States') assert response['countryCode'] == 'US'
def test_geonames_get_state(): response = GeoNamesBot().get_state('Washington', 'US') assert response['adminCode1'] == 'WA'
def test_geonames_ocean_json(): response = GeoNamesBot().ocean_json(20.307, -157.858) assert response['ocean']['name'] == 'North Pacific Ocean'
def test_geonames_country_subdivision_json(): response = GeoNamesBot().country_subdivision_json(46.997, -120.548) assert response['adminCode1'] == 'WA' assert response['countryCode'] == 'US'
def test_geonames_find_nearby(): response = GeoNamesBot().find_nearby_json(46.997, -120.548, dec_places=3) assert 5793639 in {r['geonameId'] for r in response}
def test_geonames_search_json_too_many_names(): with pytest.raises(ValueError): GeoNamesBot().search_json(name='a', name_equals='b', q='c')
def test_geonames_search_json_illegal_param(): with pytest.raises(ValueError): GeoNamesBot().search_json(country_code='US')
def test_geonames_search_json(): kwargs = {'adminCode1': 'WA', 'featureCode': 'PPLA2'} response = GeoNamesBot().search_json('Ellensburg', **kwargs) assert {r['geonameId'] for r in response} == {5793639}
def test_geonames_get_json(): response = GeoNamesBot().get_json(5793639) assert response['geonameId'] == 5793639 assert response['name'] == 'Ellensburg'