fix: name assignee_child_ids in child validation errors (NQ67-ERR-001)
This commit is contained in:
@@ -200,15 +200,25 @@ async def create_quest_definition(
|
||||
|
||||
storage = schedule_rule_to_storage(rule)
|
||||
dao = QuestDefinitionsDao(database)
|
||||
snapshot = await dao.create_with_rule_and_windows(
|
||||
name,
|
||||
storage,
|
||||
_now_stamp(),
|
||||
assignee_ids,
|
||||
window_specs,
|
||||
description=description_value,
|
||||
icon=icon_value,
|
||||
)
|
||||
try:
|
||||
snapshot = await dao.create_with_rule_and_windows(
|
||||
name,
|
||||
storage,
|
||||
_now_stamp(),
|
||||
assignee_ids,
|
||||
window_specs,
|
||||
description=description_value,
|
||||
icon=icon_value,
|
||||
)
|
||||
except ValueError as error:
|
||||
# The DAO's assignee check names only the child; re-raise so the
|
||||
# public contract names the field the caller actually passed.
|
||||
message = str(error)
|
||||
if message.startswith("child "):
|
||||
raise ValueError(
|
||||
f"assignee_child_ids: {message}"
|
||||
) from error
|
||||
raise
|
||||
decoded_rule = schedule_rule_from_storage(storage)
|
||||
return CreatedQuestDefinition(
|
||||
definition=snapshot.definition,
|
||||
|
||||
@@ -249,7 +249,9 @@ def test_create_rejects_inactive_child(tmp_path) -> None:
|
||||
async def _body(database, children, rules, definitions, child):
|
||||
inactive = await children.create("Bo", NOW)
|
||||
await children.set_active(inactive.id, False)
|
||||
with pytest.raises(ValueError, match="inactive"):
|
||||
with pytest.raises(
|
||||
ValueError, match="assignee_child_ids.*inactive"
|
||||
):
|
||||
await create_quest_definition(
|
||||
database,
|
||||
"Brush teeth",
|
||||
@@ -264,7 +266,9 @@ def test_create_rejects_inactive_child(tmp_path) -> None:
|
||||
|
||||
def test_create_rejects_unknown_child(tmp_path) -> None:
|
||||
async def _body(database, children, rules, definitions, child):
|
||||
with pytest.raises(ValueError, match="does not exist"):
|
||||
with pytest.raises(
|
||||
ValueError, match="assignee_child_ids.*does not exist"
|
||||
):
|
||||
await create_quest_definition(
|
||||
database, "Brush teeth", _daily_rule(), [999], ["morning"]
|
||||
)
|
||||
|
||||
Reference in New Issue
Block a user