feat: add people to projects and articles
This commit is contained in:
@@ -1,7 +1,10 @@
|
||||
from django.test import TestCase
|
||||
from django.urls import reverse
|
||||
|
||||
from apps.products.models import Article, ArticleSection, MainProduct, SubProduct
|
||||
from apps.products.models import (
|
||||
Article, ArticlePerson, ArticleSection, MainProduct, MainProductPerson,
|
||||
SubProduct, SubProductPerson,
|
||||
)
|
||||
|
||||
|
||||
class ProductViewsSetup(TestCase):
|
||||
@@ -56,6 +59,31 @@ class ProductOverviewViewTest(ProductViewsSetup):
|
||||
|
||||
|
||||
class MainProductDetailViewTest(ProductViewsSetup):
|
||||
def test_project_and_article_people_are_independent_and_ordered(self):
|
||||
MainProductPerson.objects.create(main_product=self.main_product, name="Main collaborator", role="Collaborator", order=1)
|
||||
MainProductPerson.objects.create(main_product=self.main_product, name="Main organizer", role="Organizer", order=9)
|
||||
main_article = Article.objects.create(main_product=self.main_product, title="Main article", description="Text")
|
||||
ArticlePerson.objects.create(article=main_article, name="Article advisor", role="Scientific advisor", order=0)
|
||||
response = self.client.get(self.main_product.get_absolute_url())
|
||||
html = response.content.decode()
|
||||
self.assertLess(html.index("Main organizer"), html.index("Main collaborator"))
|
||||
self.assertContains(response, "Article advisor")
|
||||
self.assertNotContains(response, "Sub collaborator")
|
||||
self.assertContains(response, f'id="article-{main_article.pk}-people"')
|
||||
|
||||
def test_people_section_is_hidden_until_created_and_read_more_is_optional(self):
|
||||
response = self.client.get(self.main_product.get_absolute_url())
|
||||
self.assertNotContains(response, 'id="main-project-people"')
|
||||
person = MainProductPerson.objects.create(
|
||||
main_product=self.main_product, name="Project leader", description="A long biography",
|
||||
)
|
||||
response = self.client.get(self.main_product.get_absolute_url())
|
||||
self.assertContains(response, "Project leader")
|
||||
self.assertNotContains(response, 'data-readmore="88"')
|
||||
person.read_more_description = True
|
||||
person.save(update_fields=["read_more_description"])
|
||||
self.assertContains(self.client.get(self.main_product.get_absolute_url()), 'data-readmore="88"')
|
||||
|
||||
def test_read_more_can_be_set_per_article_and_section(self):
|
||||
url = self.main_product.get_absolute_url()
|
||||
article = Article.objects.create(main_product=self.main_product, title="Notes", description="Long notes")
|
||||
@@ -112,6 +140,15 @@ class MainProductDetailViewTest(ProductViewsSetup):
|
||||
|
||||
|
||||
class SubProductDetailViewTest(ProductViewsSetup):
|
||||
def test_sub_project_and_article_people_render_separately(self):
|
||||
SubProductPerson.objects.create(sub_product=self.sub_product, name="Sub organizer", role="Organizer")
|
||||
ArticlePerson.objects.create(article=self.article, name="Article collaborator", role="Collaborator")
|
||||
response = self.client.get(self.sub_product.get_absolute_url())
|
||||
self.assertContains(response, "Sub organizer")
|
||||
self.assertContains(response, "Article collaborator")
|
||||
self.assertContains(response, 'id="sub-project-people"')
|
||||
self.assertNotContains(self.client.get(self.main_product.get_absolute_url()), "Sub organizer")
|
||||
|
||||
def test_sub_detail_returns_200(self):
|
||||
url = reverse(
|
||||
"products:sub_product_detail",
|
||||
|
||||
Reference in New Issue
Block a user