source: flowtimer/tests/test_recurring_phase_sequence.py@ df0449c

guix
Last change on this file since df0449c was df0449c, checked in by Enrico Schwass <ennoausberlin@…>, 9 months ago

fix one remaining unit test

  • Property mode set to 100644
File size: 3.6 KB
Line 
1import pytest
2import json
3
4from flowtimer.RecurringPhaseSequence import RecurringPhaseSequence
5
6
7class TestRecurringPhaseSequence():
8
9 @pytest.fixture
10 def recurring_phase_sequence(self):
11 return RecurringPhaseSequence.default()
12
13 def test_from_json(self):
14 json_string = RecurringPhaseSequence.default_json_string()
15 sequence = RecurringPhaseSequence.from_json(json_string)
16 assert isinstance(sequence, RecurringPhaseSequence)
17 assert sequence.initial_repetitions == 3
18 assert len(sequence.phases) == 3
19 assert sequence.phases[0].title == "Tasking"
20
21 def test_to_json(self, recurring_phase_sequence):
22 json_string = recurring_phase_sequence.to_json()
23 data = json.loads(json_string)
24 assert data['_state'] == "initial"
25 assert data['initial_repetitions'] == 3
26 assert data['passes_left'] == 2
27 assert len(data['phases']) == 3
28
29 def test_initial_state(self, recurring_phase_sequence):
30 assert recurring_phase_sequence.state() == "initial"
31 assert recurring_phase_sequence.current_phase.title == "Tasking"
32 assert recurring_phase_sequence.passes_left == 2
33
34 def test_current_phase_number(self, recurring_phase_sequence):
35 assert recurring_phase_sequence.current_phase_number() == 0
36 recurring_phase_sequence.tick(10)
37 assert recurring_phase_sequence.current_phase_number() == 1
38
39 def test_phases_left_in_pass(self, recurring_phase_sequence):
40 assert recurring_phase_sequence.phases_left_in_pass() == 2
41 recurring_phase_sequence.tick(10)
42 assert recurring_phase_sequence.phases_left_in_pass() == 1
43
44 def test_upcoming_phases_in_pass(self, recurring_phase_sequence):
45 upcoming = recurring_phase_sequence.upcoming_phases_in_pass()
46 assert len(upcoming) == 2
47 assert upcoming[0].title == "Work"
48
49 def test_ticks_left(self, recurring_phase_sequence):
50 total_ticks = (sum([phase.initial_ticks for phase in recurring_phase_sequence.phases]) *
51 recurring_phase_sequence.initial_repetitions)
52 assert recurring_phase_sequence.ticks_left == total_ticks
53 recurring_phase_sequence.tick(10)
54 assert recurring_phase_sequence.ticks_left == (total_ticks - 10)
55
56 def test_completed(self, recurring_phase_sequence):
57 assert not recurring_phase_sequence.is_completed()
58 for _ in range(3):
59 for phase in recurring_phase_sequence.phases:
60 recurring_phase_sequence.tick(phase.initial_ticks)
61 assert recurring_phase_sequence.is_completed()
62
63 def test_abort(self, recurring_phase_sequence):
64 recurring_phase_sequence.abort()
65 assert recurring_phase_sequence.state() == "aborted"
66 assert recurring_phase_sequence.current_phase.is_aborted()
67
68 def test_tick_progression(self, recurring_phase_sequence):
69 recurring_phase_sequence.tick(6)
70 assert recurring_phase_sequence.current_phase.title == "Work"
71 assert recurring_phase_sequence.passes_left == 2
72
73 recurring_phase_sequence.tick(45)
74 assert recurring_phase_sequence.current_phase.title == "Break"
75 assert recurring_phase_sequence.passes_left == 2
76
77 recurring_phase_sequence.tick(15)
78 assert recurring_phase_sequence.current_phase.title == "Tasking"
79 assert recurring_phase_sequence.passes_left == 1
80
81 def test_unrolled(self, recurring_phase_sequence):
82 unrolled_phases = recurring_phase_sequence.unrolled()
83 assert len(unrolled_phases) == 9
84 assert unrolled_phases[0].title == "Tasking"
85 assert unrolled_phases[-1].title == "Break"
Note: See TracBrowser for help on using the repository browser.