weather: handle bad locations better

master
mutantmonkey 2012-06-29 20:52:07 -07:00
parent 52aaa0778a
commit 0ba6438922
2 changed files with 23 additions and 1 deletions

View File

@ -26,10 +26,28 @@ class TestWeather(unittest.TestCase):
self.assertEqual(icao, 'KIAD')
def test_location(self):
def test_airport(self):
input = Mock(
match=Mock(group=lambda x: 'KIAD'),
sender='#phenny', nick='phenny_test')
f_weather(self.phenny, input)
assert self.phenny.msg.called is True
def test_place(self):
input = Mock(
match=Mock(group=lambda x: 'Blacksburg'),
sender='#phenny', nick='phenny_test')
f_weather(self.phenny, input)
assert self.phenny.msg.called is True
def test_notfound(self):
input = Mock(
match=Mock(group=lambda x: 'Hell'),
sender='#phenny', nick='phenny_test')
f_weather(self.phenny, input)
self.phenny.msg.called_once_with('#phenny',
"No NOAA data available for that location.")

View File

@ -83,6 +83,10 @@ def f_weather(self, origin, match, args):
try: bytes = web.get(uri % icao_code)
except AttributeError:
raise GrumbleError('OH CRAP NOAA HAS GONE DOWN THE WEB IS BROKEN')
except urllib.error.HTTPError:
self.msg(origin.sender, "No NOAA data available for that location.")
return
if 'Not Found' in bytes:
self.msg(origin.sender, icao_code+': no such ICAO code, or no NOAA data')
return