def test_display_no_snapshot(self): reports = [ {'repo_id': 1, 'state': 'merging'}, {'repo_id': 2, 'state': 'merging'}, {'repo_id': 3, 'state': 'merging'}, ] report = { 'progress': reports } mock_prompt = Mock() snapshot = [(r, Mock()) for r in reports] mock_prompt.create_progress_bar.side_effect = [s[1] for s in snapshot] tracker = ProgressTracker(mock_prompt) tracker._render = Mock() tracker.display(report) self.assertEqual(tracker.snapshot, snapshot) tracker._render.assert_has_calls([call(r, pb) for r, pb in snapshot]) mock_prompt.write.assert_has_calls( [ call('\n'), call('(1/3) Repository: 1'), call('\n'), call('(2/3) Repository: 2'), call('\n'), call('(3/3) Repository: 3') ] )
def test_display_with_snapshot(self): reports = [ {'repo_id': 1, 'state': 'import_finished'}, {'repo_id': 2, 'state': 'import_finished'}, {'repo_id': 3, 'state': 'import_finished'}, {'repo_id': 4, 'state': 'import_finished'}, {'repo_id': 5, 'state': 'import_finished'}, {'repo_id': 6, 'state': 'merging'}, ] report = { 'progress': reports } mock_prompt = Mock() snapshot = [(r, Mock()) for r in reports] mock_prompt.create_progress_bar.side_effect = [s[1] for s in snapshot[3:]] tracker = ProgressTracker(mock_prompt) tracker.snapshot = snapshot[:3] tracker._render = Mock() tracker.display(report) self.assertEqual(tracker.snapshot, snapshot) tracker._render.assert_has_calls([call(r, pb) for r, pb in snapshot[3:]]) mock_prompt.write.assert_has_calls( [ call('\n'), call('(4/6) Repository: 4'), call('\n'), call('(5/6) Repository: 5'), call('\n'), call('(6/6) Repository: 6') ] )
def test_display_no_snapshot(self): reports = [ { 'repo_id': 1, 'state': 'merging' }, { 'repo_id': 2, 'state': 'merging' }, { 'repo_id': 3, 'state': 'merging' }, ] report = {'progress': reports} mock_prompt = Mock() snapshot = [(r, Mock()) for r in reports] mock_prompt.create_progress_bar.side_effect = [s[1] for s in snapshot] tracker = ProgressTracker(mock_prompt) tracker._render = Mock() tracker.display(report) self.assertEqual(tracker.snapshot, snapshot) tracker._render.assert_has_calls([call(r, pb) for r, pb in snapshot]) mock_prompt.write.assert_has_calls([ call('\n'), call('(1/3) Repository: 1'), call('\n'), call('(2/3) Repository: 2'), call('\n'), call('(3/3) Repository: 3') ])
def test_render(self): report = { 'repo_id': 1, 'state': 'adding_units', 'unit_add': { 'total': 10, 'completed': 5, 'details': 'http://redhat.com/foo/bar.unit' } } progress_bar = Mock() ProgressTracker._render(report, progress_bar) progress_bar.render.assert_called_with(5, 10, 'Step: Adding Units\n(5/10) Add unit: bar.unit')
def test_render_zero_total_and_not_finished(self): report = { 'repo_id': 1, 'state': 'merging', 'unit_add': { 'total': 0, 'completed': 0, 'details': '' } } progress_bar = Mock() ProgressTracker._render(report, progress_bar) progress_bar.render.assert_called_with(0.01, 1)
def test_render_not_adding_units(self): report = { 'repo_id': 1, 'state': 'merging', 'unit_add': { 'total': 10, 'completed': 5, 'details': '' } } progress_bar = Mock() ProgressTracker._render(report, progress_bar) progress_bar.render.assert_called_with(5, 10, None)
def test_find(self): reports = [ {'repo_id': 1, 'state': 'merging'}, {'repo_id': 2, 'state': 'merging'}, {'repo_id': 3, 'state': 'merging'}, ] self.assertEqual(ProgressTracker._find(2, reports), reports[1])
def __init__(self, context): super(NodeUpdateCommand, self).__init__(UPDATE_NAME, UPDATE_DESC, self.run, context) self.add_option(NODE_ID_OPTION) self.add_option(MAX_CONCURRENCY_OPTION) self.add_option(MAX_BANDWIDTH_OPTION) self.tracker = ProgressTracker(self.context.prompt)
def test_display_none(self): fake_prompt = Mock() tracker = ProgressTracker(fake_prompt) tracker.display(None)
def test_display_no_report(self): fake_prompt = Mock() tracker = ProgressTracker(fake_prompt) tracker.display({})