import datetime

import pytest

from gallery.painting.openweather.api import OpenWeatherApi
from gallery.painting.openweather.openweather import OpenWeather
from tests.data.openweather import OPENWEATHER_MOCK_SOURCE


@pytest.fixture(name="openweather_api", scope="module")
def openweather_api_fixture() -> OpenWeatherApi:
    class MockOpenWeather(OpenWeather):
        def __init__(self):
            super().__init__("")
            self._source = OPENWEATHER_MOCK_SOURCE

    api = OpenWeatherApi()
    api.SOURCE = MockOpenWeather()
    return api


async def test_search(openweather_api: OpenWeatherApi):
    result = await openweather_api.find_locations("test")
    assert len(result) == 5


async def test_day(openweather_api: OpenWeatherApi):
    result = await openweather_api.get_day("52.968498:36.0695", datetime.date(2024, 8, 23))
    assert len(result.values) == 8


async def test_days(openweather_api: OpenWeatherApi):
    result = await openweather_api.get_days("52.968498:36.0695", 10)
    assert len(result.values) == 6
