Adds tests for weer
continuous-integration/drone/push Build is passing

This commit is contained in:
2022-12-05 14:52:16 +01:00
parent 1361d9c083
commit 088d86f4dd
+52
View File
@@ -62,3 +62,55 @@ class TestShitpost(unittest.TestCase):
self.cog.zwarte_lijst = ["___"] self.cog.zwarte_lijst = ["___"]
kaart = self.cog.get_ktdm(wit) kaart = self.cog.get_ktdm(wit)
self.assertEqual(kaart, None) self.assertEqual(kaart, None)
def test_weer(self):
data = requests.get("http://weerlive.nl/api/json-data-10min.php")
if not data:
self.skipTest(f"Weerlive has an error, or is unavailable")
weerJson = self.cog.get_weer_json()
with self.subTest("Weer does not correctly convert from json"):
self.assertIsInstance(weerJson, dict)
icon = self.cog.getWeatherIconTranslation(weerJson["d2weer"])
with self.subTest("Weericon not available"):
self.assertNotEqual(icon, ":park:")
with self.subTest("Weericon incorrect"):
self.assertRegex(icon, ":[A-z]+:")
with self.subTest("No weericon for unknown weather"):
icon = self.cog.getWeatherIconTranslation("sniezelig") # Bestaat niet natuurlijk
self.assertRegex(icon, ":[A-z]+:")
bbq = self.cog.getBbqGrade(weerJson)
with self.subTest("BBQ cijfer incorrect"):
self.assertIsInstance(bbq, float)
self.assertGreaterEqual(bbq, 1.0)
self.assertLessEqual(bbq, 10.0)
with self.subTest("False positive alarm"):
weerMock = { "alarm": 0}
alertCode, alertMessage = self.cog.getWeerAlarm(weerMock)
self.assertEqual(alertCode, None)
self.assertEqual(alertMessage, "")
with self.subTest("False negative rood alarm"):
weerMock = { "alarm": "1", "alarmtxt": "qwerty code rood yuiop"}
alertCode, alertMessage = self.cog.getWeerAlarm(weerMock)
self.assertEqual(alertCode, "rood")
self.assertIsInstance(alertMessage, str)
with self.subTest("False negative oranje alarm"):
weerMock = { "alarm": "1", "alarmtxt": "qwerty code oranje yuiop"}
alertCode, alertMessage = self.cog.getWeerAlarm(weerMock)
self.assertEqual(alertCode, "oranje")
self.assertIsInstance(alertMessage, str)
with self.subTest("False negative geel alarm"):
weerMock = { "alarm": "1", "alarmtxt": "lorem ipsum dolor sit amet"}
alertCode, alertMessage = self.cog.getWeerAlarm(weerMock)
self.assertEqual(alertCode, "geel")
self.assertIsInstance(alertMessage, str)
wb = self.cog.get_weerbericht(weerJson)
wb_v = self.cog.get_weerbericht(weerJson, "verbose pls")
with self.subTest("Can't render message from json"):
self.assertIsInstance(wb, str)
self.assertIsInstance(wb_v, str)
with self.subTest("Verbose isn't actually verbose"):
self.assertTrue(len(wb_v) > len(wb))