48 lines
1.3 KiB
Python
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)
|