"""Tests for the playlist.data.base module.""" import dataclasses import datetime import typing import pytest from playlist.data import base @dataclasses.dataclass class Dummy(base.BaseData): """Dummy class for tests.""" name: str some_id: int calc: float flag: bool modified: datetime.datetime @pytest.fixture def dummyobj() -> Dummy: """Make a dummy object for testing.""" return Dummy( name="Something", some_id=1, calc=0.1, flag=True, modified=datetime.datetime.now(), ) @pytest.fixture def dummydict(dummyobj: Dummy) -> dict[str, object]: """Make a dummy dictionary for testing.""" return { "name": dummyobj.name, "some_id": dummyobj.some_id, "calc": dummyobj.calc, "flag": dummyobj.flag, "modified": "T".join(str(dummyobj.modified).split(" ")), } def test_load(dummydict: dict[str, object], dummyobj: Dummy) -> None: """Validate that .load() works.""" result: Dummy = Dummy.load(dummydict) assert result == dummyobj def test_dump(dummydict: dict[str, typing.Any], dummyobj: Dummy) -> None: """Validate that .dump() works.""" result = dummyobj.dump() assert result == dummydict