File size: 1,965 Bytes
e6c5a55
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
"""Testes E2E para interações de checkboxes (marcar tópicos como estudados)."""

from streamlit.testing.v1 import AppTest


def test_app_loads_successfully(app_test):
    """App carrega sem erros."""
    assert not app_test.exception


def test_all_disciplines_have_checkboxes(app_test):
    """Todas as 15 disciplinas têm checkboxes visíveis."""
    at = app_test.run()

    # Deve haver mais de 200 checkboxes (15 disciplinas x ~16 tópicos cada)
    assert len(at.checkbox) > 200


def test_mark_first_topic_as_studied(app_test):
    """Marcar primeiro tópico como estudado usando checkbox."""
    at = app_test.run()

    # Verificar checkbox existe e não está marcado
    assert len(at.checkbox) > 0
    first_checkbox = at.checkbox[0]
    assert first_checkbox.value is False

    # Marcar checkbox
    first_checkbox.check().run()

    # Verificar que foi marcado
    assert at.checkbox[0].value is True


def test_unmark_topic_as_studied(app_test):
    """Desmarcar tópico como estudado."""
    at = app_test.run()

    # Marcar primeiro
    at.checkbox[0].check().run()
    assert at.checkbox[0].value is True

    # Desmarcar
    at.checkbox[0].uncheck().run()
    assert at.checkbox[0].value is False


def test_multiple_checkboxes_can_be_checked(app_test):
    """Múltiplos checkboxes podem ser marcados simultaneamente."""
    at = app_test.run()

    # Marcar primeiros 5 checkboxes
    for i in range(min(5, len(at.checkbox))):
        at.checkbox[i].check().run()

    at.run()

    # Verificar que estão marcados
    for i in range(min(5, len(at.checkbox))):
        assert at.checkbox[i].value is True


def test_checkbox_state_persists_in_session(app_test):
    """Estado de checkbox persiste dentro da mesma sessão."""
    at = app_test.run()

    # Marcar checkbox
    at.checkbox[0].check().run()
    assert at.checkbox[0].value is True

    # Executar novamente (simula rerun)
    at.run()
    assert at.checkbox[0].value is True