from itertools import product
from datetime import datetime
from pathlib import Path

import pytest

from toargridding.grids import RegularGrid
from toargridding.metadata import TimeSample, Metadata, TOARVariable
from toargridding.toar_rest_client import AnalysisService

test_data = list((Path(__file__).parent / "data").iterdir())

TEST_SAMPLINGS = ["daily"]
TEST_STATS = ["mean"]


@pytest.fixture
def regular_grid():
    return RegularGrid(10, 10)


# TODO investigate -1 day discrepancy in time index
@pytest.fixture(params=TEST_SAMPLINGS)
def time(request):
    start = datetime(2009, 12, 31)
    end = datetime(2011, 1, 1)
    sampling = request.param

    return TimeSample(start, end, sampling)


@pytest.fixture
def toar_variable_ozon():
    return TOARVariable(
        "o3",
        "ozone",
        "Ozone",
        "mole_fraction_of_ozone_in_air",
        "nmol mol-1",
        "O3",
        5,
    )


@pytest.fixture
def metadata_ozone_mean(toar_variable_ozon, time):
    return Metadata(toar_variable_ozon, time, "mean")


def load_local_data(*args, **kwargs):
    with open(test_data[2], "r+b") as f:
        return f.read()


@pytest.fixture
def local_analysis_service(monkeypatch):
    service = AnalysisService("foo")
    monkeypatch.setattr(service, "query_timeseries_and_metadata", load_local_data)
    return service