Ejemplo n.º 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")
Ejemplo n.º 2
0
def test_review_not_visible_to_reviewer_only(admin_api_client, admin_user):
    external_review = ReviewFactory()
    user_review = ReviewFactory(reviewer=admin_user)

    external_review_response = admin_api_client.get(
        reverse('v1:reviews-detail', kwargs={'pk': external_review.pk}))

    user_review_response = admin_api_client.get(
        reverse('v1:reviews-detail', kwargs={'pk': user_review.pk}))

    assert external_review_response.status_code == status.HTTP_404_NOT_FOUND
    assert user_review_response.status_code == status.HTTP_200_OK
Ejemplo n.º 3
0
    def test_payment_direction(self):
        review = ReviewFactory(is_sender_principal=True)
        self.assertIn('custom-arrow-right',
                      self.admin.payment_direction(review))

        review = ReviewFactory(is_sender_principal=False)
        self.assertIn('custom-arrow-left',
                      self.admin.payment_direction(review))

        review = ReviewFactory(is_sender_principal=None)
        response = self.admin.payment_direction(review).split('  ')
        self.assertIn('custom-arrow-left', response[0])
        self.assertIn('custom-arrow-right', response[1])
Ejemplo n.º 4
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")
Ejemplo n.º 5
0
class SendReplyToStudentEmailTaskTest(APITestCase):
    """
    Test the task of SendCommentToOrganizerEmailTask
    """
    def setUp(self):
        self.review = ReviewFactory()

    @mock.patch('utils.tasks.SendEmailTaskMixin.send_mail')
    def test_run(self, send_mail):
        send_mail.return_value = [{
            'email': self.review.author.user.email,
            'status': 'sent',
            'reject_reason': None,
        }]

        task = SendReplyToStudentEmailTask()
        task_id = task.delay(review_id=self.review.id)

        context = {
            'name': self.review.author.user.first_name,
            'organizer': self.review.activity.organizer.name,
            'reply': self.review.reply,
            'url': self.review.get_student_frontend_url(),
        }

        self.assertTrue(
            EmailTaskRecord.objects.filter(
                task_id=task_id,
                to=self.review.author.user.email,
                status='sent',
                data=context,
                template_name='reviews/email/send_reply_to_student.html').
            exists())
Ejemplo n.º 6
0
    def create_reviews(self):
        self.stdout.write('Creando reviews')
        reviews = list()
        quantity = self.get_quantity()
        orders = self.get_sample(self.orders, quantity)
        for order in orders:
            reviews.append(
                ReviewFactory(activity=order.calendar.activity,
                              author=order.student))

        return reviews
Ejemplo n.º 7
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)
Ejemplo n.º 8
0
    def test_change_replied_at(self):
        """
        Shouldn't be able to change the replied_at date if is set
        """

        replied_at = datetime.datetime(2015, 11, 8, 3, 30, 0, tzinfo=utc)
        review = ReviewFactory(reply='Replied', replied_at=replied_at)

        serializer = ReviewSerializer(review, data={'rating': 2}, partial=True)
        serializer.is_valid(raise_exception=True)
        serializer.save()

        review = Review.objects.get(id=review.id)
        self.assertEqual(review.replied_at, replied_at)
Ejemplo n.º 9
0
 def test_unique_composite_key_fail(self):
     created_by = ProfileFactory()
     sent_to = ProfileFactory()
     with self.assertRaises(IntegrityError):
         for i in range(2):
             ReviewFactory(created_by=created_by, sent_to=sent_to)
Ejemplo n.º 10
0
 def test_sender_eq_receiver_fail(self):
     profile = ProfileFactory()
     with self.assertRaises(ValidationError):
         ReviewFactory(created_by=profile, sent_to=profile)
Ejemplo n.º 11
0
 def setUp(self):
     self.review = ReviewFactory()
Ejemplo n.º 12
0
 def setUp(self):
     # Arrangement
     self.review = ReviewFactory(rating=3)
     self.email = '*****@*****.**'
Ejemplo n.º 13
0
 def test_rating_integer(self):
     review = ReviewFactory()
     self.assertIsInstance(self.admin.get_rating(review), int)