48 lines
1.3 KiB
Python
48 lines
1.3 KiB
Python
"""Goal schema 新字段(character_id / type / progress)的序列化与反序列化。"""
|
|
|
|
|
|
def test_goal_node_schema_has_new_fields():
|
|
from app.schemas.admin import GoalNode
|
|
|
|
node = GoalNode(
|
|
id="goal_test",
|
|
title="t",
|
|
description="d",
|
|
level="session",
|
|
status="active",
|
|
priority=50,
|
|
constraints=[],
|
|
success_criteria=[],
|
|
character_id="char_test",
|
|
type="mission",
|
|
progress=0.5,
|
|
)
|
|
assert node.character_id == "char_test"
|
|
assert node.type == "mission"
|
|
assert node.progress == 0.5
|
|
|
|
|
|
def test_create_goal_request_accepts_type():
|
|
from app.schemas.admin import CreateGoalRequest
|
|
|
|
req = CreateGoalRequest(title="t", level="task", type="exploration", character_id="char_xxx")
|
|
assert req.type == "exploration"
|
|
assert req.character_id == "char_xxx"
|
|
|
|
|
|
def test_update_goal_request_new_fields():
|
|
from app.schemas.admin import UpdateGoalRequest
|
|
|
|
req = UpdateGoalRequest(type="mission", progress=0.5)
|
|
assert req.type == "mission"
|
|
assert req.progress == 0.5
|
|
|
|
|
|
def test_update_goal_request_defaults():
|
|
from app.schemas.admin import UpdateGoalRequest
|
|
|
|
req = UpdateGoalRequest()
|
|
# 未设置的新字段应为 None(所有字段可选)
|
|
assert req.type is None
|
|
assert req.progress is None
|