Files

3.3 KiB

Фаза 25. Золотые файлы и мелкие долги

Зависимости

Нет. Можно вести параллельно с 22–24.

Зачем

Две регрессии сейчас ловятся только глазами: молчаливая смена генерации людей и сейв, который перестал грузиться после нового поля. Обе дешёвы в защите и дороги в разборе постфактум.

Задачи

  • Отпечаток ростера файлом в фикстурах: фиксированные сид, карта, набор имён и родной язык
  • Тест печатает первую несовпавшую строку, а не «строки различаются»
  • Правило записано рядом с фикстурой: отпечаток обновляется в том же коммите, что и генерация, и коммит объясняет, что поменялось
  • Файл сейва текущего формата в фикстурах хоста; тест поднимает из него школу
  • Рядом с ним — файл сейва без новых полей, чтобы «отсутствующее поле имеет разумное значение» проверялось, а не подразумевалось
  • Форма голодного дня закрепляется тестом: приходят сытыми, к своей смене около 0.4, уходят голодными, к утру снова полны. Числа подобраны замером и сейчас ничем не защищены
  • uncovered в staffing говорит, скольких учителей не хватает предмету
  • Клиент показывает это число в списке непокрытых, через t(...)

Тесты, без которых фаза не закрыта

  • Отпечаток ростера совпадает с файлом
  • Школа поднимается из сохранённого файла: те же люди, то же время, тот же штат
  • Сейв без поля родного языка грузится и не перетасовывает набор
  • Кривая голода за учебный день держится в заявленных границах
  • PrimarySchool на ванильной карте требует трёх учителей, и ответ это говорит
  • Назначение второго учителя уменьшает нехватку, но не закрывает её

Критерий готовности

  • Изменить порядок бросков в генераторе — золотой тест краснеет
  • Добавить поле в сейв — старый файл по-прежнему грузится
  • dotnet test и клиентские npm test / run build проходят

Стоп

Не превращать золотой файл в снимок всего мира: отпечаток должен читаться человеком.