summaryrefslogtreecommitdiff
path: root/packages/taler-wallet-webextension/src/cta/Deposit
diff options
context:
space:
mode:
authorSebastian <sebasjm@gmail.com>2022-10-25 12:23:08 -0300
committerSebastian <sebasjm@gmail.com>2022-10-25 12:23:52 -0300
commit3f2db7707fdf4eb4c1dfdb527d5726dd1694e126 (patch)
tree4366d443db56eb200ba29760bf1f4a0b9def6c97 /packages/taler-wallet-webextension/src/cta/Deposit
parent587674dd10bd714b68ff5a6e836eb21113c0337a (diff)
downloadwallet-core-3f2db7707fdf4eb4c1dfdb527d5726dd1694e126.tar.gz
wallet-core-3f2db7707fdf4eb4c1dfdb527d5726dd1694e126.tar.bz2
wallet-core-3f2db7707fdf4eb4c1dfdb527d5726dd1694e126.zip
using new wallet api (typed interface)
Diffstat (limited to 'packages/taler-wallet-webextension/src/cta/Deposit')
-rw-r--r--packages/taler-wallet-webextension/src/cta/Deposit/index.ts2
-rw-r--r--packages/taler-wallet-webextension/src/cta/Deposit/state.ts19
-rw-r--r--packages/taler-wallet-webextension/src/cta/Deposit/test.ts89
3 files changed, 54 insertions, 56 deletions
diff --git a/packages/taler-wallet-webextension/src/cta/Deposit/index.ts b/packages/taler-wallet-webextension/src/cta/Deposit/index.ts
index 0246b6f7c..539709821 100644
--- a/packages/taler-wallet-webextension/src/cta/Deposit/index.ts
+++ b/packages/taler-wallet-webextension/src/cta/Deposit/index.ts
@@ -19,7 +19,7 @@ import { Loading } from "../../components/Loading.js";
import { HookError } from "../../hooks/useAsyncAsHook.js";
import { ButtonHandler } from "../../mui/handlers.js";
import { compose, StateViewMap } from "../../utils/index.js";
-import * as wxApi from "../../wxApi.js";
+import { wxApi } from "../../wxApi.js";
import { useComponentState } from "./state.js";
import { LoadingUriView, ReadyView } from "./views.js";
diff --git a/packages/taler-wallet-webextension/src/cta/Deposit/state.ts b/packages/taler-wallet-webextension/src/cta/Deposit/state.ts
index 5662a24c8..ba7bd147b 100644
--- a/packages/taler-wallet-webextension/src/cta/Deposit/state.ts
+++ b/packages/taler-wallet-webextension/src/cta/Deposit/state.ts
@@ -14,10 +14,10 @@
GNU Taler; see the file COPYING. If not, see <http://www.gnu.org/licenses/>
*/
-import { Amounts, CreateDepositGroupResponse } from "@gnu-taler/taler-util";
-import { useState } from "preact/hooks";
+import { Amounts } from "@gnu-taler/taler-util";
+import { WalletApiOperation } from "@gnu-taler/taler-wallet-core";
import { useAsyncAsHook } from "../../hooks/useAsyncAsHook.js";
-import * as wxApi from "../../wxApi.js";
+import { wxApi } from "../../wxApi.js";
import { Props, State } from "./index.js";
export function useComponentState(
@@ -29,10 +29,10 @@ export function useComponentState(
if (!amountStr) throw Error("ERROR_NO-AMOUNT-FOR-DEPOSIT");
const amount = Amounts.parse(amountStr);
if (!amount) throw Error("ERROR_INVALID-AMOUNT-FOR-DEPOSIT");
- const deposit = await api.prepareDeposit(
- talerDepositUri,
- Amounts.stringify(amount),
- );
+ const deposit = await api.wallet.call(WalletApiOperation.PrepareDeposit, {
+ amount: Amounts.stringify(amount),
+ depositPaytoUri: talerDepositUri,
+ });
return { deposit, uri: talerDepositUri, amount };
});
@@ -46,7 +46,10 @@ export function useComponentState(
const { deposit, uri, amount } = info.response;
async function doDeposit(): Promise<void> {
- const resp = await api.createDepositGroup(uri, Amounts.stringify(amount));
+ const resp = await api.wallet.call(WalletApiOperation.CreateDepositGroup, {
+ amount: Amounts.stringify(amount),
+ depositPaytoUri: uri,
+ });
onSuccess(resp.transactionId);
}
diff --git a/packages/taler-wallet-webextension/src/cta/Deposit/test.ts b/packages/taler-wallet-webextension/src/cta/Deposit/test.ts
index b6e63a796..f628b3287 100644
--- a/packages/taler-wallet-webextension/src/cta/Deposit/test.ts
+++ b/packages/taler-wallet-webextension/src/cta/Deposit/test.ts
@@ -19,43 +19,40 @@
* @author Sebastian Javier Marchano (sebasjm)
*/
-import { Amounts, PrepareDepositResponse } from "@gnu-taler/taler-util";
+import { Amounts } from "@gnu-taler/taler-util";
+import { WalletApiOperation } from "@gnu-taler/taler-wallet-core";
import { expect } from "chai";
import { mountHook } from "../../test-utils.js";
+import { createWalletApiMock } from "../../test-utils.js";
import { useComponentState } from "./state.js";
describe("Deposit CTA states", () => {
it("should tell the user that the URI is missing", async () => {
- const { getLastResultOrThrow, waitNextUpdate, assertNoPendingUpdate } =
+ const { handler, mock } = createWalletApiMock();
+ const props = {
+ talerDepositUri: undefined,
+ amountStr: undefined,
+ cancel: async () => {
+ null;
+ },
+ onSuccess: async () => {
+ null;
+ },
+ }
+ const { pullLastResultOrThrow, waitForStateUpdate, assertNoPendingUpdate } =
mountHook(() =>
- useComponentState(
- {
- talerDepositUri: undefined,
- amountStr: undefined,
- cancel: async () => {
- null;
- },
- onSuccess: async () => {
- null;
- },
- },
- {
- prepareRefund: async () => ({}),
- applyRefund: async () => ({}),
- onUpdateNotification: async () => ({}),
- } as any,
- ),
+ useComponentState(props, mock),
);
{
- const { status } = getLastResultOrThrow();
+ const { status } = pullLastResultOrThrow();
expect(status).equals("loading");
}
- await waitNextUpdate();
+ expect(await waitForStateUpdate()).true;
{
- const { status, error } = getLastResultOrThrow();
+ const { status, error } = pullLastResultOrThrow();
expect(status).equals("loading-uri");
@@ -64,44 +61,41 @@ describe("Deposit CTA states", () => {
if (error.operational) expect.fail();
expect(error.message).eq("ERROR_NO-URI-FOR-DEPOSIT");
}
-
await assertNoPendingUpdate();
+ expect(handler.getCallingQueueState()).eq("empty")
});
it("should be ready after loading", async () => {
- const { getLastResultOrThrow, waitNextUpdate, assertNoPendingUpdate } =
+ const { handler, mock } = createWalletApiMock();
+ handler.addWalletCallResponse(WalletApiOperation.PrepareDeposit, undefined, {
+ effectiveDepositAmount: Amounts.parseOrThrow("EUR:1"),
+ totalDepositCost: Amounts.parseOrThrow("EUR:1.2"),
+ });
+ const props = {
+ talerDepositUri: "payto://refund/asdasdas",
+ amountStr: "EUR:1",
+ cancel: async () => {
+ null;
+ },
+ onSuccess: async () => {
+ null;
+ },
+ }
+
+ const { pullLastResultOrThrow, waitForStateUpdate, assertNoPendingUpdate } =
mountHook(() =>
- useComponentState(
- {
- talerDepositUri: "payto://refund/asdasdas",
- amountStr: "EUR:1",
- cancel: async () => {
- null;
- },
- onSuccess: async () => {
- null;
- },
- },
- {
- prepareDeposit: async () =>
- ({
- effectiveDepositAmount: Amounts.parseOrThrow("EUR:1"),
- totalDepositCost: Amounts.parseOrThrow("EUR:1.2"),
- } as PrepareDepositResponse as any),
- createDepositGroup: async () => ({}),
- } as any,
- ),
+ useComponentState(props, mock),
);
{
- const { status } = getLastResultOrThrow();
+ const { status } = pullLastResultOrThrow();
expect(status).equals("loading");
}
- await waitNextUpdate();
+ expect(await waitForStateUpdate()).true;
{
- const state = getLastResultOrThrow();
+ const state = pullLastResultOrThrow();
if (state.status !== "ready") expect.fail();
if (state.error) expect.fail();
@@ -112,5 +106,6 @@ describe("Deposit CTA states", () => {
}
await assertNoPendingUpdate();
+ expect(handler.getCallingQueueState()).eq("empty");
});
});