import datetime
from pathlib import Path
from zoneinfo import ZoneInfo

from obsidian_import import obsidian

EXAMPLE_TIMEZONE = ZoneInfo('Europe/Copenhagen')

EXAMPLE_DATE = datetime.date(2020, 1, 1)

EXAMPLES = [
    obsidian.Event(
        datetime.datetime(2020, 1, 1, 12, 0, 0, tzinfo=EXAMPLE_TIMEZONE),
        datetime.datetime(2020, 1, 1, 12, 0, 0, tzinfo=EXAMPLE_TIMEZONE),
        'Ate',
        'Lunch',
        'instantly',
    ),
    obsidian.Event(
        datetime.datetime(2020, 1, 1, 20, 0, 0, tzinfo=EXAMPLE_TIMEZONE),
        datetime.datetime(2020, 1, 1, 22, 0, 0, tzinfo=EXAMPLE_TIMEZONE),
        'Watched',
        'Tom and Jerry',
        'on the *Television*',
    ),
    obsidian.Event(None, None, None, None, 'Took a walk'),
    obsidian.Event(None, None, None, None, 'Watched [[Cyberpunk: Edgerunners]].'),
]


def test_write_internally():
    vault = obsidian.ObsidianVault(
        Path('test'),
        read_only=True,
        allow_invalid_vault=True,
    )
    vault.daily_folder = Path('daily')
    vault.path_format = 'YYYY-MM-DD'
    vault.template_file_path = Path('daily-template-file.md')

    vault.add_events(EXAMPLE_DATE, EXAMPLES)
    assert len(vault.internal_file_text_cache) == 2

    assert vault.internal_file_text_cache[
        Path('test/daily-template-file.md')
    ].data.startswith(b'---\n')

    expected_path = Path('test/daily/2020-01-01.md')
    assert expected_path in vault.internal_file_text_cache

    assert vault.internal_file_text_cache[expected_path].data.startswith(
        b'---\naliases:\n',
    )