nns
|
f3d517f257
|
test(unit): xUnit-проект food-market.UnitTests, 23 теста (P1-20)
Чистая логика вынесена в Application для тестируемости и используется контроллерами:
- MovingAverageCost.Compute (скользящее среднее себестоимости) ← SuppliesController.Post
- RetailPaymentValidator.IsSufficient (достаточность оплаты) ← RetailSalesController.Post
Тесты:
- MovingAverageCost: первая приёмка, средневзвешенное, округление до 4 знаков, totalQty=0.
- RetailPaymentValidator: ровно/переплата/недоплата, округление до 2 знаков.
- StockService.ApplyMovement (SQLite in-memory): материализация Stock+движение,
инкремент, отрицательное списание, throw без tenant.
- Мультитенантный query-filter AppDbContext: tenant видит своё; чужой не видит;
SuperAdmin без override — всё; с override — только выбранную оргу.
Все 23 зелёные. EF8 SQLite поддерживает ToJson (EmployeeRole.Permissions).
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
|
2026-05-27 03:01:56 +05:00 |
|