class LightsStoreTest(TestCase): def setUp(self): self.store = LightsStoreStub() self.lights = Lights(store=self.store) def test_should_add_trigger_to_store(self): self.store.add_trigger = MagicMock() self.lights.add_trigger(True, 10, 20) self.store.add_trigger.assert_called_with(ANY) def test_should_read_triggers_from_store(self): self.store.read_triggers = MagicMock() self.lights = Lights(store=self.store) self.store.read_triggers.assert_called_with() def test_should_remove_trigger_from_store(self): self.store.remove_trigger = MagicMock() self.lights.remove_trigger(job_id=TRIGGER.job_id) self.store.remove_trigger.assert_called_with(TRIGGER.job_id) def test_should_add_history_entry_to_store(self): self.store.add_entry = MagicMock() self.lights.set_state(True, "test") self.store.add_entry.assert_called_with(True, "test") def test_should_read_history_from_store(self): self.store.read_history = MagicMock() self.lights.get_history() self.store.read_history.assert_called_with()
class LightsStateTest(TestCase): def setUp(self): self.lights = Lights() def test_state_starts_as_false(self): assert_that(self.lights.get_state(), is_(False)) def test_set_and_return_state(self): self.lights.set_state(True, "test") assert_that(self.lights.get_state(), is_(True)) def test_toggle_flips_state(self): assert_that(self.lights.get_state(), is_(False)) self.lights.toggle("test") assert_that(self.lights.get_state(), is_(True)) def test_set_state_does_not_change_if_less_than_bounce_duration(self): self.lights.set_state(True, "test") assert_that(self.lights.get_state(), is_(True)) self.lights.set_state(False, "test") assert_that(self.lights.get_state(), is_(True)) def test_set_state_changes_if_more_than_bounce_duration(self): with freeze_time(datetime.now()) as curr_time: self.lights.set_state(True, "test") assert_that(self.lights.get_state(), is_(True)) curr_time.tick(delta=timedelta(seconds=90)) self.lights.set_state(False, "test") assert_that(self.lights.get_state(), is_(False)) def test_toggle_does_not_change_if_less_than_bounce_duration(self): self.lights.toggle("test") assert_that(self.lights.get_state(), is_(True)) self.lights.toggle("test") assert_that(self.lights.get_state(), is_(True)) def test_toggle_changes_if_more_than_bounce_duration(self): with freeze_time(datetime.now()) as curr_time: self.lights.toggle("test") assert_that(self.lights.get_state(), is_(True)) curr_time.tick(delta=timedelta(seconds=90)) self.lights.toggle("test") assert_that(self.lights.get_state(), is_(False))