def test_report_steps(self): steps = ('A', 'B', 'C') action = ('downloading', 'package-xyz-1.0-1.f16.rpm') # test and validation pr = ProgressReport() pr._updated = Mock() for s in steps: # validate steps pushed with status of None pr.push_step(s) name, status = pr.steps[-1] self.assertEqual(name, s) self.assertTrue(status is None) # validate details cleared on state pushed self.assertEqual(len(pr.details), 0) # set the action pr.set_action(action[0], action[1]) # validate action self.assertEqual(pr.details['action'], action[0]) self.assertEqual(pr.details['package'], action[1]) # validate previous step status is set (True) on next # push when status is None prev = pr.steps[-2:-1] if prev: self.assertTrue(prev[0][1])
def test_push_step(self, _updated): step = 'started' # test pr = ProgressReport() pr.push_step(step) # validation self.assertEqual(pr.details, {}) self.assertEqual(pr.steps, [[step, None]]) self.assertTrue(_updated.called)
def test_error(self, _updated): pr = ProgressReport() step = 'started' pr.push_step(step) message = 'This is bad' # test pr.error(message) # validation self.assertEqual(pr.details, dict(error=message)) self.assertEqual(pr.steps, [[step, False]]) self.assertTrue(_updated.called)
def test_report_steps_with_errors(self): # Test that previous state with status=False is not # set (True) on next state push steps = ('A', 'B', 'C') # test pr = ProgressReport() pr._updated = Mock() pr.push_step(steps[0]) pr.push_step(steps[1]) pr.set_status(False) pr.push_step(steps[2]) # validation self.assertTrue(pr.steps[0][1]) self.assertFalse(pr.steps[1][1]) self.assertTrue(pr.steps[2][1] is None)