/* This file is part of GNU Taler (C) 2022-2024 Taler Systems S.A. GNU Taler is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 3, or (at your option) any later version. GNU Taler is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with GNU Taler; see the file COPYING. If not, see */ /** * * @author Sebastian Javier Marchano (sebasjm) */ import { TalerErrorCode } from "@gnu-taler/taler-util"; import * as tests from "@gnu-taler/web-util/testing"; import { SwrMockEnvironment } from "@gnu-taler/web-util/testing"; import { expect } from "chai"; import { Props } from "./index.js"; import { useComponentState } from "./state.js"; describe("Transaction states", () => { it.skip("should query backend and render transactions", async () => { const env = new SwrMockEnvironment(); const props: Props = { account: "myAccount", routeCreateWireTransfer: undefined, }; // env.addRequestExpectation(TRANSACTION_API_EXAMPLE.LIST_FIRST_PAGE, { // response: { // data: { // transactions: [ // { // creditorIban: "DE159593", // creditorBic: "SANDBOXX", // creditorName: "exchange company", // debtorIban: "DE118695", // debtorBic: "SANDBOXX", // debtorName: "Name unknown", // amount: "1", // currency: "KUDOS", // subject: // "Taler Withdrawal N588V8XE9TR49HKAXFQ20P0EQ0EYW2AC9NNANV8ZP5P59N6N0410", // date: "2022-12-12Z", // uid: "8PPFR9EM", // direction: "DBIT", // pmtInfId: null, // msgId: null, // }, // { // creditorIban: "DE159593", // creditorBic: "SANDBOXX", // creditorName: "exchange company", // debtorIban: "DE118695", // debtorBic: "SANDBOXX", // debtorName: "Name unknown", // amount: "5.00", // currency: "KUDOS", // subject: "HNEWWT679TQC5P1BVXJS48FX9NW18FWM6PTK2N80Z8GVT0ACGNK0", // date: "2022-12-07Z", // uid: "7FZJC3RJ", // direction: "DBIT", // pmtInfId: null, // msgId: null, // }, // { // creditorIban: "DE118695", // creditorBic: "SANDBOXX", // creditorName: "Name unknown", // debtorIban: "DE579516", // debtorBic: "SANDBOXX", // debtorName: "The Bank", // amount: "100", // currency: "KUDOS", // subject: "Sign-up bonus", // date: "2022-12-07Z", // uid: "I31A06J8", // direction: "CRDT", // pmtInfId: null, // msgId: null, // }, // ], // }, // }, // }); const hookBehavior = await tests.hookBehaveLikeThis( useComponentState, props, [ ({ status, error }) => { expect(status).equals("loading"); expect(error).undefined; }, ({ status, error }) => { expect(status).equals("ready"); expect(error).undefined; }, ], env.buildTestingContext(), ); expect(hookBehavior).deep.eq({ result: "ok" }); expect(env.assertJustExpectedRequestWereMade()).deep.eq({ result: "ok" }); }); // it("should show error message on not found", async () => { // const env = new SwrMockEnvironment(); // const props: Props = { // account: "myAccount", // }; // env.addRequestExpectation(TRANSACTION_API_EXAMPLE.LIST_NOT_FOUND, { // response: { // error: { // description: "Transaction page 0 could not be retrieved.", // }, // }, // }); // const hookBehavior = await tests.hookBehaveLikeThis( // useComponentState, // props, // [ // ({ status, error }) => { // expect(status).equals("loading"); // expect(error).undefined; // }, // ({ status, error }) => { // expect(status).equals("loading-error"); // if (error === undefined || error.type !== ErrorType.CLIENT) { // throw Error("not the expected error"); // } // expect(error.payload).deep.equal({ // error: { // description: "Transaction page 0 could not be retrieved.", // }, // }); // }, // ], // env.buildTestingContext(), // ); // expect(hookBehavior).deep.eq({ result: "ok" }); // expect(env.assertJustExpectedRequestWereMade()).deep.eq({ result: "ok" }); // }); it.skip("should show error message on server error", async () => { const env = new SwrMockEnvironment(); const props: Props = { account: "myAccount", routeCreateWireTransfer: undefined, }; // env.addRequestExpectation(TRANSACTION_API_EXAMPLE.LIST_ERROR, { // response: { // error: { // code: TalerErrorCode.WALLET_HTTP_REQUEST_THROTTLED, // }, // }, // }); const hookBehavior = await tests.hookBehaveLikeThis( useComponentState, props, [ ({ status, error }) => { expect(status).equals("loading"); expect(error).undefined; }, ({ status, error }) => { expect(status).equals("loading-error"); if ( error === undefined || !error.hasErrorCode(TalerErrorCode.WALLET_HTTP_REQUEST_THROTTLED) ) { throw Error("not the expected error"); } expect(error.errorDetail.code).deep.equal( TalerErrorCode.WALLET_HTTP_REQUEST_THROTTLED, ); }, ], env.buildTestingContext(), ); expect(hookBehavior).deep.eq({ result: "ok" }); expect(env.assertJustExpectedRequestWereMade()).deep.eq({ result: "ok" }); }); });