56 lines
1.3 KiB
Python
56 lines
1.3 KiB
Python
"""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 <data class>.load() works."""
|
|
result: Dummy = Dummy.load(dummydict)
|
|
assert result == dummyobj
|
|
|
|
|
|
def test_dump(dummydict: dict[str, typing.Any], dummyobj: Dummy) -> None:
|
|
"""Validate that <data class instance>.dump() works."""
|
|
result = dummyobj.dump()
|
|
assert result == dummydict
|