food-market/tests/food-market.UnitTests
nns 0d44cdabaf feat(inventory): модель МойСклада — инвентаризация не двигает остатки
Замечание владельца: инвентаризация стояла «Проведено» без оприходования/списания.
Переделано по МойСкладу (docs/inventory-moysklad-reference.md):

- InventoryStatus Draft→Completed (было Posted; значение 1 то же). Инвентаризация
  остатки НЕ двигает: endpoint complete замораживает строки без движений.
- create-enter (излишки diff>0) / create-loss (недостача diff<0) — создают черновики
  Оприходования/Списания со строками разницы + ссылка InventoryDocId. Повторно нельзя (409).
- Кнопки «Применить результаты» НЕТ (поправка Mac-Claude — не одобрено владельцем).
- unpost («вернуть в черновик») отменяет проведение и удаляет связанные документы.
- post/unpost — временная совместимость для мобильного «FM Склад» (post = завершить +
  создать и провести оба документа); помечено в docs/mobile-api.md.
- Enter/Loss: поле InventoryDocId (+ миграция Phase38) + в DTO «на основании инвентаризации №…».
- InventoryResult (application) — чистая разбивка diff→излишки/недостача (unit-тесты:
  разница/сумма/только посчитанные строки/округление).
- InventoryMigrationController (dry-run/apply): старые Posted+InventoryAdjustment →
  связанные проведённые документы переметкой движений (не задваивает), с проверкой
  неизменности остатков. Скрипт deploy/migrate-inventory-to-docs.sh (backup + запуск).
- Демо-сидеры: инвентаризации теперь Completed без прямых движений.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-08 20:34:05 +05:00
..
Support feat(audit): per-tenant журнал мутаций OrgAuditLog (P1-18) 2026-05-28 16:26:36 +05:00
AdvancedModeFilterTests.cs test(s29): unit (6) + integration (7) + e2e scenario для simple-mode (шаг 7/8) 2026-10-04 12:02:44 +05:00
ApiReferenceDocsJobTests.cs test: ApiReferenceDocsJob regex lock-down (Sprint 28) 2026-06-09 03:38:29 +05:00
CatalogDtosSmokeTests.cs test(s15): axe a11y + focus traps + unit coverage 80% + property tests + backup drill 2026-06-07 14:53:38 +05:00
ClaudeCliInvoiceExtractorParseTests.cs test(s31): unit 20/20 + integration 2/2 для invoice pipeline (7/8) 2026-10-04 21:46:10 +05:00
ClaudeCliInvoicePhotosParseTests.cs feat(invoices+inventory): порт улучшений 05.10.2026 из sklad 2026-10-06 00:02:13 +05:00
DomainFullPropertyTouchTests.cs test(s15): axe a11y + focus traps + unit coverage 80% + property tests + backup drill 2026-06-07 14:53:38 +05:00
DomainPocoSmokeTests.cs feat(inventory): модель МойСклада — инвентаризация не двигает остатки 2026-10-08 20:34:05 +05:00
EanTests.cs feat(invoices+inventory): порт улучшений 05.10.2026 из sklad 2026-10-06 00:02:13 +05:00
EmailTemplateRendererTests.cs feat(email): HTML-шаблоны MailKit + invite/weekly/low-stock джобы (P1-22) 2026-05-28 16:37:32 +05:00
FiscalMockProviderTests.cs feat(s11): ОФД-scaffolding — IFiscalProvider + 4 провайдера + UI/тесты 2026-06-07 02:27:17 +05:00
food-market.UnitTests.csproj feat(pos-core): логика кассы без UI + 37 unit-тестов 2026-10-08 04:58:22 +05:00
HousekeepingJobsTests.cs feat(hangfire): dashboard + scheduled cleanup джобы (P1-16) 2026-05-28 10:07:14 +05:00
InventoryResultTests.cs feat(inventory): модель МойСклада — инвентаризация не двигает остатки 2026-10-08 20:34:05 +05:00
InvoiceMatcherTests.cs test(s31): unit 20/20 + integration 2/2 для invoice pipeline (7/8) 2026-10-04 21:46:10 +05:00
InvoicePhotoRetentionTests.cs feat(invoices+inventory): порт улучшений 05.10.2026 из sklad 2026-10-06 00:02:13 +05:00
MediatrHandlerTests.cs feat(cqrs): MediatR partial — 3 handler-образца (TD-1) 2026-05-28 17:51:08 +05:00
MoneyMathTests.cs test(money): независимый инвариант остатка счёта (нач+платежи+смены) + unit/integration 2026-10-08 03:11:09 +05:00
MovingAverageCostTests.cs test(unit): xUnit-проект food-market.UnitTests, 23 теста (P1-20) 2026-05-27 03:01:56 +05:00
PagedRequestTests.cs test(s15): axe a11y + focus traps + unit coverage 80% + property tests + backup drill 2026-06-07 14:53:38 +05:00
PhoneNormalizationTests.cs test(s15): axe a11y + focus traps + unit coverage 80% + property tests + backup drill 2026-06-07 14:53:38 +05:00
PinHasherTests.cs feat(pos): быстрый вход кассира по PIN (grant_type=pin) + lockout 2026-10-08 09:38:36 +05:00
PosContractsTests.cs feat(pos-shared): контракты POS v1 в food-market.shared (P1-12a) 2026-05-28 12:03:04 +05:00
PosCoreTests.cs feat(pos): избранные товары (плитки) + переключатель тёмной темы 2026-10-08 13:35:56 +05:00
RequiredGuidTests.cs test(s15): axe a11y + focus traps + unit coverage 80% + property tests + backup drill 2026-06-07 14:53:38 +05:00
RetailPaymentValidatorTests.cs test(unit): xUnit-проект food-market.UnitTests, 23 теста (P1-20) 2026-05-27 03:01:56 +05:00
RolePermissionsTests.cs test(s15): axe a11y + focus traps + unit coverage 80% + property tests + backup drill 2026-06-07 14:53:38 +05:00
StockServicePropertyTests.cs test(s15): axe a11y + focus traps + unit coverage 80% + property tests + backup drill 2026-06-07 14:53:38 +05:00
StockServiceTests.cs test(unit): xUnit-проект food-market.UnitTests, 23 теста (P1-20) 2026-05-27 03:01:56 +05:00
TableReaderTests.cs feat(invoices+inventory): порт улучшений 05.10.2026 из sklad 2026-10-06 00:02:13 +05:00
TenantQueryFilterTests.cs test(unit): xUnit-проект food-market.UnitTests, 23 теста (P1-20) 2026-05-27 03:01:56 +05:00
ValidatorTests.cs feat(validation): FluentValidation + ValidationFilter для DTO (TD-2) 2026-05-28 17:40:46 +05:00
WebkassaProviderTests.cs feat(s11): ОФД-scaffolding — IFiscalProvider + 4 провайдера + UI/тесты 2026-06-07 02:27:17 +05:00
WeightedBarcodeTests.cs test(mobile-api): unit + integration доработок для «FM Склад» 2026-10-08 05:39:37 +05:00