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