summaryrefslogtreecommitdiffstats
path: root/tests/session_integrationtest.py
blob: 267e3749522f2116365988c07c8bc5b6fecfc788 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
import pytest
import json

from flashcards import Session

@pytest.fixture
def cardFiles(tmp_path):
    card_files = [
        tmp_path / "test1.fcard",
        tmp_path / "test2.fcard",
    ]

    for i, c in enumerate(card_files):
        with open(c, "w") as f:
            for j in range(0, 3):
                f.write(f"FRONT\nFile {i}, card {j} front\nBACK\nback\n")

    return card_files

@pytest.fixture
def stateFile(tmp_path):
    return tmp_path / "state.json"

def test_practiceSession(cardFiles, stateFile):
    session = Session("brutal", cardFiles, stateFile)

    c = 0
    for card in session.practice(5):
        c += 1

    assert c == 5

def test_testSession(cardFiles, stateFile):
    session = Session("brutal", cardFiles, stateFile)

    c = 0
    for i, (card, correct) in enumerate(session.test(5)):
        c += 1
        correct(i % 2 == 0)

    assert c == 5

    with open(stateFile, "r") as f:
        state = json.load(f)
        latest_scores = [history[-1] for id, history in state.items()]
        assert latest_scores.count(0) == 2
        assert latest_scores.count(1) == 3