Files
clickstream-data-platform/generator/tests/test_demo.py
T
ddadminandClaude Fable 5 0c466c082e docs(generator): путеводитель по генератору и живой проход make demo
- Зачем:
  - спека отвечает «почему», а жанра «как пройти устройство по коду»
    не было (#48); черновик в generator/README.md ждал выверки.
- Что:
  - новый набор docs/architecture/generator/: индекс с целевой картиной
    и mermaid-схемой плюс шесть поддокументов по темам тикета.
  - демо-модуль и цель make demo: канонический D0, все стадии цепочки
    на одном экране; тест-сторож проверяет стадии без прибитых чисел.
  - раздел «Как это работает» в generator/README.md сжат до ссылки
    на путеводитель, черновая врезка снята.
- Проверка:
  - из generator/: make lint, make typecheck, make test (430 passed),
    make demo; два слепых ревью и узкая перепроверка — находки закрыты.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-28 06:00:36 -04:00

33 lines
1.1 KiB
Python

"""Запускаемый путеводитель остается коротким и проходит всю цепочку."""
import subprocess
from pathlib import Path
def test_demo_runs_and_shows_the_whole_chain() -> None:
"""Сторожит команду и стадии, а числа мира оставляет описи."""
finished = subprocess.run(
["make", "--silent", "demo"],
check=False,
capture_output=True,
cwd=Path(__file__).parents[1],
text=True,
)
assert finished.returncode == 0, finished.stderr
lines = finished.stdout.splitlines()
assert [line.partition(":")[0] for line in lines] == [
"Зерно",
"Подпотоки D0",
"Когорта D0",
"Аудитория D0",
"Визиты по VisitID",
"Строки событий",
]
assert "когорты D-" in lines[3] and "...D0" in lines[3]
assert "строк в группе" in lines[4]
assert all(
label in lines[5]
for label in ("pageview", "add_to_cart", "purchase", "заказов")
)