- 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)
35 lines
1.1 KiB
Python
35 lines
1.1 KiB
Python
"""apps.products 单元测试:页面树结构与列表上下文。"""
|
|
import pytest
|
|
|
|
from apps.products.models import ProductIndexPage, ProductPage
|
|
|
|
pytestmark = pytest.mark.django_db
|
|
|
|
|
|
@pytest.fixture
|
|
def product_index(home_page):
|
|
index = ProductIndexPage(title="产品", slug="products", intro="我们的产品")
|
|
home_page.add_child(instance=index)
|
|
return index
|
|
|
|
|
|
def test_product_page_can_be_created_under_index(product_index):
|
|
product = ProductPage(title="产品 A", slug="product-a", summary="简介 A")
|
|
product_index.add_child(instance=product)
|
|
|
|
assert ProductPage.objects.live().descendant_of(product_index).count() == 1
|
|
|
|
|
|
def test_product_index_context_lists_live_products_only(product_index):
|
|
live_product = ProductPage(title="产品 A", slug="product-a")
|
|
product_index.add_child(instance=live_product)
|
|
|
|
draft_product = ProductPage(title="产品 B", slug="product-b", live=False)
|
|
product_index.add_child(instance=draft_product)
|
|
|
|
context = product_index.get_context(request=None)
|
|
titles = [p.title for p in context["products"]]
|
|
|
|
assert "产品 A" in titles
|
|
assert "产品 B" not in titles
|