from pathlib import Path

from more_itertools import one

import pytest # type: ignore


def test() -> None:
    from my.location.google import locations
    locs = list(locations())
    assert len(locs) == 3810

    last = locs[-1]
    assert last.dt.strftime('%Y%m%d %H:%M:%S') == '20170802 13:01:56' # should be utc
    # todo approx
    assert last.lat == 46.5515350
    assert last.lon == 16.4742742
    # todo check altitude


@pytest.fixture(autouse=True)
def prepare(tmp_path: Path):
    testdata = Path(__file__).absolute().parent.parent / 'testdata'
    assert testdata.exists(), testdata

    track = one(testdata.rglob('italy-slovenia-2017-07-29.json'))

    # todo ugh. unnecessary zipping, but at the moment takeout provider doesn't support plain dirs
    import zipfile
    with zipfile.ZipFile(tmp_path / 'takeout.zip', 'w') as zf:
        zf.writestr('Takeout/Location History/Location History.json', track.read_bytes())

    from my.cfg import config
    class user_config:
        takeout_path = tmp_path
    config.google = user_config # type: ignore
    yield
