74 lines
2.6 KiB
Python
74 lines
2.6 KiB
Python
"""Tests for Phase 4.4 — Prompt template updates for per-sub-question pipeline.
|
|
|
|
Covers:
|
|
- generate template uses {context_sections} placeholder (not {context})
|
|
- Built-in fallback template uses {context_sections}
|
|
- reset_to_defaults() resets generate to the new template
|
|
"""
|
|
import os
|
|
import tempfile
|
|
|
|
import pytest
|
|
|
|
from app.core.sqlite_db import init_prompts_db, seed_default_profiles
|
|
from app.services.prompt_service import PromptService
|
|
|
|
|
|
@pytest.fixture
|
|
def prompt_service():
|
|
"""Create a PromptService backed by a temp DB with seeded profiles."""
|
|
db_dir = tempfile.mkdtemp()
|
|
db_path = os.path.join(db_dir, "test_prompts.db")
|
|
|
|
import sqlite3
|
|
conn = sqlite3.connect(db_path)
|
|
conn.row_factory = sqlite3.Row
|
|
init_prompts_db(conn)
|
|
seed_default_profiles(conn)
|
|
conn.close()
|
|
|
|
return PromptService(db_path=db_path)
|
|
|
|
|
|
def test_generate_template_uses_context_sections(prompt_service):
|
|
"""When PromptService returns the generate_per_subq template,
|
|
{context_sections} placeholder must be present."""
|
|
template = prompt_service.get_prompt_template("generate_per_subq")
|
|
|
|
assert "{context_sections}" in template
|
|
|
|
|
|
def test_builtin_generate_template_has_context_sections():
|
|
"""The per-subq seed template (_SEED_GENERATE_PER_SUBQ) uses
|
|
{context_sections}, while the flat generate uses {question}/{context}."""
|
|
from app.core.sqlite_db import _SEED_GENERATE_PER_SUBQ, _SEED_GENERATE
|
|
|
|
assert "{context_sections}" in _SEED_GENERATE_PER_SUBQ
|
|
assert "{question}" in _SEED_GENERATE
|
|
assert "{context}" in _SEED_GENERATE
|
|
|
|
|
|
def test_reset_to_defaults_includes_new_generate_template(prompt_service):
|
|
"""After calling reset_to_defaults(), generate_per_subq uses
|
|
{context_sections} and flat generate uses {question}/{context}."""
|
|
profile_name = prompt_service.get_active_profile_name()
|
|
|
|
# Modify both templates
|
|
prompt_service.update_prompt(profile_name, "generate_per_subq", "custom per-subq")
|
|
prompt_service.update_prompt(profile_name, "generate", "custom flat")
|
|
|
|
modified_per_subq = prompt_service.get_prompt_template("generate_per_subq")
|
|
assert "custom per-subq" == modified_per_subq
|
|
|
|
modified_flat = prompt_service.get_prompt_template("generate")
|
|
assert "custom flat" == modified_flat
|
|
|
|
prompt_service.reset_to_defaults(profile_name)
|
|
|
|
template_per_subq = prompt_service.get_prompt_template("generate_per_subq")
|
|
assert "{context_sections}" in template_per_subq
|
|
|
|
template_flat = prompt_service.get_prompt_template("generate")
|
|
assert "{question}" in template_flat
|
|
assert "{context}" in template_flat
|