archweather / tests/test_core.pymain
▤ tests/test_core.py1532 bytes
import tempfile
import unittest
from pathlib import Path
from unittest.mock import patch
from archweather import core
class CoreTests(unittest.TestCase):
def test_compass(self):
self.assertEqual(core.compass(270), "W")
self.assertEqual(core.compass(45), "NO")
def test_coordinates(self):
self.assertEqual(core.find_places("52.37,4.90")[0]["longitude"],4.90)
def test_search_mock(self):
with patch.object(core,"http_json",return_value={"results":[{"name":"Delft"}]}):
self.assertEqual(core.find_places("Delft")[0]["name"],"Delft")
def test_cache_and_export(self):
with tempfile.TemporaryDirectory() as tmp:
with patch.object(core,"CACHE_DIR",Path(tmp)/"cache"), patch.object(core,"DATA_DIR",Path(tmp)/"data"):
place={"name":"Test","latitude":52,"longitude":4}
data={"current":{"temperature_2m":12,"wind_speed_10m":15}}
core.cache_save(place,data)
self.assertEqual(core.cache_load(place)["data"],data)
core.save_observation(place,data)
self.assertEqual(core.export_history(Path(tmp)/"output.json","json"),1)
self.assertTrue((Path(tmp)/"output.json").exists())
def test_warnings(self):
data={"current":{"temperature_2m":-2,"wind_gusts_10m":80}}
self.assertIn("Vorst",core.warnings(data,core.DEFAULTS))
self.assertIn("Harde windstoten",core.warnings(data,core.DEFAULTS))
if __name__ == "__main__": unittest.main()