class TimelineTest(ActiveListTest): def setUp(self): self.timeline = Timeline() self.assert_null_index() def active_index(self): return self.timeline.active_index # unique elements def test_unique_statuses_in_timeline(self): status = create_status() self.timeline.add_status(status) self.timeline.add_status(status) self.assertEqual(len(self.timeline), 1) # active index def test_active_index_is_0_when_creating_timeline_with_statuses(self): status = create_status() self.timeline = Timeline(statuses=[status]) self.assertEqual(self.timeline.active_index, 0) def test_active_index_becomes_0_when_adding_first_status(self): status = create_status() self.timeline.add_status(status) self.assertEqual(self.timeline.active_index, 0) def test_active_index_does_not_change_when_adding_various_statuses(self): a_status = create_status(id=1) another_status = create_status(id=2) # first self.timeline.add_status(a_status) self.assertEqual(self.timeline.active_index, 0) # second self.timeline.add_status(another_status) self.assertEqual(self.timeline.active_index, 0) # insertion def test_insert_different_statuses_individually(self): old_status = create_status(created_at=datetime(1988, 12, 19)) new_status = create_status(id=2) # first self.timeline.add_status(old_status) self.assertEqual(len(self.timeline), 1) # second self.timeline.add_status(new_status) self.assertEqual(len(self.timeline), 2) def test_insert_different_statuses(self): old_status = create_status(created_at=datetime(1988, 12, 19)) new_status = create_status(id=2) self.timeline.add_statuses([old_status, new_status]) self.assertEqual(len(self.timeline), 2) # order def test_statuses_ordered_reversely_by_date(self): old_status = create_status(created_at=datetime(1988, 12, 19)) new_status = create_status(id=2) # ordered self.timeline = Timeline(statuses=[new_status, old_status]) self.assertEqual(self.timeline[0], new_status) self.assertEqual(self.timeline[1], old_status) # unordered self.timeline = Timeline(statuses=[old_status, new_status]) self.assertEqual(self.timeline[0], new_status) self.assertEqual(self.timeline[1], old_status) # unread def test_unread_count(self): self.assertEqual(self.timeline.unread_count, 0) # a status status = create_status(id=1) self.timeline.add_status(status) self.assertEqual(self.timeline.unread_count, 1) self.timeline.mark_all_as_read() self.assertEqual(self.timeline.unread_count, 0) # new statuses statuses = [create_status(id=id_num) for id_num in xrange(2, 10)] self.timeline.add_statuses(statuses) self.assertEqual(self.timeline.unread_count, len(statuses)) self.timeline.mark_all_as_read() self.assertEqual(self.timeline.unread_count, 0) # clear def test_clear(self): old_created_at = datetime(1988, 12, 19) old_status = create_status(created_at=old_created_at) new_created_at = datetime.now() new_status = create_status(id=2, created_at=new_created_at) self.timeline.add_statuses([old_status, new_status]) self.timeline.clear() self.assertEqual(len(self.timeline), 0) # update function related def test_extract_with_no_args(self): mock = MagicMock(name='update') timeline = Timeline(update_function=mock, ) self.assertEqual(timeline._args, []) self.assertEqual(timeline._kwargs, {}) def test_only_args(self): mock = MagicMock(name='update') args = 'python', 42 timeline = Timeline( update_function=mock, update_function_args=args, ) self.assertEqual(timeline._args, list(args)) self.assertEqual(timeline._kwargs, {}) def test_with_only_kwargs(self): mock = MagicMock(name='update') kwargs = {'python': 'rocks'} timeline = Timeline(update_function=mock, update_function_kwargs=kwargs) self.assertEqual(timeline._args, []) self.assertEqual(timeline._kwargs, kwargs) def test_with_both_args_and_kwargs(self): mock = MagicMock(name='update') args = 'python', 42 kwargs = {'python': 'rocks'} timeline = Timeline(update_function=mock, update_function_args=args, update_function_kwargs=kwargs) self.assertEqual(timeline._args, list(args)) self.assertEqual(timeline._kwargs, kwargs) # update invocation def test_update_with_no_args(self): mock = MagicMock(name='update') timeline = Timeline(update_function=mock, ) timeline.update() mock.assert_called_once_with() def test_update_with_one_arg(self): mock = MagicMock(name='update') arg = '#python' timeline = Timeline(update_function=mock, update_function_args=arg) timeline.update() mock.assert_called_once_with(arg) def test_update_with_multiple_args(self): mock = MagicMock(name='update') args = '#python', '#mock' timeline = Timeline(update_function=mock, update_function_args=args) timeline.update() args = list(args) mock.assert_called_once_with(*args) def test_update_with_kwargs(self): mock = MagicMock(name='update') kwargs = {'text': '#python', 'action': 'search'} timeline = Timeline(update_function=mock, update_function_kwargs=kwargs) timeline.update() mock.assert_called_once_with(**kwargs) def test_update_with_args_and_kwargs(self): mock = MagicMock(name='update') args = 'twitter', 42 kwargs = {'text': '#python', 'action': 'search'} update_args = list(args) update_args.append(kwargs) timeline = Timeline(update_function=mock, update_function_args=args, update_function_kwargs=kwargs) timeline.update() args = list(args) mock.assert_called_once_with(*args, **kwargs) def test_update_with_no_args_extra_kwargs(self): mock = MagicMock(name='update') extra_kwargs = {'python': 'rocks'} timeline = Timeline(update_function=mock, ) timeline.update(**extra_kwargs) mock.assert_called_once_with(**extra_kwargs) def test_update_with_one_arg_extra_kwargs(self): mock = MagicMock(name='update') arg = '#python' extra_kwargs = {'python': 'rocks'} timeline = Timeline(update_function=mock, update_function_args=arg) timeline.update(**extra_kwargs) mock.assert_called_once_with(arg, **extra_kwargs) def test_update_with_multiple_args_extra_kwargs(self): mock = MagicMock(name='update') args = ('#python', '#mock') extra_kwargs = {'python': 'rocks'} timeline = Timeline(update_function=mock, update_function_args=args) timeline.update(**extra_kwargs) args = list(args) mock.assert_called_once_with(*args, **extra_kwargs) def test_update_with_kwargs_extra_kwargs(self): mock = MagicMock(name='update') kwargs = {'text': '#python', 'action': 'search'} extra_kwargs = {'text': 'rocks'} timeline = Timeline(update_function=mock, update_function_kwargs=kwargs) timeline.update(**extra_kwargs) args = kwargs.copy() args.update(extra_kwargs) mock.assert_called_once_with(**args) def test_update_with_args_and_kwargs_extra_kwargs(self): mock = MagicMock(name='update') args = 'twitter', 42 kwargs = {'text': '#python', 'action': 'search'} extra_kwargs = {'text': 'rocks'} timeline = Timeline(update_function=mock, update_function_args=args, update_function_kwargs=kwargs) timeline.update(**extra_kwargs) args = list(args) kwargs = kwargs.copy() kwargs.update(extra_kwargs) mock.assert_called_once_with(*args, **kwargs)
class TimelineTest(unittest.TestCase): def setUp(self): self.timeline = Timeline() self.timeline.clear() self.assertEqual(len(self.timeline), 0) self.assertEqual(self.timeline.active_index, ActiveList.NULL_INDEX) def test_unique_statuses_in_timeline(self): self.assertEqual(len(self.timeline), 0) # create and add the status status = create_status() self.timeline.add_status(status) self.assertEqual(len(self.timeline), 1) # check that adding more than once does not duplicate element self.timeline.add_status(status) self.assertEqual(len(self.timeline), 1) def test_active_index_becomes_0_when_adding_first_status(self): status = create_status() self.timeline.add_status(status) self.assertEqual(self.timeline.active_index, 0) # check that adding than once does not move the active self.timeline.add_status(status) self.assertEqual(self.timeline.active_index, 0) def test_insert_different_statuses(self): old_status = create_status(created_at=datetime(1988, 12, 19)) new_status = create_status(id=2) self.timeline.add_statuses([old_status, new_status]) self.assertEqual(len(self.timeline), 2) def assert_active(self, status): active_status = self.timeline.get_active() if active_status: self.assertEqual(status, active_status) else: raise Exception("There is no active status") def test_active_is_the_same_when_inserting_statuses(self): """ Test that when inserting new statuses the active doesn't change. """ active_status = create_status(created_at=datetime(1988, 12, 19)) self.timeline.add_status(active_status) self.assert_active(active_status) older_status = create_status(id=2, created_at=datetime(1978, 12, 19)) self.timeline.add_status(older_status) self.assert_active(active_status) newer_status = create_status(id=2) self.timeline.add_status(newer_status) self.assert_active(active_status) def test_insert_different_statuses_individually(self): old_status = create_status(created_at=datetime(1988, 12, 19)) new_status = create_status(id=2) self.timeline.add_status(old_status) self.assertEqual(len(self.timeline), 1) self.timeline.add_status(new_status) self.assertEqual(len(self.timeline), 2) def test_statuses_ordered_reversely_by_date(self): old_status = create_status(created_at=datetime(1988, 12, 19)) new_status = create_status(id=2) self.timeline.add_statuses([old_status, new_status]) self.assertEqual(self.timeline[0], new_status) self.assertEqual(self.timeline[1], old_status) def test_get_newer_than(self): old_created_at = datetime(1988, 12, 19) old_status = create_status(created_at=old_created_at) new_created_at = datetime.now() new_status = create_status(id=2, created_at=new_created_at) self.timeline.add_statuses([old_status, new_status]) # get newers than `old_status` newers = self.timeline.get_newer_than(old_created_at) self.assertEqual(len(newers), 1) self.assertEqual(newers[0].id, new_status.id) # get newers than `new_status` newers = self.timeline.get_newer_than(new_created_at) self.assertEqual(len(newers), 0) def test_clear(self): old_created_at = datetime(1988, 12, 19) old_status = create_status(created_at=old_created_at) new_created_at = datetime.now() new_status = create_status(id=2, created_at=new_created_at) self.timeline.add_statuses([old_status, new_status]) self.timeline.clear() self.assertEqual(len(self.timeline), 0) # add them again and check that they are inserted back self.timeline.add_statuses([old_status, new_status]) self.assertEqual(len(self.timeline), 2) def test_get_unread_count(self): self.assertEqual(self.timeline.get_unread_count(), 0) # a status status = create_status(id=1) self.timeline.add_status(status) self.assertEqual(self.timeline.get_unread_count(), 1) self.timeline.mark_all_as_read() self.assertEqual(self.timeline.get_unread_count(), 0) # new statuses statuses = [create_status(id=id_num) for id_num in xrange(2, 10)] self.timeline.add_statuses(statuses) self.assertEqual(self.timeline.get_unread_count(), len(statuses)) self.timeline.mark_all_as_read() self.assertEqual(self.timeline.get_unread_count(), 0) # update function related def test_extract_with_no_args(self): mock = MagicMock(name='update') timeline = Timeline(update_function=mock,) self.assertEqual(timeline.update_function_args, None) self.assertEqual(timeline.update_function_kwargs, None) def test_extract_with_only_args(self): mock = MagicMock(name='update') args = 'python', 42 timeline = Timeline(update_function=mock, update_function_args=args,) self.assertEqual(timeline.update_function_args, list(args)) self.assertEqual(timeline.update_function_kwargs, None) def test_extract_with_only_kwargs(self): mock = MagicMock(name='update') kwargs = {'python': 'rocks'} timeline = Timeline(update_function=mock, update_function_kwargs=kwargs) self.assertEqual(timeline.update_function_args, None) self.assertEqual(timeline.update_function_kwargs, kwargs) def test_extract_with_both_args_and_kwargs(self): mock = MagicMock(name='update') args = 'python', 42 kwargs = {'python': 'rocks'} timeline = Timeline(update_function=mock, update_function_args=args, update_function_kwargs=kwargs) self.assertEqual(timeline.update_function_args, list(args)) self.assertEqual(timeline.update_function_kwargs, kwargs) def test_update_with_no_args(self): mock = MagicMock(name='update') timeline = Timeline(update_function=mock,) timeline.update() mock.assert_called_once_with() def test_update_with_one_arg(self): mock = MagicMock(name='update') arg = '#python' timeline = Timeline(update_function=mock, update_function_args=arg) timeline.update() mock.assert_called_once_with(arg) def test_update_with_multiple_args(self): mock = MagicMock(name='update') args = '#python', '#mock' timeline = Timeline(update_function=mock, update_function_args=args) timeline.update() args = list(args) mock.assert_called_once_with(*args) def test_update_with_kwargs(self): mock = MagicMock(name='update') kwargs = {'text': '#python', 'action': 'search'} timeline = Timeline(update_function=mock, update_function_kwargs=kwargs) timeline.update() mock.assert_called_once_with(**kwargs) def test_update_with_args_and_kwargs(self): mock = MagicMock(name='update') args = 'twitter', 42 kwargs = {'text': '#python', 'action': 'search'} update_args = list(args) update_args.append(kwargs) timeline = Timeline(update_function=mock, update_function_args=args, update_function_kwargs=kwargs) timeline.update() args = list(args) mock.assert_called_once_with(*args, **kwargs) def test_update_with_no_args_extra_kwargs(self): mock = MagicMock(name='update') timeline = Timeline(update_function=mock,) extra_kwargs = {'python': 'rocks'} timeline.update_with_extra_kwargs(**extra_kwargs) mock.assert_called_once_with(**extra_kwargs) def test_update_with_one_arg_extra_kwargs(self): mock = MagicMock(name='update') arg = '#python' timeline = Timeline(update_function=mock, update_function_args=arg) extra_kwargs = {'python': 'rocks'} timeline.update_with_extra_kwargs(**extra_kwargs) mock.assert_called_once_with(arg, **extra_kwargs) def test_update_with_multiple_args_extra_kwargs(self): mock = MagicMock(name='update') args = ('#python', '#mock') timeline = Timeline(update_function=mock, update_function_args=args) extra_kwargs = {'python': 'rocks'} timeline.update_with_extra_kwargs(**extra_kwargs) args = list(args) mock.assert_called_once_with(*args, **extra_kwargs) def test_update_with_kwargs_extra_kwargs(self): mock = MagicMock(name='update') kwargs = {'text': '#python', 'action': 'search'} timeline = Timeline(update_function=mock, update_function_kwargs=kwargs) extra_kwargs = {'text': 'rocks'} timeline.update_with_extra_kwargs(**extra_kwargs) args = kwargs.copy() args.update(extra_kwargs) mock.assert_called_once_with(**args) def test_update_with_args_and_kwargs_extra_kwargs(self): mock = MagicMock(name='update') args = 'twitter', 42 kwargs = {'text': '#python', 'action': 'search'} timeline = Timeline(update_function=mock, update_function_args=args, update_function_kwargs=kwargs) extra_kwargs = {'text': 'rocks'} timeline.update_with_extra_kwargs(**extra_kwargs) args = list(args) kwargs = kwargs.copy() kwargs.update(extra_kwargs) mock.assert_called_once_with(*args, **kwargs)
class TimelineTest(ActiveListTest): def setUp(self): self.timeline = Timeline() self.assert_null_index() def active_index(self): return self.timeline.active_index # unique elements def test_unique_statuses_in_timeline(self): status = create_status() self.timeline.add_status(status) self.timeline.add_status(status) self.assertEqual(len(self.timeline), 1) # active index def test_active_index_is_0_when_creating_timeline_with_statuses(self): status = create_status() self.timeline = Timeline(statuses=[status]) self.assertEqual(self.timeline.active_index, 0) def test_active_index_becomes_0_when_adding_first_status(self): status = create_status() self.timeline.add_status(status) self.assertEqual(self.timeline.active_index, 0) def test_active_index_does_not_change_when_adding_various_statuses(self): a_status = create_status(id=1) another_status = create_status(id=2) # first self.timeline.add_status(a_status) self.assertEqual(self.timeline.active_index, 0) # second self.timeline.add_status(another_status) self.assertEqual(self.timeline.active_index, 0) # insertion def test_insert_different_statuses_individually(self): old_status = create_status(created_at=datetime(1988, 12, 19)) new_status = create_status(id=2) # first self.timeline.add_status(old_status) self.assertEqual(len(self.timeline), 1) # second self.timeline.add_status(new_status) self.assertEqual(len(self.timeline), 2) def test_insert_different_statuses(self): old_status = create_status(created_at=datetime(1988, 12, 19)) new_status = create_status(id=2) self.timeline.add_statuses([old_status, new_status]) self.assertEqual(len(self.timeline), 2) # order def test_statuses_ordered_reversely_by_date(self): old_status = create_status(created_at=datetime(1988, 12, 19)) new_status = create_status(id=2) # ordered self.timeline = Timeline(statuses=[new_status, old_status]) self.assertEqual(self.timeline[0], new_status) self.assertEqual(self.timeline[1], old_status) # unordered self.timeline = Timeline(statuses=[old_status, new_status]) self.assertEqual(self.timeline[0], new_status) self.assertEqual(self.timeline[1], old_status) # unread def test_unread_count(self): self.assertEqual(self.timeline.unread_count, 0) # a status status = create_status(id=1) self.timeline.add_status(status) self.assertEqual(self.timeline.unread_count, 1) self.timeline.mark_all_as_read() self.assertEqual(self.timeline.unread_count, 0) # new statuses statuses = [create_status(id=id_num) for id_num in xrange(2, 10)] self.timeline.add_statuses(statuses) self.assertEqual(self.timeline.unread_count, len(statuses)) self.timeline.mark_all_as_read() self.assertEqual(self.timeline.unread_count, 0) # clear def test_clear(self): old_created_at = datetime(1988, 12, 19) old_status = create_status(created_at=old_created_at) new_created_at = datetime.now() new_status = create_status(id=2, created_at=new_created_at) self.timeline.add_statuses([old_status, new_status]) self.timeline.clear() self.assertEqual(len(self.timeline), 0) # update function related def test_extract_with_no_args(self): mock = MagicMock(name='update') timeline = Timeline(update_function=mock,) self.assertEqual(timeline._args, []) self.assertEqual(timeline._kwargs, {}) def test_only_args(self): mock = MagicMock(name='update') args = 'python', 42 timeline = Timeline(update_function=mock, update_function_args=args,) self.assertEqual(timeline._args, list(args)) self.assertEqual(timeline._kwargs, {}) def test_with_only_kwargs(self): mock = MagicMock(name='update') kwargs = {'python': 'rocks'} timeline = Timeline(update_function=mock, update_function_kwargs=kwargs) self.assertEqual(timeline._args, []) self.assertEqual(timeline._kwargs, kwargs) def test_with_both_args_and_kwargs(self): mock = MagicMock(name='update') args = 'python', 42 kwargs = {'python': 'rocks'} timeline = Timeline(update_function=mock, update_function_args=args, update_function_kwargs=kwargs) self.assertEqual(timeline._args, list(args)) self.assertEqual(timeline._kwargs, kwargs) # update invocation def test_update_with_no_args(self): mock = MagicMock(name='update') timeline = Timeline(update_function=mock,) timeline.update() mock.assert_called_once_with() def test_update_with_one_arg(self): mock = MagicMock(name='update') arg = '#python' timeline = Timeline(update_function=mock, update_function_args=arg) timeline.update() mock.assert_called_once_with(arg) def test_update_with_multiple_args(self): mock = MagicMock(name='update') args = '#python', '#mock' timeline = Timeline(update_function=mock, update_function_args=args) timeline.update() args = list(args) mock.assert_called_once_with(*args) def test_update_with_kwargs(self): mock = MagicMock(name='update') kwargs = {'text': '#python', 'action': 'search'} timeline = Timeline(update_function=mock, update_function_kwargs=kwargs) timeline.update() mock.assert_called_once_with(**kwargs) def test_update_with_args_and_kwargs(self): mock = MagicMock(name='update') args = 'twitter', 42 kwargs = {'text': '#python', 'action': 'search'} update_args = list(args) update_args.append(kwargs) timeline = Timeline(update_function=mock, update_function_args=args, update_function_kwargs=kwargs) timeline.update() args = list(args) mock.assert_called_once_with(*args, **kwargs) def test_update_with_no_args_extra_kwargs(self): mock = MagicMock(name='update') extra_kwargs = {'python': 'rocks'} timeline = Timeline(update_function=mock,) timeline.update(**extra_kwargs) mock.assert_called_once_with(**extra_kwargs) def test_update_with_one_arg_extra_kwargs(self): mock = MagicMock(name='update') arg = '#python' extra_kwargs = {'python': 'rocks'} timeline = Timeline(update_function=mock, update_function_args=arg) timeline.update(**extra_kwargs) mock.assert_called_once_with(arg, **extra_kwargs) def test_update_with_multiple_args_extra_kwargs(self): mock = MagicMock(name='update') args = ('#python', '#mock') extra_kwargs = {'python': 'rocks'} timeline = Timeline(update_function=mock, update_function_args=args) timeline.update(**extra_kwargs) args = list(args) mock.assert_called_once_with(*args, **extra_kwargs) def test_update_with_kwargs_extra_kwargs(self): mock = MagicMock(name='update') kwargs = {'text': '#python', 'action': 'search'} extra_kwargs = {'text': 'rocks'} timeline = Timeline(update_function=mock, update_function_kwargs=kwargs) timeline.update(**extra_kwargs) args = kwargs.copy() args.update(extra_kwargs) mock.assert_called_once_with(**args) def test_update_with_args_and_kwargs_extra_kwargs(self): mock = MagicMock(name='update') args = 'twitter', 42 kwargs = {'text': '#python', 'action': 'search'} extra_kwargs = {'text': 'rocks'} timeline = Timeline(update_function=mock, update_function_args=args, update_function_kwargs=kwargs) timeline.update(**extra_kwargs) args = list(args) kwargs = kwargs.copy() kwargs.update(extra_kwargs) mock.assert_called_once_with(*args, **kwargs)
class TimelineTest(unittest.TestCase): def setUp(self): self.timeline = Timeline() self.timeline.clear() self.assertEqual(len(self.timeline), 0) self.assertEqual(self.timeline.active_index, ActiveList.NULL_INDEX) def test_unique_statuses_in_timeline(self): self.assertEqual(len(self.timeline), 0) # create and add the status status = create_status() self.timeline.add_status(status) self.assertEqual(len(self.timeline), 1) # check that adding more than once does not duplicate element self.timeline.add_status(status) self.assertEqual(len(self.timeline), 1) def test_active_index_becomes_0_when_adding_first_status(self): status = create_status() self.timeline.add_status(status) self.assertEqual(self.timeline.active_index, 0) # check that adding than once does not move the active self.timeline.add_status(status) self.assertEqual(self.timeline.active_index, 0) def test_insert_different_statuses(self): old_status = create_status(created_at=datetime(1988, 12, 19)) new_status = create_status(id=2) self.timeline.add_statuses([old_status, new_status]) self.assertEqual(len(self.timeline), 2) def assert_active(self, status): active_status = self.timeline.get_active() if active_status: self.assertEqual(status, active_status) else: raise Exception("There is no active status") def test_active_is_the_same_when_inserting_statuses(self): """ Test that when inserting new statuses the active doesn't change. """ active_status = create_status(created_at=datetime(1988, 12, 19)) self.timeline.add_status(active_status) self.assert_active(active_status) older_status = create_status(id=2, created_at=datetime(1978, 12, 19)) self.timeline.add_status(older_status) self.assert_active(active_status) newer_status = create_status(id=2) self.timeline.add_status(newer_status) self.assert_active(active_status) def test_insert_different_statuses_individually(self): old_status = create_status(created_at=datetime(1988, 12, 19)) new_status = create_status(id=2) self.timeline.add_status(old_status) self.assertEqual(len(self.timeline), 1) self.timeline.add_status(new_status) self.assertEqual(len(self.timeline), 2) def test_statuses_ordered_reversely_by_date(self): old_status = create_status(created_at=datetime(1988, 12, 19)) new_status = create_status(id=2) self.timeline.add_statuses([old_status, new_status]) self.assertEqual(self.timeline[0], new_status) self.assertEqual(self.timeline[1], old_status) def test_get_newer_than(self): old_created_at = datetime(1988, 12, 19) old_status = create_status(created_at=old_created_at) new_created_at = datetime.now() new_status = create_status(id=2, created_at=new_created_at) self.timeline.add_statuses([old_status, new_status]) # get newers than `old_status` newers = self.timeline.get_newer_than(old_created_at) self.assertEqual(len(newers), 1) self.assertEqual(newers[0].id, new_status.id) # get newers than `new_status` newers = self.timeline.get_newer_than(new_created_at) self.assertEqual(len(newers), 0) def test_clear(self): old_created_at = datetime(1988, 12, 19) old_status = create_status(created_at=old_created_at) new_created_at = datetime.now() new_status = create_status(id=2, created_at=new_created_at) self.timeline.add_statuses([old_status, new_status]) self.timeline.clear() self.assertEqual(len(self.timeline), 0) # add them again and check that they are inserted back self.timeline.add_statuses([old_status, new_status]) self.assertEqual(len(self.timeline), 2) # update function related def test_extract_with_no_args(self): mock = MagicMock(name='update') timeline = Timeline(update_function=mock, ) self.assertEqual(timeline.update_function_args, None) self.assertEqual(timeline.update_function_kwargs, None) def test_extract_with_only_args(self): mock = MagicMock(name='update') args = 'python', 42 timeline = Timeline( update_function=mock, update_function_args=args, ) self.assertEqual(timeline.update_function_args, list(args)) self.assertEqual(timeline.update_function_kwargs, None) def test_extract_with_only_kwargs(self): mock = MagicMock(name='update') kwargs = {'python': 'rocks'} timeline = Timeline(update_function=mock, update_function_kwargs=kwargs) self.assertEqual(timeline.update_function_args, None) self.assertEqual(timeline.update_function_kwargs, kwargs) def test_extract_with_both_args_and_kwargs(self): mock = MagicMock(name='update') args = 'python', 42 kwargs = {'python': 'rocks'} timeline = Timeline(update_function=mock, update_function_args=args, update_function_kwargs=kwargs) self.assertEqual(timeline.update_function_args, list(args)) self.assertEqual(timeline.update_function_kwargs, kwargs) def test_update_with_no_args(self): mock = MagicMock(name='update') timeline = Timeline(update_function=mock, ) timeline.update() mock.assert_called_once_with() def test_update_with_one_arg(self): mock = MagicMock(name='update') arg = '#python' timeline = Timeline(update_function=mock, update_function_args=arg) timeline.update() mock.assert_called_once_with(arg) def test_update_with_multiple_args(self): mock = MagicMock(name='update') args = '#python', '#mock' timeline = Timeline(update_function=mock, update_function_args=args) timeline.update() args = list(args) mock.assert_called_once_with(*args) def test_update_with_kwargs(self): mock = MagicMock(name='update') kwargs = {'text': '#python', 'action': 'search'} timeline = Timeline(update_function=mock, update_function_kwargs=kwargs) timeline.update() mock.assert_called_once_with(**kwargs) def test_update_with_args_and_kwargs(self): mock = MagicMock(name='update') args = 'twitter', 42 kwargs = {'text': '#python', 'action': 'search'} update_args = list(args) update_args.append(kwargs) timeline = Timeline(update_function=mock, update_function_args=args, update_function_kwargs=kwargs) timeline.update() args = list(args) mock.assert_called_once_with(*args, **kwargs) def test_update_with_no_args_extra_kwargs(self): mock = MagicMock(name='update') timeline = Timeline(update_function=mock, ) extra_kwargs = {'python': 'rocks'} timeline.update_with_extra_kwargs(**extra_kwargs) mock.assert_called_once_with(**extra_kwargs) def test_update_with_one_arg_extra_kwargs(self): mock = MagicMock(name='update') arg = '#python' timeline = Timeline(update_function=mock, update_function_args=arg) extra_kwargs = {'python': 'rocks'} timeline.update_with_extra_kwargs(**extra_kwargs) mock.assert_called_once_with(arg, **extra_kwargs) def test_update_with_multiple_args_extra_kwargs(self): mock = MagicMock(name='update') args = ('#python', '#mock') timeline = Timeline(update_function=mock, update_function_args=args) extra_kwargs = {'python': 'rocks'} timeline.update_with_extra_kwargs(**extra_kwargs) args = list(args) mock.assert_called_once_with(*args, **extra_kwargs) def test_update_with_kwargs_extra_kwargs(self): mock = MagicMock(name='update') kwargs = {'text': '#python', 'action': 'search'} timeline = Timeline(update_function=mock, update_function_kwargs=kwargs) extra_kwargs = {'text': 'rocks'} timeline.update_with_extra_kwargs(**extra_kwargs) args = kwargs.copy() args.update(extra_kwargs) mock.assert_called_once_with(**args) def test_update_with_args_and_kwargs_extra_kwargs(self): mock = MagicMock(name='update') args = 'twitter', 42 kwargs = {'text': '#python', 'action': 'search'} timeline = Timeline(update_function=mock, update_function_args=args, update_function_kwargs=kwargs) extra_kwargs = {'text': 'rocks'} timeline.update_with_extra_kwargs(**extra_kwargs) args = list(args) kwargs = kwargs.copy() kwargs.update(extra_kwargs) mock.assert_called_once_with(*args, **kwargs)