class UpdateTestCase(unittest.TestCase): def setUp(self): self.trakt = Trakt() self.trakt.users = {"adam": {}} def test_no_entries(self): mock_get = Mock(return_value=[]) self.trakt.get = mock_get self.trakt.update_user("adam") mock_get.assert_any_call(API_ACTIVITY.format("adam", "episodes")) mock_get.assert_any_call(API_ACTIVITY.format("adam", "movies")) self.failIf("last_sync_episodes" in self.trakt.users["adam"]) self.failIf("last_sync_movies" in self.trakt.users["adam"]) def test_sets_last_sync_on_first_load(self): mock_get = Mock(side_effect=(lambda url: [ACTIVITY_PRESET_EPISODE_1] if "episodes" in url else [])) self.trakt.get = mock_get self.trakt.update_user("adam") self.assertEquals(self.trakt.users["adam"]["last_sync_episodes"], Trakt.get_date(ACTIVITY_PRESET_EPISODE_1["watched_at"])) self.failIf("last_sync_movies" in self.trakt.users["adam"]) def test_single_episode(self): mock_get = Mock(side_effect=(lambda url: [ACTIVITY_PRESET_EPISODE_1] if "episodes" in url else [])) self.trakt.users["adam"]["last_sync_episodes"] = Trakt.get_date(ACTIVITY_PRESET_EPISODE_1["watched_at"]) - relativedelta.relativedelta(days=1) mock_echo = Mock() self.trakt.get = mock_get self.trakt.echo = mock_echo self.trakt.update_user("adam") self.failUnless(mock_echo.called) self.assertEqual(mock_echo.call_args[0], (Trakt.format_activity(ACTIVITY_PRESET_EPISODE_1, "adam"),)) def test_no_new_episodes(self): mock_get = Mock(side_effect=(lambda url: [ACTIVITY_PRESET_EPISODE_1] if "episodes" in url else [])) self.trakt.users["adam"]["last_sync_episodes"] = Trakt.get_date(ACTIVITY_PRESET_EPISODE_1["watched_at"]) + relativedelta.relativedelta(days=1) mock_echo = Mock() self.trakt.get = mock_get self.trakt.echo = mock_echo self.trakt.update_user("adam") self.failIf(mock_echo.called) def test_new_activity_both_types(self): mock_get = Mock(side_effect=(lambda url: [ACTIVITY_PRESET_EPISODE_1] if "episodes" in url else [ACTIVITY_PRESET_MOVIE_1])) self.trakt.users["adam"]["last_sync_episodes"] = Trakt.get_date("2013-03-31T09:28:53.000Z") self.trakt.users["adam"]["last_sync_movies"] = Trakt.get_date("2013-03-31T09:28:53.000Z") mock_echo = Mock() self.trakt.get = mock_get self.trakt.echo = mock_echo self.trakt.update_user("adam") self.assertEqual(mock_echo.call_count, 2) mock_echo.assert_any_call(Trakt.format_activity(ACTIVITY_PRESET_EPISODE_1, "adam")) mock_echo.assert_any_call(Trakt.format_activity(ACTIVITY_PRESET_MOVIE_1, "adam")) self.assertEquals(self.trakt.users["adam"]["last_sync_episodes"], Trakt.get_date(ACTIVITY_PRESET_EPISODE_1["watched_at"])) self.assertEquals(self.trakt.users["adam"]["last_sync_movies"], Trakt.get_date(ACTIVITY_PRESET_MOVIE_1["watched_at"]))