Beispiel #1
0
    def test_get_reviews_with_am_unautenthicated_user(self):
        factory = APIRequestFactory()
        view = ReviewViewSet.as_view({"get": "list"})
        ReviewFactory.create_batch(3)

        request = factory.get("/reviews")
        response = view(request)

        self.assertEqual(response.status_code, status.HTTP_401_UNAUTHORIZED, "Must return 401 unauthorized on an unauthenticate request")
Beispiel #2
0
    def test_get_all_reviews_from_an_autenthicated_user(self):
        factory = APIRequestFactory()
        view = ReviewViewSet.as_view({"get": "list"})
        user = UserFactory()
        user2 = UserFactory()
        ReviewFactory.create_batch(3, reviewer=user)
        ReviewFactory(reviewer=user2)

        request = factory.get("/reviews")
        force_authenticate(request, user=user, token=user.auth_token)
        response = view(request)

        for review in response.data:
            self.assertEqual(review["reviewer"], user.id, "The review creator must match the user")

        self.assertEqual(response.status_code, status.HTTP_200_OK, "Must return 200 OK on a successful request")
Beispiel #3
0
    def handle(self, *args, **options):
        combinations = []
        try:
            reviews_count = options['reviews_count']
            if options['generate_profiles']:
                ReviewFactory.create_batch(reviews_count)
                return

            profiles = list(Profile.objects.all())

            if not profiles:
                raise CommandError(
                    'You need to generate profiles first. Use `generateprofiles` command.'
                )

            retries = 0
            while len(combinations) < reviews_count and retries < MAX_RETRIES:
                retries += 1
                created_by, sent_to = random.sample(profiles, 2)
                targeted_combinition = (
                    created_by.id,
                    sent_to.id,
                )

                if targeted_combinition not in combinations:
                    ReviewFactory(created_by=created_by, sent_to=sent_to)
                    combinations.append(targeted_combinition)
                    retries = 0

            if len(combinations) < reviews_count:
                self.stdout.write(
                    f'{len(combinations)} reviews generated. Unable to generate more reviews. '
                    f'You need to generate more profiles first. '
                    f'Truncate your database and use `generateprofiles` command.'
                )

        except IntegrityError as ie:
            raise CommandError(
                "Truncate your database and run this command again", ie)
        except Exception as ex:
            raise CommandError('Unable to generate dummy profiles.', ex)