from dream_customs.schema import DreamIntake, 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()