def test_patch_role_to_provide_actor_id(self): new_movie = Movie(**AppTestCase.test_movie) new_movie.insert() movie_id = new_movie.id new_role = Role(movie_id=movie_id, **AppTestCase.test_role) new_role.insert() role_id = new_role.id new_actor = Actor(**AppTestCase.test_actor) new_actor.insert() actor_id = new_actor.id res = self.client().patch(f'/roles/{role_id}', json={'actor_id': actor_id}, headers=HEADER) data = json.loads(res.data) self.assertEqual(res.status_code, 200) self.assertTrue(data['success']) self.assertEqual(data['id'], role_id) role = Role.query.get(role_id) self.assertEqual(role.actor_id, actor_id) new_movie.delete() new_actor.delete()
def test_patch_role_by_invalid_age_interval(self): new_movie = Movie(**AppTestCase.test_movie) new_movie.insert() movie_id = new_movie.id new_role = Role(movie_id=movie_id, **AppTestCase.test_role) new_role.insert() role_id = new_role.id change_data = { 'min_age': 25, 'max_age': 20, } res = self.client().patch(f'/roles/{role_id}', json=change_data, headers=HEADER) data = json.loads(res.data) self.assertEqual(res.status_code, 422) self.assertFalse(data['success']) err_message = 'Min age can not be greater than max age' self.assertEqual(data['message'], err_message) new_movie.delete()
def insert_role(movie_id, name, gender, min_age, max_age): role = Role(movie_id=movie_id, name=name, gender=gender, min_age=min_age, max_age=max_age) role.insert()
def test_get_roles_of_movie(self): new_movie = Movie(**AppTestCase.test_movie) new_movie.insert() movie_id = new_movie.id new_role = Role(**AppTestCase.test_role) new_role.movie = new_movie new_role.insert() res = self.client().get(f'/movies/{movie_id}/roles') data = json.loads(res.data) self.assertEqual(res.status_code, 200) self.assertTrue(data['success']) self.assertTrue('movie_id' not in data['roles'][0]) self.assertEqual(data['movie_id'], movie_id)
def test_delete_role(self): new_movie = Movie(**AppTestCase.test_movie) new_movie.insert() movie_id = new_movie.id new_role = Role(movie_id=movie_id, **AppTestCase.test_role) new_role.insert() role_id = new_role.id res = self.client().delete(f'/roles/{role_id}', headers=HEADER) data = json.loads(res.data) self.assertEqual(res.status_code, 401) self.assertEqual(data['description'], 'Permission not found.') new_movie.delete()
def test_delete_role(self): new_movie = Movie(**AppTestCase.test_movie) new_movie.insert() movie_id = new_movie.id new_role = Role(movie_id=movie_id, **AppTestCase.test_role) new_role.insert() role_id = new_role.id res = self.client().delete(f'/roles/{role_id}', headers=HEADER) data = json.loads(res.data) self.assertEqual(res.status_code, 200) self.assertTrue(data['success']) self.assertEqual(data['id'], role_id) new_movie.delete()
def test_get_roles_of_actor(self): new_actor = Actor(**AppTestCase.test_actor) new_actor.insert() actor_id = new_actor.id new_movie = Movie(**AppTestCase.test_movie) new_movie.insert() new_role = Role(**AppTestCase.test_role) new_role.movie = new_movie new_role.actor = new_actor new_role.insert() res = self.client().get(f'/actors/{actor_id}/roles') data = json.loads(res.data) self.assertEqual(res.status_code, 200) self.assertTrue(data['success']) self.assertEqual(data['actor_id'], actor_id) self.assertTrue('actor_id' not in data['roles'][0])
def post_role(payload): body = request.get_json() role_data = {column: body.get(column) for column in ROLE_COLUMNS} try: new_role = Role(**role_data) except AssertionError as e: return jsonify({ 'success': False, "error": 422, 'message': str(e) }), 422 try: new_role.insert() return jsonify({ 'success': True, 'id': new_role.id, }) except Exception: abort(422)
def add_actor_to_movie(movie_id): """Add an actor to a movie in the database Payload parameters: actor_id -- the id of the actor being added to the movie (required) Returns an object, with the movie that the actor was added to if successful. """ data = request.get_json() if not data or not data.get('actor_id'): abort(400, description='`actor_id` attribute must be specified') actor_id = data['actor_id'] movie = Movie.query.get(movie_id) if not movie: abort(404, description=f'Unable to find the specified movie_id: {movie_id}') actor = Actor.query.get(actor_id) if not actor: abort(404, description=f'Unable to find the specified actor_id: {actor_id}') existing_role = Role.query.filter( Role.movie_id == movie_id and Role.actor_id == actor_id).one_or_none() if existing_role: abort( 409, description= f'`actor_id`: {actor_id} already has a role in `movie_id`: {movie_id}' ) role = Role(movie_id=movie_id, actor_id=actor_id) role.insert() return jsonify({'success': True, 'movie': movie.format()})
def test_get_roles_by_min_age(self): new_movie = Movie(**AppTestCase.test_movie) new_movie.insert() movie_id = new_movie.id new_actor = Actor(**AppTestCase.test_actor) new_actor.insert() new_role = Role(movie_id=movie_id, **AppTestCase.test_role) new_role.actor = new_actor new_role.insert() min_age = 20 res = self.client().get(f'/roles?min_age={min_age}') data = json.loads(res.data) self.assertEqual(res.status_code, 200) self.assertTrue(data['success']) for role in data['roles']: self.assertTrue(role['min_age'] >= min_age) new_movie.delete() new_actor.delete()
def test_patch_role_to_provide_actor_id(self): new_movie = Movie(**AppTestCase.test_movie) new_movie.insert() movie_id = new_movie.id new_role = Role(movie_id=movie_id, **AppTestCase.test_role) new_role.insert() role_id = new_role.id new_actor = Actor(**AppTestCase.test_actor) new_actor.insert() actor_id = new_actor.id res = self.client().patch(f'/roles/{role_id}', json={'actor_id': actor_id}, headers=HEADER) data = json.loads(res.data) self.assertEqual(res.status_code, 401) self.assertEqual(data['description'], 'Permission not found.') new_movie.delete() new_actor.delete()