Exemplo n.º 1
0
def create_sample_data(
        num_films: int,
        num_reviews: int,
        num_users: int,
) -> None:
    """
    Populates the database with random data.
    """

    for _ in range(num_users):
        user = UserFactory()
        logger.info('User created: %s' % user)

    for _ in range(num_films):
        film = FilmFactory()
        logger.info('Film created: %s' % film)

    users = User.objects.filter(is_superuser=False)
    films = Film.objects.all()

    for _ in range(num_reviews):
        user_not_reviewed = False
        user, film = None, None
        while not user_not_reviewed:
            user = users[random.randint(0, users.count()-1)]
            film = films[random.randint(0, films.count()-1)]
            user_not_reviewed = not bool(
                Review.objects.filter(user=user, film=film).count()
            )
        review = ReviewFactory(user=user, film=film)
        logger.info('Review created: %s' % review)
Exemplo n.º 2
0
def test_review_delete_as_staff_user(client, staff):
    client.force_login(staff)

    film = FilmFactory(poster=None)
    review = ReviewFactory(film=film)

    response = client.delete(reverse('api:review-detail', args=[review.pk]))
    assert response.status_code == 204
Exemplo n.º 3
0
def test_review_get_as_unauthenticated_user(client):
    film = FilmFactory(poster=None)
    review = ReviewFactory(film=film)

    response = client.get(reverse('api:review-list'))
    assert response.status_code == 200

    response = client.get(reverse('api:review-detail', args=[review.pk]))
    assert response.status_code == 200
Exemplo n.º 4
0
def test_review_patch_as_unauthenticated_user(client):
    film = FilmFactory(poster=None)
    review = ReviewFactory(film=film)

    review_edit = {
        'title': 'TestReviewEdit',
    }

    response = client.patch(reverse('api:review-detail', args=[review.pk]),
                            data=review_edit,
                            content_type='application/json')
    assert response.status_code == 403
Exemplo n.º 5
0
def test_review_patch_as_reviewer(client, user):
    client.force_login(user)

    film = FilmFactory(poster=None)
    review = ReviewFactory(film=film, user=user)

    review_edit = {
        'title': 'TestReviewEdit',
    }

    response = client.patch(reverse('api:review-detail', args=[review.pk]),
                            data=review_edit,
                            content_type='application/json')
    assert response.status_code == 200
Exemplo n.º 6
0
def test_review_post_for_previously_reviewed_film_as_authenticated_user(
        client, user):
    client.force_login(user)

    film = FilmFactory(poster=None)
    ReviewFactory(user=user, film=film)

    new_review = {
        'user': user.pk,
        'film': film.pk,
        'rating': 10,
        'review': 'Thumbs up.'
    }

    response = client.post(reverse('api:review-list'), data=new_review)
    assert response.status_code == 400