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()
Beispiel #3
0
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)
Beispiel #5
0
    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])
Beispiel #8
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)
Beispiel #9
0
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()
Beispiel #11
0
    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()