Модуль 9 · Урок 36
Decomposition, catalog pipeline і tests
Складна задача стає перевірюваною, коли кожний stage має один contract. Catalog core приймає values і повертає values; DOM, network, timers та storage не входять до нього, тому fixtures відтворюють defects без browser state.
Data flow як послідовність меж
Кожна function має одну причину змінюватися. View integration викликає core, але core не знає про document або UI. Це не заборона side effects назавжди — це boundary для тестованості.
Fixture-driven tests
| Fixture | Доводить |
|---|---|
| Normal | Expected business path |
| Empty | Zero state без exception |
| Invalid root/record | Failure policy |
| Boundary | Inclusive/exclusive invariant |
| Duplicate | Явну deterministic policy |
| Missing value | Required/default semantics |
Збережіть snapshot source до/після, але не плутайте JSON text comparison з універсальним deep equality. Evidence має відповідати конкретному dataset contract.
Лабораторна і review-проєкт 2
BookFlow Catalog Logic Lab
Реалізуйте contracts, заповніть traces і test matrix, доведіть source non-mutation.
Після тесту відкриється проєкт 2
Створіть оригінальну catalog logic з synthetic data, окремим core, fixtures і accessible responsive view. Review — 100 балів, прийняття від 80.
Офіційні джерела
Закріпіть матеріал уроку
Три сценарні питання. Для зарахування уроку потрібно дати щонайменше дві правильні відповіді.