commit dda8a59cc86a472481dbd629e1afa7154c9367b8
parent 0c49f67ac33963fbbb03929d671ed4086b8e9bcc
Author: Florian Dold <florian@dold.me>
Date: Mon, 7 Oct 2024 11:25:51 +0200
wallet-core: add missing await, fix test
Diffstat:
2 files changed, 59 insertions(+), 10 deletions(-)
diff --git a/packages/taler-harness/src/integrationtests/test-wallet-transactions.ts b/packages/taler-harness/src/integrationtests/test-wallet-transactions.ts
@@ -17,14 +17,19 @@
/**
* Imports.
*/
-import { TalerMerchantApi } from "@gnu-taler/taler-util";
+import {
+ AbsoluteTime,
+ Duration,
+ j2s,
+ TalerMerchantApi,
+} from "@gnu-taler/taler-util";
import { WalletApiOperation } from "@gnu-taler/taler-wallet-core";
-import { GlobalTestState } from "../harness/harness.js";
import {
makeTestPaymentV2,
useSharedTestkudosEnvironment,
withdrawViaBankV2,
} from "../harness/environments.js";
+import { GlobalTestState } from "../harness/harness.js";
export async function runWalletTransactionsTest(t: GlobalTestState) {
// Set up test environment
@@ -60,7 +65,7 @@ export async function runWalletTransactionsTest(t: GlobalTestState) {
}
const order = {
- summary: "Buy me!",
+ summary: "Buy me! First.",
amount: "TESTKUDOS:5",
fulfillment_url: "taler://fulfillment-success/thx",
} satisfies TalerMerchantApi.Order;
@@ -68,18 +73,36 @@ export async function runWalletTransactionsTest(t: GlobalTestState) {
await walletClient.call(WalletApiOperation.TestingWaitTransactionsFinal, {});
const order2 = {
- summary: "Buy me, Too",
+ summary: "Buy me! Second.",
amount: "TESTKUDOS:3",
fulfillment_url: "taler://fulfillment-success/thx",
} satisfies TalerMerchantApi.Order;
- await makeTestPaymentV2(t, { walletClient, merchant, order });
+ await makeTestPaymentV2(t, { walletClient, merchant, order: order2 });
await walletClient.call(WalletApiOperation.TestingWaitTransactionsFinal, {});
+ await walletClient.call(WalletApiOperation.InitiatePeerPushDebit, {
+ partialContractTerms: {
+ amount: "TESTKUDOS:5",
+ purse_expiration: AbsoluteTime.toProtocolTimestamp(
+ AbsoluteTime.addDuration(
+ AbsoluteTime.now(),
+ Duration.fromSpec({
+ minutes: 10,
+ }),
+ ),
+ ),
+ summary: "Test",
+ },
+ });
+
{
const txRes = await walletClient.call(
WalletApiOperation.GetTransactionsV2,
{},
);
+
+ console.log(`all transactions: ${j2s(txRes.transactions)}`);
+
t.assertDeepEqual(txRes.transactions.length, 4);
const txResSp1 = await walletClient.call(
@@ -88,17 +111,37 @@ export async function runWalletTransactionsTest(t: GlobalTestState) {
limit: 2,
},
);
+
+ console.log(`transactions (limit=2): ${j2s(txResSp1.transactions)}`);
+
+ t.assertDeepEqual(txResSp1.transactions.length, 2);
+
+ const offset = txResSp1.transactions[1].transactionId;
const txResSp2 = await walletClient.call(
WalletApiOperation.GetTransactionsV2,
{
- offsetTransactionId: txResSp1.transactions[1].transactionId,
+ offsetTransactionId: offset,
},
);
- t.assertDeepEqual(
- [...txResSp1.transactions, ...txResSp2.transactions],
- txRes.transactions,
+ console.log(
+ `transactions (offset=${offset}): ${j2s(txResSp2.transactions)}`,
+ );
+
+ const reconstructed = [...txResSp1.transactions, ...txResSp2.transactions];
+
+ t.assertDeepEqual(reconstructed, txRes.transactions);
+ }
+
+ {
+ // Test filtering
+ const txRes = await walletClient.call(
+ WalletApiOperation.GetTransactionsV2,
+ {
+ filterByState: "final",
+ },
);
+ t.assertDeepEqual(txRes.transactions.length, 3);
}
}
diff --git a/packages/taler-wallet-core/src/transactions.ts b/packages/taler-wallet-core/src/transactions.ts
@@ -395,7 +395,13 @@ export async function getTransactionsV2(
if (res.length === 0) {
break;
}
- addFiltered(wex, tx, transactionsRequest, resultTransactions, res);
+ await addFiltered(
+ wex,
+ tx,
+ transactionsRequest,
+ resultTransactions,
+ res,
+ );
if (limit != null && resultTransactions.length >= limit) {
break;
}