- apps/solutions: SolutionIndexPage/SolutionPage (mirrors products/cases) - apps/home: HomePage.subpage_types now includes products/solutions/cases index pages (previously only blog, blocking admin page creation) - pytest.ini + conftest.py (root_page/home_page fixtures) - unit tests for core (SEOablePage, FormBlock API repr), products, cases, forms (lead submit API)
51 lines
1.4 KiB
Python
51 lines
1.4 KiB
Python
"""apps.cases 单元测试:页面树结构与列表排序。"""
|
|
import pytest
|
|
from django.utils import timezone
|
|
|
|
from apps.cases.models import CaseStudyIndexPage, CaseStudyPage
|
|
|
|
pytestmark = pytest.mark.django_db
|
|
|
|
|
|
@pytest.fixture
|
|
def case_index(home_page):
|
|
index = CaseStudyIndexPage(title="客户案例", slug="cases", intro="客户的成功案例")
|
|
home_page.add_child(instance=index)
|
|
return index
|
|
|
|
|
|
def test_case_study_page_can_be_created_under_index(case_index):
|
|
case = CaseStudyPage(
|
|
title="某集团数字化转型",
|
|
slug="some-group",
|
|
client_name="某集团",
|
|
industry="制造业",
|
|
published_at=timezone.now(),
|
|
)
|
|
case_index.add_child(instance=case)
|
|
|
|
assert CaseStudyPage.objects.live().descendant_of(case_index).count() == 1
|
|
|
|
|
|
def test_case_index_context_orders_by_published_at_desc(case_index):
|
|
older = CaseStudyPage(
|
|
title="案例一",
|
|
slug="case-1",
|
|
client_name="客户一",
|
|
published_at=timezone.now() - timezone.timedelta(days=10),
|
|
)
|
|
case_index.add_child(instance=older)
|
|
|
|
newer = CaseStudyPage(
|
|
title="案例二",
|
|
slug="case-2",
|
|
client_name="客户二",
|
|
published_at=timezone.now(),
|
|
)
|
|
case_index.add_child(instance=newer)
|
|
|
|
context = case_index.get_context(request=None)
|
|
titles = [c.title for c in context["case_studies"]]
|
|
|
|
assert titles == ["案例二", "案例一"]
|