test(dreamer): cover partially grounded contradiction

This commit is contained in:
Shixi Li 2026-07-28 11:59:21 +08:00 committed by shixi-li
parent 953849b542
commit 2131e6d338
1 changed files with 42 additions and 0 deletions

View File

@ -391,6 +391,48 @@ class TestCreateObservations:
assert doc is not None
assert doc.source_ids == [real_id]
async def test_contradiction_rejected_when_only_one_real_source_remains(
self,
db_session: AsyncSession,
tool_test_data: Any,
make_tool_context: Callable[..., ToolContext],
):
"""A contradiction must still have two real sources after fabricated
source IDs are removed."""
*_, documents = tool_test_data
real_id = documents[0].id
ctx = make_tool_context(current_messages=None)
result = await _handle_create_observations(
ctx,
{
"observations": [
{
"content": "Conflicting claims with one invented citation",
"level": "contradiction",
"source_ids": [
real_id,
"fabricated-id-that-does-not-exist",
],
"sources": [
"The user said they prefer tea",
"The user said they prefer coffee",
],
},
]
},
)
assert "Created 0 observations" in result
assert "Failed 1" in result
assert "requires at least 2 real source(s)" in str(result)
stmt = select(models.Document).where(
models.Document.content == "Conflicting claims with one invented citation"
)
doc = (await db_session.execute(stmt)).scalar_one_or_none()
assert doc is None
async def test_mixed_batch_keeps_grounded_rejects_ungrounded(
self,
db_session: AsyncSession,