fix(generator): исправлен расчёт скидки после складской дельты
- Зачем: - слепок D7 содержал отрицательный итог заказа и попадал в брак ODS. - Что: - скидка пересчитана от корзины после удаления отсутствующей позиции. - сериализатор отклоняет отрицательные деньги через ValueError. - добавлены проверки восьми стартовых дней и обновлена опись мира. - Проверка: - make lint, make typecheck и make test в generator/. - живой world_next_day: 1694 строки приняты, таблица ошибок пуста.
This commit is contained in:
@@ -26,6 +26,7 @@ import re
|
||||
import subprocess
|
||||
import sys
|
||||
from contextlib import closing
|
||||
from dataclasses import replace
|
||||
from datetime import UTC, date, datetime, time, timedelta
|
||||
from decimal import Decimal
|
||||
|
||||
@@ -130,6 +131,16 @@ def test_the_record_matches_the_wire_contract(days: list[day_module.Day]):
|
||||
assert record["created_at"][:19] + "Z" == bought[record["order_id"]]
|
||||
|
||||
|
||||
def test_negative_money_does_not_leave_the_source(days: list[day_module.Day]):
|
||||
"""Сериализатор отвергает деньги, которых контракт провода не допускает."""
|
||||
honest = days[0].orders
|
||||
total = honest.total.copy()
|
||||
total[0] = -1
|
||||
|
||||
with pytest.raises(ValueError):
|
||||
serialize.orders([replace(honest, total=total)], honest.day)
|
||||
|
||||
|
||||
def test_the_moments_carry_real_milliseconds(days: list[day_module.Day]):
|
||||
"""Миллисекунды — часы базы источника, а не три дописанных нуля.
|
||||
|
||||
|
||||
Reference in New Issue
Block a user