Files
031-flash-card/tests/unit/domain/test_level.py
T
Tirsvad f45d6036e4 MIL-008: Choose level
Review record RC-041 (Go, autonomous mode, not independent).

Task: MIL-008#1
Task: MIL-008#2
Task: MIL-008#3
Task: MIL-008#4
Task: MIL-008#5
Task: MIL-008#6
Task: MIL-008#7
Task: MIL-008#8
2026-10-14 23:58:31 +08:00

43 lines
1.1 KiB
Python

"""Tests of the Level value object."""
import dataclasses
import pytest
from flash_card.domain.entities.card import Card
from flash_card.domain.value_objects.level import Level
CARDS = tuple(Card(f"w{i}", f"v{i}") for i in range(1000))
@pytest.mark.parametrize("limit", [0, -1, -100])
def test_level_refuses_limit_not_above_zero(limit: int) -> None:
with pytest.raises(ValueError, match="above zero"):
Level(limit)
def test_level_accepts_no_limit() -> None:
assert Level(None).limit is None
def test_level_is_frozen() -> None:
level = Level(100)
with pytest.raises(dataclasses.FrozenInstanceError):
level.limit = 5 # type: ignore[misc]
def test_first_returns_first_hundred_cards_when_limit_is_100() -> None:
assert Level(100).first(CARDS) == CARDS[:100]
def test_first_returns_all_cards_when_there_is_no_limit() -> None:
assert Level(None).first(CARDS) == CARDS
def test_first_returns_all_cards_when_limit_exceeds_the_list() -> None:
assert Level(5000).first(CARDS) == CARDS
def test_first_returns_empty_when_list_is_empty() -> None:
assert Level(100).first(()) == ()