dream-customs / tests /test_schema.py
ADJCJH's picture
Deploy Dream Customs workbench UI (#5)
8ad6f00
Raw
History Blame
1.89 kB
from dream_customs.schema import CustomsSession, DreamIntake, EvidenceItem, PactCard
def test_dream_intake_defaults_lists():
intake = DreamIntake(dream_text="I missed an elevator.")
assert intake.dream_text == "I missed an elevator."
assert intake.visual_clues == []
assert intake.recurring_symbols == []
def test_dream_intake_merged_text_includes_modalities():
intake = DreamIntake(
dream_text="I missed an elevator.",
voice_transcript="The buttons melted.",
visual_clues=["blue hallway"],
mood="anxious",
recurring_symbols=["elevator"],
user_context="I slept badly.",
)
merged = intake.merged_text()
assert "I missed an elevator." in merged
assert "The buttons melted." in merged
assert "blue hallway" in merged
assert "Mood: anxious" in merged
def test_pact_card_requires_core_fields():
card = PactCard(
visitor_name="Late Elevator",
permit_id="DC-0001",
contraband=["unfiled anxiety"],
risk_level="orange",
alliance_reading="The dream asks for a smaller start.",
practical_suggestion="Open one task ten minutes early.",
weird_task="Write the elevator an apology note.",
bedtime_release="Today the elevator has docked.",
)
assert card.safety_note == ""
assert "Late Elevator" in card.to_plain_text()
def test_customs_session_defaults_to_empty_workbench():
session = CustomsSession()
assert session.phase == "empty"
assert session.evidence_items == []
assert session.question_history == []
assert session.evidence_count() == 0
def test_evidence_item_tracks_failure_state():
item = EvidenceItem(type="image", label="Image evidence", status="failed", error="No clues extracted")
assert item.type == "image"
assert item.status == "failed"
assert "No clues" in item.error