Review record RC-025 (Go, autonomous mode, not independent). Task: MIL-003#1 Task: MIL-003#2 Task: MIL-003#3 Task: MIL-003#4 Task: MIL-003#5
54 lines
1.7 KiB
Python
54 lines
1.7 KiB
Python
"""Tests of the flash card view model over a real session and in-memory deck."""
|
|
|
|
from collections.abc import Sequence
|
|
|
|
from flash_card.application.use_cases.study_session import StudySession
|
|
from flash_card.constants import FINISHED_MESSAGE
|
|
from flash_card.domain.entities.card import Card
|
|
from flash_card.domain.entities.deck import Deck
|
|
from flash_card.domain.value_objects.language_pair import LanguagePair
|
|
from flash_card.presentation.features.flash_card.flash_card_view_model import (
|
|
FlashCardViewModel,
|
|
)
|
|
|
|
A = Card("aku", "mig")
|
|
B = Card("kau", "du")
|
|
|
|
|
|
def _first(cards: Sequence[Card]) -> Card:
|
|
return cards[0]
|
|
|
|
|
|
def _session(code: str, *cards: Card) -> StudySession:
|
|
return StudySession(Deck(LanguagePair(code, "da"), cards), _first)
|
|
|
|
|
|
def test_view_model_draws_first_card_on_construction() -> None:
|
|
view_model = FlashCardViewModel(_session("ms", A, B))
|
|
assert view_model.text == "aku"
|
|
assert view_model.language_name == "Malay"
|
|
assert not view_model.is_finished
|
|
|
|
|
|
def test_next_card_shows_next_card() -> None:
|
|
view_model = FlashCardViewModel(_session("ms", A, B))
|
|
view_model.next_card()
|
|
assert view_model.text == "kau"
|
|
|
|
|
|
def test_language_name_shows_unknown_code_in_upper_case() -> None:
|
|
view_model = FlashCardViewModel(_session("xx", A))
|
|
assert view_model.language_name == "XX"
|
|
|
|
|
|
def test_language_name_uses_given_names() -> None:
|
|
view_model = FlashCardViewModel(_session("ms", A), {"ms": "Melayu"})
|
|
assert view_model.language_name == "Melayu"
|
|
|
|
|
|
def test_view_model_shows_finished_message_when_no_card_is_left() -> None:
|
|
view_model = FlashCardViewModel(_session("ms"))
|
|
assert view_model.is_finished
|
|
assert view_model.language_name == ""
|
|
assert view_model.text == FINISHED_MESSAGE
|