def test_add_single_key_without_existed_movie(self): with self.instance.test_request_context() as request: u = UserFactory() self.db.session.commit() key = Watchlist.make_key(user_id=u.id, movie_key='movie:tt0167260:imdb') result = Watchlist.add(keys=(key,)) self.assertEqual(len(result), 1) self.assertTrue(isinstance(result[0], Watchlist)) self.assertEqual(result[0].status, Watchlist.PENDING_MOVIE) movies = self.db.session.query(Movie).all() self.assertEqual(len(movies), 1)
def test_add_single_key_with_existed_movie(self): provider = 'imdb' with self.instance.test_request_context() as request: u = UserFactory() m = MovieFactory() self.db.session.commit() mid = getattr(m, '%s_id' % provider) movie_key = Movie.make_key(provider=provider, id=mid) key = Watchlist.make_key(user_id=u.id, movie_key=movie_key) result = Watchlist.add(keys=(key,)) self.assertEqual(len(result), 1) self.assertTrue(isinstance(result[0], Watchlist)) self.assertEqual(result[0].status, Watchlist.PENDING_MOVIE)
def test_add_multiple_keys_with_one_person_and_not_existed_movies(self): with self.instance.test_request_context() as request: u = UserFactory() self.db.session.commit() keys = ['watchlist:1:movie:tt0167260:imdb', 'watchlist:1:movie:tt1229238:imdb', 'watchlist:1:movie:tt1272878:imdb'] result = Watchlist.add(keys=keys) self.assertEqual(len(result), len(keys)) for item in result: self.assertEqual(item.status, Watchlist.PENDING_MOVIE) movies = self.db.session.query(Movie).all() self.assertEqual(len(movies), len(keys))
def test_add_already_existed_key(self): provider = 'imdb' with self.instance.test_request_context() as request: u = UserFactory() m = MovieFactory() self.db.session.commit() mid = getattr(m, '%s_id' % provider) movie_key = Movie.make_key(provider=provider, id=mid) w = Watchlist(user_id=u.id, movie_id=m.id) self.db.session.add(w) self.db.session.commit() key = Watchlist.make_key(user_id=u.id, movie_key=movie_key) result = Watchlist.add(keys=(key,)) self.assertEqual(len(result), 1) self.assertEqual(result[0].id, w.id)
def add_to_watchlist(**kwargs): logger = kwargs.get('logger', None) keys = kwargs.get('keys', []) provider = 'imdb' # TODO: fix this later save_relations = kwargs.get('save_relations', False) if logger: logger.info('Adding movies to watchlist: start') result = Watchlist.add(keys=keys) if save_relations: if logger: logger.info('Adding movies to watchlist: save movies relations') movie_ids = [w.movie_id for w in result] movies = db.session.query(Movie).filter(Movie.id.in_(movie_ids)).all() for movie in movies: movie.save_poster(provider=provider, load_original=True) missing_movies = movie.save_relations() Movie.add(keys=missing_movies) if logger: logger.info('Adding movies to watchlist: end')
def test_add_multiple_keys_with_various_persons_and_existed_movies(self): with self.instance.test_request_context() as request: u1 = UserFactory() u2 = UserFactory() self.db.session.commit() keys = ['watchlist:1:movie:tt0167260:imdb', 'watchlist:1:movie:tt1229238:imdb', 'watchlist:2:movie:tt1272878:imdb'] result = Watchlist.add(keys=keys) self.assertEqual(len(result), len(keys)) for item in result: self.assertEqual(item.status, Watchlist.PENDING_MOVIE) movies = self.db.session.query(Movie).all() self.assertEqual(len(movies), len(keys)) u1_movies = self.db.session.query(Watchlist).filter(Watchlist.user_id == u1.id).all() self.assertEqual(len(u1_movies), 2) u2_movies = self.db.session.query(Watchlist).filter(Watchlist.user_id == u2.id).all() self.assertEqual(len(u2_movies), 1)