From c871b44f57193fb1ac3d51c70f7f0e4137086dc7 Mon Sep 17 00:00:00 2001
From: Erin Mullaney <erin.mullaney@torchbox.com>
Date: Thu, 21 Feb 2019 07:17:34 -0500
Subject: [PATCH] #962 opinion data test for all reviews list page (for a
 submission) and test for review detail

---
 .../apply/review/tests/factories/models.py    | 19 ++++++++++--
 opentech/apply/review/tests/test_views.py     | 29 ++++++++++++++++++-
 2 files changed, 44 insertions(+), 4 deletions(-)

diff --git a/opentech/apply/review/tests/factories/models.py b/opentech/apply/review/tests/factories/models.py
index 2d59912a3..a6d825394 100644
--- a/opentech/apply/review/tests/factories/models.py
+++ b/opentech/apply/review/tests/factories/models.py
@@ -4,12 +4,12 @@ from opentech.apply.funds.tests.factories import ApplicationSubmissionFactory
 from opentech.apply.stream_forms.testing.factories import FormDataFactory
 from opentech.apply.users.tests.factories import StaffFactory
 
-from ...options import YES, NO, MAYBE
-from ...models import Review, ReviewForm
+from ...options import YES, NO, MAYBE, AGREE, DISAGREE
+from ...models import Review, ReviewForm, ReviewOpinion
 
 from . import blocks
 
-__all__ = ['ReviewFactory', 'ReviewFormFactory']
+__all__ = ['ReviewFactory', 'ReviewFormFactory', 'ReviewOpinionFactory']
 
 
 class ReviewFormDataFactory(FormDataFactory):
@@ -38,6 +38,19 @@ class ReviewFactory(factory.DjangoModelFactory):
     score = 0
 
 
+class ReviewOpinionFactory(factory.DjangoModelFactory):
+    class Meta:
+        model = ReviewOpinion
+
+    class Params:
+        opinion_agree = factory.Trait(opinion=AGREE)
+        opinion_disagree = factory.Trait(opinion=DISAGREE)
+
+    review = factory.SubFactory(ReviewFactory)
+    author = factory.SubFactory(StaffFactory)
+    opinion = DISAGREE
+
+
 class ReviewFormFactory(factory.DjangoModelFactory):
     class Meta:
         model = ReviewForm
diff --git a/opentech/apply/review/tests/test_views.py b/opentech/apply/review/tests/test_views.py
index d58724ff3..88114bd58 100644
--- a/opentech/apply/review/tests/test_views.py
+++ b/opentech/apply/review/tests/test_views.py
@@ -5,7 +5,7 @@ from opentech.apply.funds.tests.factories.models import ApplicationSubmissionFac
 from opentech.apply.users.tests.factories import StaffFactory, UserFactory
 from opentech.apply.utils.testing.tests import BaseViewTestCase
 
-from .factories import ReviewFactory, ReviewFormFieldsFactory, ReviewFormFactory
+from .factories import ReviewFactory, ReviewFormFieldsFactory, ReviewFormFactory, ReviewOpinionFactory
 from ..models import Review, ReviewOpinion
 from ..options import NA, AGREE
 
@@ -208,6 +208,33 @@ class ReviewDetailTestCase(BaseViewTestCase):
         self.assertContains(response, submission.title)
         self.assertContains(response, "<p>Yes</p>")
 
+    def test_review_detail_opinion(self):
+        staff = StaffFactory()
+        submission = ApplicationSubmissionFactory(status='draft_proposal', workflow_stages=2)
+        review = ReviewFactory(submission=submission, author=self.user, recommendation_yes=True)
+        ReviewOpinionFactory(review=review, author=staff, opinion_disagree=True)
+        response = self.get_page(review)
+        self.assertContains(response, "Disagrees")
+
+
+class ReviewListTestCase(BaseViewTestCase):
+    user_factory = StaffFactory
+    url_name = 'funds:submissions:reviews:{}'
+    base_view_name = 'list'
+
+    def get_kwargs(self, instance):
+        return {'submission_pk': instance.submission.id}
+
+    def test_review_list_opinion(self):
+        staff = StaffFactory()
+        submission = ApplicationSubmissionFactory(status='draft_proposal', workflow_stages=2)
+        review = ReviewFactory(submission=submission, author=self.user, recommendation_yes=True)
+        ReviewOpinionFactory(review=review, author=staff, opinion_disagree=True)
+        response = self.get_page(review)
+        response_opinion = response.context['review_data']['opinions']['answers'][0]
+        self.assertIn("Disagrees", response_opinion)
+        self.assertIn(str(staff), response_opinion)
+
 
 class StaffReviewOpinionCase(BaseViewTestCase):
     user_factory = StaffFactory
-- 
GitLab