Files
llm-trade-bot/tests/test_prompts.py
2026-09-19 16:25:19 +02:00

41 lines
1.4 KiB
Python

from pathlib import Path
import pytest
from llm_trade_bot.prompts import PromptError, PromptStore
def test_loads_named_markdown_sections(tmp_path: Path):
path = tmp_path / "prompts.md"
path.write_text(
"# Prompts\n\n## master_prompt\nMaster text.\n\n### Nested heading\nMore.\n\n## run_prompt\nRun text.\n",
encoding="utf-8",
)
prompts = PromptStore(path).load()
assert prompts.master_prompt == "Master text.\n\n### Nested heading\nMore."
assert prompts.run_prompt == "Run text."
def test_reloads_file_for_each_snapshot(tmp_path: Path):
path = tmp_path / "prompts.md"
path.write_text("## master_prompt\nFirst\n## run_prompt\nRun", encoding="utf-8")
store = PromptStore(path)
assert store.load().master_prompt == "First"
path.write_text("## master_prompt\nSecond\n## run_prompt\nRun", encoding="utf-8")
assert store.load().master_prompt == "Second"
@pytest.mark.parametrize(
"content, message",
[
("# no sections", "level-two sections"),
("## master_prompt\nMaster", "run_prompt"),
("## master_prompt\nOne\n## master_prompt\nTwo\n## run_prompt\nRun", "Duplicate"),
],
)
def test_rejects_invalid_prompt_files(tmp_path: Path, content: str, message: str):
path = tmp_path / "prompts.md"
path.write_text(content, encoding="utf-8")
with pytest.raises(PromptError, match=message):
PromptStore(path).load()