source: flowtimer/tests/test_recurring_phase_sequence.py@ 8f41b95

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

logger added - phases left counting fixed

Signed-off-by: Enrico Schwass <ennoausberlin@…>

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