def test_get_5(self): """test GET movies filtered by actor AND genre""" alice_in_wonderland = Movie.get_or_create(title='alice in wonderland', genre='mystery') # this one has the actor we want minions = Movie.get_or_create(title='minions', genre='comedy') mission_impossible = Movie.get_or_create(title='Mission Impossible', genre='action') bob = Actor.get_or_create(name='Bob') alice = Actor.get_or_create(name='Alice') MovieActor.get_or_create(movie_uuid=alice_in_wonderland.uuid, actor_uuid=alice.uuid) MovieActor.get_or_create(movie_uuid=minions.uuid, actor_uuid=bob.uuid) MovieActor.get_or_create(movie_uuid=mission_impossible.uuid, actor_uuid=bob.uuid) res = self.test_client.get( 'http://localhost:5555/movie/?actor=Bob&genre=action') self.assertEqual(res.status_code, 200) self.assertEqual(len(res.json), 1) self.assertEqual(res.json[0].get('title'), 'Mission Impossible') self.assertEqual(res.json[0].get('genre'), 'action')
def test_get_3(self): """test GET movies filtered by genre if none match the genre""" Movie.get_or_create(title='alice in wonderland', genre='mystery') Movie.get_or_create(title='minions', genre='comedy') res = self.test_client.get('http://localhost:5555/movie/?genre=action') self.assertEqual(res.status_code, 200) self.assertEqual(len(res.json), 0)
def test_get_2(self): """test GET movies filtered by genre""" Movie.get_or_create(title='alice in wonderland', genre='mystery') minions = Movie.get_or_create(title='minions', genre='comedy') res = self.test_client.get('http://localhost:5555/movie/?genre=comedy') self.assertEqual(res.status_code, 200) all_movies = res.json self.assertEqual(len(all_movies), 1) self.assertEqual(res.json[0].get('title'), 'minions') self.assertEqual(res.json[0].get('genre'), 'comedy') self.assertEqual(res.json[0].get('uuid'), str(minions.uuid))
def test_get_1(self): """test GET all movies""" alice = Movie.get_or_create(title='alice in wonderland', genre='mystery') minions = Movie.get_or_create(title='minions', genre='comedy') res = self.test_client.get('http://localhost:5555/movie/') self.assertEqual(res.status_code, 200) all_movies = res.json # sort movies by title all_movies.sort(key=lambda t: t.get('title')) self.assertEqual(len(all_movies), 2) self.assertEqual(all_movies[0].get('title'), 'alice in wonderland') self.assertEqual(all_movies[0].get('genre'), 'mystery') self.assertEqual(all_movies[0].get('uuid'), str(alice.uuid)) self.assertEqual(all_movies[1].get('title'), 'minions') self.assertEqual(all_movies[1].get('genre'), 'comedy') self.assertEqual(all_movies[1].get('uuid'), str(minions.uuid))
def test_create(self): """ new MovieActor will be created when no match already exists""" movie = Movie.get_or_create(title='lion king', genre='drama') actor = Actor.get_or_create(name='nicole kidman') ma = MovieActor.get_or_create(movie_uuid=movie.uuid, actor_uuid=actor.uuid) # implicitly assert that only one record is in the database ma_from_db = MovieActor.get() self.assertEqual(ma_from_db.uuid, str(ma.uuid)) # confirm that trying to get or create with the same movies # will not create a duplicate: ma = MovieActor.get_or_create(movie_uuid=movie.uuid, actor_uuid=actor.uuid) ma_from_db = MovieActor.get() self.assertEqual(ma_from_db.uuid, str(ma.uuid))
def test_bad_actor(self): """ cannot create MovieActor record when actor does not exist""" movie = Movie.get_or_create(title='lion king', genre='drama') with self.assertRaises(ValueError): MovieActor.get_or_create(movie_uuid=movie.uuid, actor_uuid='badvalue')