CX Discovery Notebook
This commit is contained in:
52
studies/202607_CX_AI_Diagnostic/tests/test_export.py
Normal file
52
studies/202607_CX_AI_Diagnostic/tests/test_export.py
Normal file
@@ -0,0 +1,52 @@
|
||||
"""Export contracts — JSON round-trips, CSV shape pinned to the spec."""
|
||||
|
||||
from datetime import date
|
||||
|
||||
import pandas as pd
|
||||
|
||||
from diaglib import (
|
||||
CSV_COLUMNS,
|
||||
build_engagement,
|
||||
load_engagement,
|
||||
parse_participants,
|
||||
scores_dataframe,
|
||||
value_at_stake,
|
||||
write_exports,
|
||||
)
|
||||
|
||||
|
||||
def _engagement(config, baseline, scores):
|
||||
return build_engagement(
|
||||
config=config, client_name="Acme Demo Co", facilitator="Robert Helewka",
|
||||
workshop_date=date(2026, 7, 19),
|
||||
participants=parse_participants(
|
||||
"Jane Example | VP Customer Experience | cx; Sam Sample | Ops Director | ops"),
|
||||
baseline=baseline, scores=scores,
|
||||
computed_value=value_at_stake(config, baseline, scores))
|
||||
|
||||
|
||||
def test_write_exports_and_reload(config, baseline, scores, tmp_path):
|
||||
eng = _engagement(config, baseline, scores)
|
||||
json_path, csv_path = write_exports(eng, config, tmp_path)
|
||||
assert json_path.name == "acme_demo_co_2026-07-19.json"
|
||||
assert csv_path.name == "acme_demo_co_2026-07-19.csv"
|
||||
|
||||
# JSON is the source-of-truth artifact — it must round-trip losslessly.
|
||||
reloaded = load_engagement(json_path)
|
||||
assert reloaded == eng
|
||||
|
||||
df = pd.read_csv(csv_path)
|
||||
assert list(df.columns) == CSV_COLUMNS
|
||||
assert len(df) == 12
|
||||
|
||||
|
||||
def test_scores_dataframe_flags(config, baseline, scores):
|
||||
df = scores_dataframe(_engagement(config, baseline, scores), config)
|
||||
by_id = df.set_index("competency_id")
|
||||
assert bool(by_id.loc["data_readiness", "is_foundational"])
|
||||
assert bool(by_id.loc["data_readiness", "is_binding_constraint"])
|
||||
assert bool(by_id.loc["process_discovery", "is_foundational"])
|
||||
assert not bool(by_id.loc["process_discovery", "is_binding_constraint"])
|
||||
assert not bool(by_id.loc["automation_ai_strategy", "is_foundational"])
|
||||
assert (df["engagement_id"] == "acme_demo_co_2026-07-19").all()
|
||||
assert (df["industry"] == "contact_center").all()
|
||||
Reference in New Issue
Block a user