Files
sales-trainer/backend/tests/test_no_append_generation.py

62 lines
2.3 KiB
Python

"""The group generator has one deterministic auto-15 path."""
from __future__ import annotations
from scripts.mock_llm import MockLLM
def _headers(token: str) -> dict[str, str]:
return {"Authorization": f"Bearer {token}"}
def _setup(user_store, login):
user_store.complete_setup(
"admin",
"admin@example.com",
"admin-ready-password",
accepted_terms=True,
accepted_terms_at="2026-08-13T00:00:00Z",
)
return login("admin", "admin-ready-password")["token"]
def test_append_generation_is_rejected_and_does_not_mutate_group(client, user_store, login):
token = _setup(user_store, login)
client.application.extensions["llm"] = MockLLM()
created = client.post(
"/api/groups", json={"product": "CRM"}, headers=_headers(token)
)
gid = created.get_json()["group"]["id"]
first = client.post(f"/api/groups/{gid}/analyze", headers=_headers(token))
assert first.status_code == 200, first.get_json()
before = client.application.extensions["group_store"].get(gid)
response = client.post(
f"/api/groups/{gid}/analyze?append=true", headers=_headers(token)
)
assert response.status_code == 400
assert response.get_json() == {"error": "append mode is no longer supported"}
after = client.application.extensions["group_store"].get(gid)
assert after["personas"] == before["personas"]
assert len(after["personas"]) == 15
def test_reanalyze_replaces_with_exactly_fifteen_personas(client, user_store, login):
token = _setup(user_store, login)
client.application.extensions["llm"] = MockLLM()
created = client.post(
"/api/groups", json={"product": "CRM"}, headers=_headers(token)
)
gid = created.get_json()["group"]["id"]
assert client.post(f"/api/groups/{gid}/analyze", headers=_headers(token)).status_code == 200
first_ids = {p["id"] for p in client.application.extensions["group_store"].get(gid)["personas"]}
response = client.post(f"/api/groups/{gid}/reanalyze", headers=_headers(token))
assert response.status_code == 200, response.get_json()
personas = response.get_json()["personas"]
assert len(personas) == 15
assert len({p["id"] for p in personas}) == 15
assert {p["tier"] for p in personas} == {"A", "B", "C"}
assert {p["id"] for p in personas} == first_ids