mirror of
https://github.com/jdejaegh/irm-kmi-api.git
synced 2025-06-27 04:05:56 +02:00
80 lines
4.2 KiB
Python
80 lines
4.2 KiB
Python
import logging
|
|
from unittest.mock import AsyncMock
|
|
|
|
from irm_kmi_api.data import IrmKmiPollenNames, IrmKmiPollenLevels
|
|
from irm_kmi_api.pollen import PollenParser
|
|
from tests.conftest import get_api_with_data, load_fixture
|
|
|
|
|
|
def test_svg_pollen_parsing():
|
|
with open("tests/fixtures/pollen.svg", "r") as file:
|
|
svg_data = file.read()
|
|
data = PollenParser(svg_data).get_pollen_data()
|
|
assert data == {IrmKmiPollenNames.BIRCH: IrmKmiPollenLevels.NONE,
|
|
IrmKmiPollenNames.OAK: IrmKmiPollenLevels.NONE,
|
|
IrmKmiPollenNames.HAZEL: IrmKmiPollenLevels.NONE,
|
|
IrmKmiPollenNames.MUGWORT: IrmKmiPollenLevels.NONE,
|
|
IrmKmiPollenNames.ALDER: IrmKmiPollenLevels.NONE,
|
|
IrmKmiPollenNames.GRASSES: IrmKmiPollenLevels.PURPLE,
|
|
IrmKmiPollenNames.ASH: IrmKmiPollenLevels.NONE}
|
|
|
|
def test_svg_two_pollen_parsing():
|
|
with open("tests/fixtures/new_two_pollens.svg", "r") as file:
|
|
svg_data = file.read()
|
|
data = PollenParser(svg_data).get_pollen_data()
|
|
assert data == {IrmKmiPollenNames.BIRCH: IrmKmiPollenLevels.NONE,
|
|
IrmKmiPollenNames.OAK: IrmKmiPollenLevels.NONE,
|
|
IrmKmiPollenNames.HAZEL: IrmKmiPollenLevels.NONE,
|
|
IrmKmiPollenNames.MUGWORT: IrmKmiPollenLevels.ACTIVE,
|
|
IrmKmiPollenNames.ALDER: IrmKmiPollenLevels.NONE,
|
|
IrmKmiPollenNames.GRASSES: IrmKmiPollenLevels.RED,
|
|
IrmKmiPollenNames.ASH: IrmKmiPollenLevels.NONE}
|
|
|
|
def test_svg_two_pollen_parsing_2025_update():
|
|
with open("tests/fixtures/pollens-2025.svg", "r") as file:
|
|
svg_data = file.read()
|
|
data = PollenParser(svg_data).get_pollen_data()
|
|
assert data == {IrmKmiPollenNames.BIRCH: IrmKmiPollenLevels.NONE,
|
|
IrmKmiPollenNames.OAK: IrmKmiPollenLevels.NONE,
|
|
IrmKmiPollenNames.HAZEL: IrmKmiPollenLevels.ACTIVE,
|
|
IrmKmiPollenNames.MUGWORT: IrmKmiPollenLevels.NONE,
|
|
IrmKmiPollenNames.ALDER: IrmKmiPollenLevels.GREEN,
|
|
IrmKmiPollenNames.GRASSES: IrmKmiPollenLevels.NONE,
|
|
IrmKmiPollenNames.ASH: IrmKmiPollenLevels.NONE}
|
|
|
|
def test_pollen_options():
|
|
assert set(PollenParser.get_option_values()) == {IrmKmiPollenLevels.GREEN,
|
|
IrmKmiPollenLevels.YELLOW,
|
|
IrmKmiPollenLevels.ORANGE,
|
|
IrmKmiPollenLevels.RED,
|
|
IrmKmiPollenLevels.PURPLE,
|
|
IrmKmiPollenLevels.ACTIVE,
|
|
IrmKmiPollenLevels.NONE}
|
|
|
|
|
|
def test_pollen_default_values():
|
|
assert PollenParser.get_default_data() == {IrmKmiPollenNames.BIRCH: IrmKmiPollenLevels.NONE,
|
|
IrmKmiPollenNames.OAK: IrmKmiPollenLevels.NONE,
|
|
IrmKmiPollenNames.HAZEL: IrmKmiPollenLevels.NONE,
|
|
IrmKmiPollenNames.MUGWORT: IrmKmiPollenLevels.NONE,
|
|
IrmKmiPollenNames.ALDER: IrmKmiPollenLevels.NONE,
|
|
IrmKmiPollenNames.GRASSES: IrmKmiPollenLevels.NONE,
|
|
IrmKmiPollenNames.ASH: IrmKmiPollenLevels.NONE}
|
|
|
|
|
|
async def test_pollen_data_from_api() -> None:
|
|
api = get_api_with_data("be_forecast_warning.json")
|
|
|
|
# Mock get_svg function
|
|
api.get_svg = AsyncMock(return_value=load_fixture("pollen.svg"))
|
|
|
|
result = await api.get_pollen()
|
|
expected = {IrmKmiPollenNames.MUGWORT: IrmKmiPollenLevels.NONE,
|
|
IrmKmiPollenNames.BIRCH: IrmKmiPollenLevels.NONE,
|
|
IrmKmiPollenNames.ALDER: IrmKmiPollenLevels.NONE,
|
|
IrmKmiPollenNames.ASH: IrmKmiPollenLevels.NONE,
|
|
IrmKmiPollenNames.OAK: IrmKmiPollenLevels.NONE,
|
|
IrmKmiPollenNames.GRASSES: IrmKmiPollenLevels.PURPLE,
|
|
IrmKmiPollenNames.HAZEL: IrmKmiPollenLevels.NONE}
|
|
assert result == expected
|
|
|