Files
daily-journal-prompt/test_end_to_end.py
2026-01-02 19:39:02 -07:00

83 lines
3.1 KiB
Python

#!/usr/bin/env python3
"""
End-to-end test to verify prompts are stored as simple strings without keys.
"""
import json
import sys
import os
# Add the current directory to the Python path
sys.path.insert(0, os.path.dirname(os.path.abspath(__file__)))
from generate_prompts import JournalPromptGenerator
def test_end_to_end():
"""Test the complete flow from parsing to pool management."""
print("Testing end-to-end flow...")
print("="*60)
# Create a generator instance
generator = JournalPromptGenerator(config_path=".env")
# Clear the pool first
generator.pool_prompts = []
generator._save_pool_prompts()
# Test 1: Simulate AI response (JSON list format)
print("\n1. Simulating AI response (JSON list format)...")
mock_ai_response = json.dumps([
"Write about a childhood memory that still makes you smile.",
"Describe your perfect day from start to finish.",
"What is something you've been putting off and why?",
"Imagine you could have a conversation with any historical figure."
])
# Parse the response
parsed_prompts = generator._parse_ai_response(mock_ai_response)
print(f" Parsed {len(parsed_prompts)} prompts")
print(f" All prompts are strings: {all(isinstance(p, str) for p in parsed_prompts)}")
print(f" No prompts have keys: {all(not isinstance(p, dict) for p in parsed_prompts)}")
# Test 2: Add to pool
print("\n2. Adding prompts to pool...")
generator.add_prompts_to_pool(parsed_prompts)
print(f" Pool now has {len(generator.pool_prompts)} prompts")
print(f" All pool prompts are strings: {all(isinstance(p, str) for p in generator.pool_prompts)}")
# Test 3: Draw from pool
print("\n3. Drawing prompts from pool...")
drawn_prompts = generator.draw_prompts_from_pool(count=2)
print(f" Drew {len(drawn_prompts)} prompts")
print(f" Drawn prompts are strings: {all(isinstance(p, str) for p in drawn_prompts)}")
print(f" Pool now has {len(generator.pool_prompts)} prompts remaining")
# Test 4: Save and load pool
print("\n4. Testing pool persistence...")
# Save current pool
generator._save_pool_prompts()
# Create a new generator instance to load the pool
generator2 = JournalPromptGenerator(config_path=".env")
print(f" New instance loaded {len(generator2.pool_prompts)} prompts from pool_prompts.json")
print(f" Loaded prompts are strings: {all(isinstance(p, str) for p in generator2.pool_prompts)}")
# Test 5: Check pool_prompts.json content
print("\n5. Checking pool_prompts.json file content...")
with open("pool_prompts.json", "r") as f:
pool_content = json.load(f)
print(f" File contains {len(pool_content)} items")
print(f" First item type: {type(pool_content[0])}")
print(f" First item is string: {isinstance(pool_content[0], str)}")
print(f" First item value: {pool_content[0][:50]}...")
print("\n" + "="*60)
print("✅ All tests passed! Prompts are stored as simple strings without keys.")
print("="*60)
return True
if __name__ == "__main__":
test_end_to_end()