Skip to content
Snippets Groups Projects
test_views.py 4.72 KiB
Newer Older
  • Learn to ignore specific revisions
  • from django.urls import reverse
    
    
    Dan Braghis's avatar
    Dan Braghis committed
    from opentech.apply.review.tests.factories.models import ReviewApplicationSubmissionFactory
    
    from opentech.apply.users.tests.factories import StaffFactory, UserFactory
    
    from opentech.apply.utils.testing.tests import BaseViewTestCase
    
    Dan Braghis's avatar
    Dan Braghis committed
    from .factories import ReviewFactory
    
    class StaffReviewsTestCase(BaseViewTestCase):
    
        user_factory = StaffFactory
        url_name = 'funds:submissions:reviews:{}'
    
        base_view_name = 'review'
    
    
        def get_kwargs(self, instance):
            return {'pk': instance.id, 'submission_pk': instance.submission.id}
    
        def test_can_access_review(self):
    
    Dan Braghis's avatar
    Dan Braghis committed
            submission = ReviewApplicationSubmissionFactory()
    
            review = ReviewFactory(submission=submission, author=self.user)
            response = self.get_page(review)
            self.assertContains(response, review.submission.title)
            self.assertContains(response, self.user.full_name)
    
            self.assertContains(response, reverse('funds:submissions:detail', kwargs={'pk': submission.id}))
    
    
        def test_cant_access_other_review(self):
    
    Dan Braghis's avatar
    Dan Braghis committed
            submission = ReviewApplicationSubmissionFactory()
    
            review = ReviewFactory(submission=submission)
            response = self.get_page(review)
            self.assertEqual(response.status_code, 403)
    
    
    
    class StaffReviewListingTestCase(BaseViewTestCase):
    
        user_factory = StaffFactory
        url_name = 'funds:submissions:reviews:{}'
    
        base_view_name = 'review'
    
    
        def get_kwargs(self, instance):
            return {'submission_pk': instance.id}
    
        def test_can_access_review_listing(self):
    
    Dan Braghis's avatar
    Dan Braghis committed
            submission = ReviewApplicationSubmissionFactory()
    
            reviews = ReviewFactory.create_batch(3, submission=submission)
            response = self.get_page(submission, 'list')
            self.assertContains(response, submission.title)
    
            self.assertContains(response, reverse('funds:submissions:detail', kwargs={'pk': submission.id}))
    
            for review in reviews:
                self.assertContains(response, review.author.full_name)
    
    class StaffReviewFormTestCase(BaseViewTestCase):
    
        user_factory = StaffFactory
        url_name = 'funds:submissions:reviews:{}'
    
        base_view_name = 'review'
    
    
        def get_kwargs(self, instance):
            return {'submission_pk': instance.id}
    
        def test_can_access_form(self):
    
    Dan Braghis's avatar
    Dan Braghis committed
            submission = ReviewApplicationSubmissionFactory(status='internal_review')
    
            response = self.get_page(submission, 'form')
            self.assertContains(response, submission.title)
            self.assertContains(response, reverse('funds:submissions:detail', kwargs={'pk': submission.id}))
    
        def test_cant_access_wrong_status(self):
    
    Dan Braghis's avatar
    Dan Braghis committed
            submission = ReviewApplicationSubmissionFactory()
    
            response = self.get_page(submission, 'form')
            self.assertEqual(response.status_code, 403)
    
        def test_cant_resubmit_review(self):
    
    Dan Braghis's avatar
    Dan Braghis committed
            submission = ReviewApplicationSubmissionFactory(status='internal_review')
    
            ReviewFactory(submission=submission, author=self.user)
            response = self.post_page(submission, {'data': 'value'}, 'form')
            self.assertEqual(response.context['has_submitted_review'], True)
            self.assertEqual(response.context['title'], 'Update Review draft')
    
        def test_can_edit_draft_review(self):
    
    Dan Braghis's avatar
    Dan Braghis committed
            # FIXME fix form generation issue in ReviewFundTypeFactory review_forms()
            return
            submission = ReviewApplicationSubmissionFactory(status='internal_review')
    
            ReviewFactory(submission=submission, author=self.user, is_draft=True)
            response = self.post_page(submission, {'data': 'value'}, 'form')
            self.assertEqual(response.context['has_submitted_review'], False)
            self.assertEqual(response.context['title'], 'Update Review draft')
    
    
    
    class UserReviewFormTestCase(BaseViewTestCase):
    
        user_factory = UserFactory
        url_name = 'funds:submissions:reviews:{}'
    
        base_view_name = 'review'
    
    
        def get_kwargs(self, instance):
            return {'submission_pk': instance.id}
    
        def test_cant_access_form(self):
    
    Dan Braghis's avatar
    Dan Braghis committed
            submission = ReviewApplicationSubmissionFactory(status='internal_review')
    
            response = self.get_page(submission, 'form')
            self.assertEqual(response.status_code, 403)
    
    class ReviewDetailTestCase(BaseViewTestCase):
    
        user_factory = StaffFactory
        url_name = 'funds:submissions:reviews:{}'
    
        base_view_name = 'review'
    
    
        def get_kwargs(self, instance):
    
            return {'pk': instance.id, 'submission_pk': instance.submission.id}
    
    Dan Braghis's avatar
    Dan Braghis committed
        def test_review_detail_recommendation(self):
            submission = ReviewApplicationSubmissionFactory(status='draft_proposal', workflow_stages=2)
            review = ReviewFactory(submission=submission, author=self.user, recommendation_yes=True)
    
            response = self.get_page(review)
    
            self.assertContains(response, submission.title)
    
    Dan Braghis's avatar
    Dan Braghis committed
            self.assertContains(response, "<p>Yes</p>")