import pytest

from obsidian_import import obsidian

from .test_obsidian_vault import EXAMPLE_DATE, EXAMPLE_TIMEZONE, EXAMPLES


def test_parse_event_string():
    formatted = '17:44 | Watched [[../../media/anime/Azumanga Daioh]]. Season 1 Episode 6: *Sports Fest*'

    event = obsidian.parse_event_string(formatted, EXAMPLE_DATE, EXAMPLE_TIMEZONE)
    assert event is not None
    assert event.subject == 'Azumanga Daioh'
    assert event.start_time is not None


@pytest.mark.parametrize('event', EXAMPLES)
def test_format_preserves_information(event: obsidian.Event):
    formatted = obsidian.format_event_string(event, EXAMPLE_TIMEZONE)
    assert (
        obsidian.parse_event_string(formatted, EXAMPLE_DATE, EXAMPLE_TIMEZONE) == event
    )