MicroFish/backend/tests/test_story_store.py

48 lines
1.3 KiB
Python

import os
import tempfile
import pytest
from app.services.narrative.story_store import StoryStore
@pytest.fixture
def temp_sim_dir():
with tempfile.TemporaryDirectory() as d:
sim_dir = os.path.join(d, "sim_test123")
os.makedirs(sim_dir)
yield sim_dir
def test_save_and_load_story_beats(temp_sim_dir):
store = StoryStore(temp_sim_dir)
beat = {"round": 1, "prose": "Elena spoke.", "characters": ["elena"]}
store.append_beat(beat)
beats = store.get_all_beats()
assert len(beats) == 1
assert beats[0]["prose"] == "Elena spoke."
def test_translator_state_tracks_offset(temp_sim_dir):
store = StoryStore(temp_sim_dir)
assert store.get_file_offset("twitter") == 0
store.set_file_offset("twitter", 1024)
assert store.get_file_offset("twitter") == 1024
def test_get_beat_by_round(temp_sim_dir):
store = StoryStore(temp_sim_dir)
store.append_beat({"round": 1, "prose": "First"})
store.append_beat({"round": 2, "prose": "Second"})
beat = store.get_beat_by_round(2)
assert beat["prose"] == "Second"
def test_narrative_dir_created_on_first_write(temp_sim_dir):
store = StoryStore(temp_sim_dir)
store.append_beat({"round": 1, "prose": "test"})
narrative_dir = os.path.join(temp_sim_dir, "narrative")
assert os.path.isdir(narrative_dir)