From c200a834ebbf20dab8c52bd1740ab717703878f6 Mon Sep 17 00:00:00 2001 From: coopops Date: Mon, 15 Jun 2026 12:04:28 +0000 Subject: [PATCH] =?UTF-8?q?[C28-67][@ant]=20fix:=20spec=20=D0=B0=D0=B4?= =?UTF-8?q?=D0=B0=D0=BF=D1=82=D0=B5=D1=80=D0=B0=20=D1=80=D0=B0=D1=81=D1=85?= =?UTF-8?q?=D0=BE=D0=B4=D0=BE=D0=B2=20=E2=80=94=20=D1=83=D0=B1=D1=80=D0=B0?= =?UTF-8?q?=D0=BD=D1=8B=20=D1=81=D1=82=D0=B5=D0=B9=D0=BB-=D0=BA=D0=B5?= =?UTF-8?q?=D0=B9=D1=81=D1=8B=20authExp/declineExp?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Контроллерный tsc --noEmit (CI) падал: spec тестировал adapter.authExp / adapter.declineExp, которых нет в ExpensesBlockchainAdapter по дизайну. authexp/declexp исполняет контракт soviet как callbacks решения совета — backend-адаптер несёт только 6 прямых actions (createexp/payexp/reportexp/ returnexp/overspendexp/closeexp). Зафиксировано в port, mutations-service и комментарии адаптера. Прав код — приводим тест к дизайну, удаляя два кейса. Co-Authored-By: Claude Opus 4.8 (1M context) --- .../adapters/expenses-blockchain.adapter.spec.ts | 15 ++------------- 1 file changed, 2 insertions(+), 13 deletions(-) diff --git a/components/controller/src/extensions/expenses/infrastructure/blockchain/adapters/expenses-blockchain.adapter.spec.ts b/components/controller/src/extensions/expenses/infrastructure/blockchain/adapters/expenses-blockchain.adapter.spec.ts index 33eeb2fcfc0..5ab8b4ce9ab 100644 --- a/components/controller/src/extensions/expenses/infrastructure/blockchain/adapters/expenses-blockchain.adapter.spec.ts +++ b/components/controller/src/extensions/expenses/infrastructure/blockchain/adapters/expenses-blockchain.adapter.spec.ts @@ -67,14 +67,8 @@ describe('ExpensesBlockchainAdapter', () => { assertTransactShape(ExpenseContract.Actions.CreateExp.actionName) }) - it('authExp → transact(expense, authexp, ...)', async () => { - await adapter.authExp({ - coopname, - proposal_hash: '0xabc', - decision: fakeDoc2, - }) - assertTransactShape(ExpenseContract.Actions.AuthExp.actionName) - }) + // authexp/declexp исполняет контракт soviet как callbacks решения совета — + // в backend-адаптере их нет по дизайну (см. expenses-blockchain.port.ts). it('payExp → transact(expense, payexp, [{coopname, active}])', async () => { await adapter.payExp({ @@ -116,11 +110,6 @@ describe('ExpensesBlockchainAdapter', () => { assertTransactShape(ExpenseContract.Actions.CloseExp.actionName) }) - it('declineExp → transact(expense, declexp, ...)', async () => { - await adapter.declineExp({ coopname, proposal_hash: '0xabc', reason: 'нет' }) - assertTransactShape(ExpenseContract.Actions.DeclineExp.actionName) - }) - it('бросает 502, если vault не отдал ключ', async () => { vault.getWif.mockResolvedValueOnce(null) await expect(adapter.closeExp({ coopname, proposal_hash: '0xabc' })).rejects.toThrow(