From a553c416c7eb23e0e87b5bc2139467d3847f9c91 Mon Sep 17 00:00:00 2001
From: Jorran de Wit <jorrandewit@outlook.com>
Date: Fri, 19 May 2017 20:10:56 +0200
Subject: [PATCH] Complete tests

---
 commentaries/forms.py      | 5 +++++
 commentaries/models.py     | 8 ++++----
 commentaries/test_forms.py | 7 ++++++-
 commentaries/views.py      | 5 +++++
 4 files changed, 20 insertions(+), 5 deletions(-)

diff --git a/commentaries/forms.py b/commentaries/forms.py
index 31c448913..37ec5748c 100644
--- a/commentaries/forms.py
+++ b/commentaries/forms.py
@@ -97,8 +97,13 @@ class RequestCommentaryForm(forms.ModelForm):
             'pub_date': 'Format: YYYY-MM-DD'
         }
 
+    def __init__(self, *args, **kwargs):
+        self.requested_by = kwargs.pop('requested_by', None)
+        super().__init__(*args, **kwargs)
+
     def save(self, *args, **kwargs):
         self.instance.parse_links_into_urls()
+        self.instance.requested_by = self.requested_by
         return super().save(self, *args, **kwargs)
 
 
diff --git a/commentaries/models.py b/commentaries/models.py
index 51490c7d8..da8321b41 100644
--- a/commentaries/models.py
+++ b/commentaries/models.py
@@ -16,11 +16,11 @@ class Commentary(ArxivCallable, TimeStampedModel):
     """
     A Commentary contains all the contents of a SciPost Commentary page for a given publication.
     """
-    requested_by = models.ForeignKey(
-        Contributor, blank=True, null=True,
-        on_delete=models.CASCADE, related_name='requested_by')
+    requested_by = models.ForeignKey('scipost.Contributor', blank=True, null=True,
+                                     on_delete=models.CASCADE, related_name='requested_by')
     vetted = models.BooleanField(default=False)
-    vetted_by = models.ForeignKey(Contributor, blank=True, null=True, on_delete=models.CASCADE)
+    vetted_by = models.ForeignKey('scipost.Contributor', blank=True, null=True,
+                                  on_delete=models.CASCADE)
     type = models.CharField(max_length=9, choices=COMMENTARY_TYPES)
     discipline = models.CharField(max_length=20,
                                   choices=SCIPOST_DISCIPLINES, default=DISCIPLINE_PHYSICS)
diff --git a/commentaries/test_forms.py b/commentaries/test_forms.py
index 75d5a21df..0516fc3af 100644
--- a/commentaries/test_forms.py
+++ b/commentaries/test_forms.py
@@ -3,7 +3,7 @@ import re
 from django.test import TestCase
 
 from common.helpers import model_form_data
-from scipost.factories import UserFactory
+from scipost.factories import UserFactory, ContributorFactory
 
 from .factories import VettedCommentaryFactory, UnvettedCommentaryFactory, UnvettedArxivPreprintCommentaryFactory
 from .forms import RequestCommentaryForm, RequestPublishedArticleForm, VetCommentaryForm, DOIToQueryForm, \
@@ -15,6 +15,7 @@ from common.helpers.test import add_groups_and_permissions
 class TestArxivQueryForm(TestCase):
     def setUp(self):
         add_groups_and_permissions()
+        ContributorFactory.create_batch(5)
 
     def test_new_arxiv_identifier_is_valid(self):
         new_identifier_data = {'identifier': '1612.07611v1'}
@@ -58,6 +59,7 @@ class TestArxivQueryForm(TestCase):
 class TestDOIToQueryForm(TestCase):
     def setUp(self):
         add_groups_and_permissions()
+        ContributorFactory.create_batch(5)
 
     def test_invalid_doi_is_invalid(self):
         invalid_data = {'doi': 'blablab'}
@@ -96,6 +98,7 @@ class TestDOIToQueryForm(TestCase):
 class TestVetCommentaryForm(TestCase):
     def setUp(self):
         add_groups_and_permissions()
+        ContributorFactory.create_batch(5)
         self.commentary = UnvettedCommentaryFactory.create()
         self.user = UserFactory()
         self.form_data = {
@@ -158,6 +161,7 @@ class TestVetCommentaryForm(TestCase):
 class TestRequestPublishedArticleForm(TestCase):
     def setUp(self):
         add_groups_and_permissions()
+        ContributorFactory.create_batch(5)
         factory_instance = UnvettedCommentaryFactory.build()
         self.user = UserFactory()
         self.valid_form_data = model_form_data(factory_instance, RequestPublishedArticleForm)
@@ -184,6 +188,7 @@ class TestRequestPublishedArticleForm(TestCase):
 class TestRequestArxivPreprintForm(TestCase):
     def setUp(self):
         add_groups_and_permissions()
+        ContributorFactory.create_batch(5)
         factory_instance = UnvettedArxivPreprintCommentaryFactory.build()
         self.user = UserFactory()
         self.valid_form_data = model_form_data(factory_instance, RequestPublishedArticleForm)
diff --git a/commentaries/views.py b/commentaries/views.py
index acc1a785c..b8e6b6e98 100644
--- a/commentaries/views.py
+++ b/commentaries/views.py
@@ -31,6 +31,11 @@ def request_commentary(request):
 class RequestCommentary(CreateView):
     success_url = reverse_lazy('scipost:personal_page')
 
+    def get_form_kwargs(self):
+        kwargs = super().get_form_kwargs()
+        kwargs['requested_by'] = self.request.user.contributor
+        return kwargs
+
     def form_valid(self, form):
         messages.success(self.request, strings.acknowledge_request_commentary, fail_silently=True)
         return super().form_valid(form)
-- 
GitLab