From e988a7dbbcfa4ae4be6733335cace1d5908b88a8 Mon Sep 17 00:00:00 2001 From: nns Date: Wed, 27 May 2026 03:02:06 +0500 Subject: [PATCH] docs(sprint1): P1-20 done Co-Authored-By: Claude Opus 4.7 --- docs/sprint1-progress.md | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/docs/sprint1-progress.md b/docs/sprint1-progress.md index 08ba36f..8755e69 100644 --- a/docs/sprint1-progress.md +++ b/docs/sprint1-progress.md @@ -45,9 +45,12 @@ `OpenIddict__Issuer`/`CertPassword` в compose. `compose config` валиден. 7. [x] **P0-9** — `docs/release-checklist.md`. ✅ Пред/во время/после выкатки + откат + прод; ссылки на secrets/backup/openiddict/stage-setup. -8. [ ] **P1-20 Unit-тесты** — `tests/food-market.UnitTests`: `StockService.ApplyMovement`, +8. [x] **P1-20 Unit-тесты** — `tests/food-market.UnitTests`: `StockService.ApplyMovement`, расчёт Cost в `SuppliesController.Post`, валидация платежа `RetailSalesController.Post`, multi-tenant query filter. + ✅ 23 теста зелёные. Чистая логика вынесена в Application (`MovingAverageCost`, + `RetailPaymentValidator`) и используется контроллерами. StockService + query-filter на + SQLite in-memory (EF8 поддерживает `ToJson`). `FakeTenantContext`, `SqliteDb` helper. 9. [ ] **P1-21 Integration-тесты** — Testcontainers.PostgreSql + WebApplicationFactory: signup-flow, supply post→unpost, retail overselling, tenant isolation A vs B, permission-проверки.