From 088d86f4dd724ea30ced7a52013bc0dd3a6fd42b Mon Sep 17 00:00:00 2001 From: Mark Hoekveen Date: Mon, 5 Dec 2022 14:52:16 +0100 Subject: [PATCH] Adds tests for weer --- tests/shitpost.py | 54 ++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 53 insertions(+), 1 deletion(-) diff --git a/tests/shitpost.py b/tests/shitpost.py index 37d7af3..5d734fd 100644 --- a/tests/shitpost.py +++ b/tests/shitpost.py @@ -61,4 +61,56 @@ class TestShitpost(unittest.TestCase): wit = ["a", "b", "c"] self.cog.zwarte_lijst = ["___"] kaart = self.cog.get_ktdm(wit) - self.assertEqual(kaart, None) \ No newline at end of file + 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))