taler-typescript-core

Wallet core logic and WebUIs for various components
Log | Files | Refs | Submodules | README | LICENSE

commit 7598ab40ce4c1c0299d92895fbde33fc1c63e4d0
parent 1fa6532137d4c4666baf0def8f5b8dfa88cae99b
Author: Florian Dold <florian@dold.me>
Date:   Tue,  7 Jul 2026 16:42:29 +0200

harness: test multiple input tokens

Diffstat:
Mpackages/taler-harness/src/integrationtests/test-wallet-tokens.ts | 77++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-
1 file changed, 76 insertions(+), 1 deletion(-)

diff --git a/packages/taler-harness/src/integrationtests/test-wallet-tokens.ts b/packages/taler-harness/src/integrationtests/test-wallet-tokens.ts @@ -161,6 +161,18 @@ export async function runWalletTokensTest(t: GlobalTestState) { }, ], }, + // Multiple inputs. + { + amount: "TESTKUDOS:0.5", + inputs: [ + { + type: OrderInputType.Token, + count: 3, + token_family_slug: "test_discount", + }, + ], + outputs: [], + }, ], }; @@ -590,7 +602,7 @@ export async function runWalletTokensTest(t: GlobalTestState) { ); } - // Multiple inputs/outputs for discount tokens. + // Multiple outputs for discount tokens. { const orderResp = succeedOrThrow( await merchantApi.createOrder(merchantAdminAccessToken, { @@ -652,6 +664,69 @@ export async function runWalletTokensTest(t: GlobalTestState) { t.assertDeepEqual(tokAfter.discounts[0].tokensAvailable, 5); } + + // Multiple inputs for discount tokens. + { + const orderResp = succeedOrThrow( + await merchantApi.createOrder(merchantAdminAccessToken, { + order: orderJsonDiscount, + }), + ); + + let orderStatus = succeedOrThrow( + await merchantApi.getOrderDetails( + merchantAdminAccessToken, + orderResp.order_id, + ), + ); + + t.assertTrue(orderStatus.order_status === "unpaid"); + + const talerPayUri = orderStatus.taler_pay_uri; + + const preparePayResult = await walletClient.call( + WalletApiOperation.PreparePayForUriV2, + { + talerPayUri, + }, + ); + + await walletClient.call(WalletApiOperation.TestingWaitTransactionState, { + transactionId: preparePayResult.transactionId, + txState: { + major: TransactionMajorState.Dialog, + minor: "*", + }, + }); + + const tokBefore = await walletClient.call( + WalletApiOperation.ListDiscounts, + {}, + ); + + console.log(`tokens before:`, j2s(tokBefore)); + + await walletClient.call(WalletApiOperation.ConfirmPay, { + transactionId: preparePayResult.transactionId, + choiceIndex: 3, + }); + + await walletClient.call(WalletApiOperation.TestingWaitTransactionState, { + transactionId: preparePayResult.transactionId, + txState: { + major: TransactionMajorState.Done, + }, + }); + + const tokAfter = await walletClient.call( + WalletApiOperation.ListDiscounts, + {}, + ); + + console.log(`tokens after:`, j2s(tokAfter)); + + t.assertDeepEqual(tokAfter.discounts[0].tokensAvailable, 2); + } } runWalletTokensTest.suites = ["merchant", "wallet"];