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
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
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
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
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)
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