Files
wagtailcms/apps/core/tests.py
T

78 lines
2.8 KiB
Python

"""apps.core 基础单元测试:SEOablePage 抽象基类字段与公共 Block。"""
import pytest
from apps.core.blocks import FormBlock
from apps.core.models import SimpleContentPage
from apps.forms.models import FormDefinition, FormDefinitionField
pytestmark = pytest.mark.django_db
def test_seoable_page_fields_available_on_subclass(home_page):
"""SEOablePage 是抽象基类,其 SEO 字段应出现在具体子类(HomePage)上。"""
home_page.seo_title_override = "自定义标题"
home_page.seo_description_override = "自定义描述"
home_page.canonical_url = "https://example.com/"
home_page.schema_json = {"@type": "Organization"}
home_page.save()
home_page.refresh_from_db()
assert home_page.seo_title_override == "自定义标题"
assert home_page.seo_description_override == "自定义描述"
assert home_page.canonical_url == "https://example.com/"
assert home_page.schema_json == {"@type": "Organization"}
def test_form_block_api_representation_expands_fields():
"""FormBlock.get_api_representation 应展开 FormDefinition 及其子字段,
而不是仅返回 SnippetChooserBlock 默认的主键。"""
form_def = FormDefinition.objects.create(
name="联系我们",
submit_button_text="立即提交",
success_message="已收到您的信息",
)
FormDefinitionField.objects.create(
form=form_def,
label="姓名",
field_key="name",
field_type="text",
required=True,
)
FormDefinitionField.objects.create(
form=form_def,
label="意向",
field_key="interest",
field_type="select",
required=False,
choices="产品咨询, 合作洽谈",
)
block = FormBlock()
result = block.get_api_representation({"form": form_def})
assert result["form"]["id"] == form_def.pk
assert result["form"]["name"] == "联系我们"
assert result["form"]["submit_button_text"] == "立即提交"
assert len(result["form"]["fields"]) == 2
assert result["form"]["fields"][1]["choices"] == ["产品咨询", "合作洽谈"]
def test_form_block_api_representation_handles_empty_form():
block = FormBlock()
result = block.get_api_representation({"form": None})
assert result == {"form": None}
def test_simple_content_page_can_be_created_under_home(home_page):
"""隐私政策等法务页面应可作为 HomePage 的子页面创建,并保留富文本内容。"""
page = SimpleContentPage(
title="隐私政策",
slug="privacy-policy",
body="<p>我们重视您的个人信息保护。</p>",
)
home_page.add_child(instance=page)
page.refresh_from_db()
assert SimpleContentPage.objects.live().descendant_of(home_page).count() == 1
assert "个人信息保护" in page.body