| 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 | |