source: flowtimer/tests/test_recurring_phase_sequence.py@ f2a2a82

guix
Last change on this file since f2a2a82 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
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 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
[d7a66ad]56 def test_completed(self, recurring_phase_sequence):
[813e855]57 assert not recurring_phase_sequence.is_completed()
[daa2276]58 for _ in range(3):
[d310de3]59 for phase in recurring_phase_sequence.phases:
[daa2276]60 recurring_phase_sequence.tick(phase.initial_ticks)
[813e855]61 assert recurring_phase_sequence.is_completed()
[daa2276]62
63 def test_abort(self, recurring_phase_sequence):
64 recurring_phase_sequence.abort()
[813e855]65 assert recurring_phase_sequence.state() == "aborted"
66 assert recurring_phase_sequence.current_phase.is_aborted()
[daa2276]67
68 def test_tick_progression(self, recurring_phase_sequence):
[d7a66ad]69 recurring_phase_sequence.tick(6)
[daa2276]70 assert recurring_phase_sequence.current_phase.title == "Work"
[8f41b95]71 assert recurring_phase_sequence.passes_left == 2
[daa2276]72
73 recurring_phase_sequence.tick(45)
74 assert recurring_phase_sequence.current_phase.title == "Break"
[8f41b95]75 assert recurring_phase_sequence.passes_left == 2
[daa2276]76
77 recurring_phase_sequence.tick(15)
[d7a66ad]78 assert recurring_phase_sequence.current_phase.title == "Tasking"
[8f41b95]79 assert recurring_phase_sequence.passes_left == 1
[daa2276]80
81 def test_unrolled(self, recurring_phase_sequence):
82 unrolled_phases = recurring_phase_sequence.unrolled()
[d7a66ad]83 assert len(unrolled_phases) == 9
84 assert unrolled_phases[0].title == "Tasking"
[daa2276]85 assert unrolled_phases[-1].title == "Break"
Note: See TracBrowser for help on using the repository browser.