diff --git a/tests/unit/domain/test_edit_template.py b/tests/unit/domain/test_edit_template.py index de5a4c31a..5d4609ba5 100755 --- a/tests/unit/domain/test_edit_template.py +++ b/tests/unit/domain/test_edit_template.py @@ -4,6 +4,7 @@ from datetime import datetime, timezone import pytest from domain.edit_template import EditTemplate, EditTemplateStatus +from domain.editing_mode import EditingMode # ── EditTemplateStatus 枚举 ────────────────────────────────────────────────── @@ -212,8 +213,8 @@ class TestEditTemplateBasics: with pytest.raises(AttributeError): t.nonexistent_field = "value" - def test_direct_construction(self): - # 可以直接构造(绕过 create 的校验) + def test_direct_construction_minimal(self): + # 最小构造:仅必填字段 + 状态,其余走默认值 t = EditTemplate( id="custom_id", name="直接构造", @@ -221,6 +222,44 @@ class TestEditTemplateBasics: ) assert t.id == "custom_id" assert t.name == "直接构造" + assert t.status == EditTemplateStatus.ACTIVE + # 默认值检查 + assert t.description == "" + assert t.config == {} + assert t.version == 1 + assert t.editing_mode == EditingMode.ONE_TAKE.value + assert isinstance(t.created_at, datetime) + assert isinstance(t.updated_at, datetime) + + def test_direct_construction_full(self): + # 完整构造:所有字段都传 + now = datetime(2025, 1, 1, tzinfo=timezone.utc) + t = EditTemplate( + id="full_id", + name="完整构造", + description="测试描述", + template_type="custom", + editing_mode=EditingMode.PIP.value, + config={"key": "value"}, + preview_url="https://example.com/preview.jpg", + sort_weight=100, + status=EditTemplateStatus.INACTIVE, + version=3, + created_at=now, + updated_at=now, + ) + assert t.id == "full_id" + assert t.name == "完整构造" + assert t.description == "测试描述" + assert t.template_type == "custom" + assert t.editing_mode == EditingMode.PIP.value + assert t.config == {"key": "value"} + assert t.preview_url == "https://example.com/preview.jpg" + assert t.sort_weight == 100 + assert t.status == EditTemplateStatus.INACTIVE + assert t.version == 3 + assert t.created_at == now + assert t.updated_at == now def test_config_is_independent(self): # 不同实例的 config 应该是独立的 dict