Пример #1
0
def test_rent_movie_twice(logged_in_client):
    movies, genres = populate_db(num_movies=1, num_genres=1)
    movie = movies[0]

    r = logged_in_client.post(RENTALS_URL, {"movie": movie["uuid"]})

    assert r.status_code == 201
    assert r.data["movie"] == movies[0]["uuid"]

    r = logged_in_client.post(RENTALS_URL, {"movie": movie["uuid"]})
    assert r.status_code == 400
Пример #2
0
def test_patch_rental_noneditable_fields(logged_in_client):
    movies, genres = populate_db(num_movies=2, num_genres=1)
    movie = movies[0]

    r = logged_in_client.post(RENTALS_URL, {"movie": movie["uuid"]})
    rental_uuid = r.data["uuid"]

    assert r.status_code == 201
    assert r.data["movie"] == movies[0]["uuid"]

    r = logged_in_client.patch(RENTAL_URL.format(uuid=rental_uuid),
                               {"movie": movies[1]["uuid"]},
                               content_type='application/json')
    assert r.status_code == 400
    r = logged_in_client.patch(RENTAL_URL.format(uuid=rental_uuid), {"fee": 5},
                               content_type='application/json')
    assert r.status_code == 400
    r = logged_in_client.patch(RENTAL_URL.format(uuid=rental_uuid),
                               {"rental_date": datetime.datetime.now()},
                               content_type='application/json')
    assert r.status_code == 400
    r = logged_in_client.patch(RENTAL_URL.format(uuid=rental_uuid),
                               {"return_date": datetime.datetime.now()},
                               content_type='application/json')
    assert r.status_code == 400
Пример #3
0
def test_rent_movie_wrong_uuid(logged_in_client):
    r = logged_in_client.post(RENTALS_URL, {"movie": str(uuid.uuid4())})

    # We would expect that using a uuid that points to a non-existent object would result in 404 and not 400.
    # However, in this case the uuid is part of the request data, and more specifically
    # it is the movie to be rented. Since no movie exists with that uuid, the request is
    # invalid, hence the 400.
    assert r.status_code == 400
Пример #4
0
def test_rent_movie_noneditable_fields(logged_in_client):
    movies, genres = populate_db(num_movies=1, num_genres=1)
    movie_uuid = movies[0]["uuid"]

    r = logged_in_client.post(RENTALS_URL, {"movie": movie_uuid, "fee": 1})
    assert r.status_code == 400
    r = logged_in_client.post(RENTALS_URL, {
        "movie": movie_uuid,
        "rental_date": datetime.datetime(2000, 1, 1)
    })
    assert r.status_code == 400
    r = logged_in_client.post(RENTALS_URL, {"movie": movie_uuid, "owner": 1})
    assert r.status_code == 400
    r = logged_in_client.post(RENTALS_URL, {
        "movie": movie_uuid,
        "return_date": datetime.datetime(2000, 1, 1)
    })
    assert r.status_code == 400
    r = logged_in_client.post(RENTALS_URL, {
        "movie": movie_uuid,
        "returned": True
    })
    assert r.status_code == 400
Пример #5
0
def test_patch_rental_no_data_no_change(logged_in_client):
    movies, genres = populate_db(num_movies=2, num_genres=1)
    movie = movies[0]

    r1 = logged_in_client.post(RENTALS_URL, {"movie": movie["uuid"]})
    rental_uuid = r1.data["uuid"]

    assert r1.status_code == 201
    assert r1.data["movie"] == movies[0]["uuid"]

    r2 = logged_in_client.patch(RENTAL_URL.format(uuid=rental_uuid),
                                data={},
                                content_type='application/json')
    assert r2.status_code == 200
    assert dicts_equal(r1.data, r2.data)
Пример #6
0
def test_consecutive_rent_return(logged_in_client):
    movies, genres = populate_db(num_movies=1, num_genres=1)
    movie = movies[0]

    for i in range(5):
        r = logged_in_client.post(RENTALS_URL, {"movie": movie["uuid"]})

        assert r.status_code == 201
        assert r.data["movie"] == movies[0]["uuid"]

        rental_uuid = r.data["uuid"]

        r = logged_in_client.patch(RENTAL_URL.format(uuid=rental_uuid),
                                   {"returned": True},
                                   content_type='application/json')
        assert r.status_code == 200