/* This file is part of GNU Taler (C) 2021 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 { PaymentStatus, TransactionCommon, TransactionDeposit, TransactionPayment, TransactionRefresh, TransactionRefund, TransactionTip, TransactionType, TransactionWithdrawal, WithdrawalType } from '@gnu-taler/taler-util'; import { FunctionalComponent } from 'preact'; import { HistoryView as TestedComponent } from './History'; export default { title: 'wallet/history/list', component: TestedComponent, }; let count = 0 const commonTransaction = () => ({ amountRaw: 'USD:10', amountEffective: 'USD:9', pending: false, timestamp: { t_ms: new Date().getTime() - (count++ * 1000*60*60*7) }, transactionId: '12', } as TransactionCommon) const exampleData = { withdraw: { ...commonTransaction(), type: TransactionType.Withdrawal, exchangeBaseUrl: 'http://exchange.taler', withdrawalDetails: { confirmed: false, exchangePaytoUris: ['payto://x-taler-bank/bank/account'], type: WithdrawalType.ManualTransfer, } } as TransactionWithdrawal, payment: { ...commonTransaction(), amountEffective: 'USD:11', type: TransactionType.Payment, info: { contractTermsHash: 'ASDZXCASD', merchant: { name: 'the merchant', }, orderId: '2021.167-03NPY6MCYMVGT', products: [], summary: 'the summary', fulfillmentMessage: '', }, proposalId: '1EMJJH8EP1NX3XF7733NCYS2DBEJW4Q2KA5KEB37MCQJQ8Q5HMC0', status: PaymentStatus.Accepted, } as TransactionPayment, deposit: { ...commonTransaction(), type: TransactionType.Deposit, depositGroupId: '#groupId', targetPaytoUri: 'payto://x-taler-bank/bank/account', } as TransactionDeposit, refresh: { ...commonTransaction(), type: TransactionType.Refresh, exchangeBaseUrl: 'http://exchange.taler', } as TransactionRefresh, tip: { ...commonTransaction(), type: TransactionType.Tip, merchantBaseUrl: 'http://merchant.taler', } as TransactionTip, refund: { ...commonTransaction(), type: TransactionType.Refund, refundedTransactionId: 'payment:1EMJJH8EP1NX3XF7733NCYS2DBEJW4Q2KA5KEB37MCQJQ8Q5HMC0', info: { contractTermsHash: 'ASDZXCASD', merchant: { name: 'the merchant', }, orderId: '2021.167-03NPY6MCYMVGT', products: [], summary: 'the summary', fulfillmentMessage: '', }, } as TransactionRefund, } function createExample(Component: FunctionalComponent, props: Partial) { const r = (args: any) => r.args = props return r } export const Empty = createExample(TestedComponent, { list: [], balances: [{ available: 'TESTKUDOS:10', pendingIncoming: 'TESTKUDOS:0', pendingOutgoing: 'TESTKUDOS:0', hasPendingTransactions: false, requiresUserInput: false, }] }); export const One = createExample(TestedComponent, { list: [exampleData.withdraw], balances: [{ available: 'USD:10', pendingIncoming: 'USD:0', pendingOutgoing: 'USD:0', hasPendingTransactions: false, requiresUserInput: false, }] }); export const Several = createExample(TestedComponent, { list: [ exampleData.withdraw, exampleData.payment, exampleData.withdraw, exampleData.payment, exampleData.refresh, exampleData.refund, exampleData.tip, exampleData.deposit, ], balances: [{ available: 'TESTKUDOS:10', pendingIncoming: 'TESTKUDOS:0', pendingOutgoing: 'TESTKUDOS:0', hasPendingTransactions: false, requiresUserInput: false, }] }); export const SeveralWithTwoCurrencies = createExample(TestedComponent, { list: [ exampleData.withdraw, exampleData.payment, exampleData.withdraw, exampleData.payment, exampleData.refresh, exampleData.refund, exampleData.tip, exampleData.deposit, ], balances: [{ available: 'TESTKUDOS:10', pendingIncoming: 'TESTKUDOS:0', pendingOutgoing: 'TESTKUDOS:0', hasPendingTransactions: false, requiresUserInput: false, },{ available: 'USD:10', pendingIncoming: 'USD:0', pendingOutgoing: 'USD:0', hasPendingTransactions: false, requiresUserInput: false, }] }); // export const WithdrawPending = createExample(TestedComponent, { // transaction: { ...exampleData.withdraw, pending: true }, // }); // export const Payment = createExample(TestedComponent, { // transaction: exampleData.payment // }); // export const PaymentWithoutFee = createExample(TestedComponent, { // transaction: { // ...exampleData.payment, // amountRaw: 'USD:11', // } // }); // export const PaymentPending = createExample(TestedComponent, { // transaction: { ...exampleData.payment, pending: true }, // }); // export const PaymentWithProducts = createExample(TestedComponent, { // transaction: { // ...exampleData.payment, // info: { // ...exampleData.payment.info, // summary: 'this order has 5 products', // products: [{ // description: 't-shirt', // unit: 'shirts', // quantity: 1, // }, { // description: 't-shirt', // unit: 'shirts', // quantity: 1, // }, { // description: 'e-book', // }, { // description: 'beer', // unit: 'pint', // quantity: 15, // }, { // description: 'beer', // unit: 'pint', // quantity: 15, // }] // } // } as TransactionPayment, // }); // export const PaymentWithLongSummary = createExample(TestedComponent, { // transaction: { // ...exampleData.payment, // info: { // ...exampleData.payment.info, // summary: 'this is a very long summary that will occupy severals lines, this is a very long summary that will occupy severals lines, this is a very long summary that will occupy severals lines, this is a very long summary that will occupy severals lines, ', // products: [{ // description: 'an xl sized t-shirt with some drawings on it, color pink', // unit: 'shirts', // quantity: 1, // }, { // description: 'beer', // unit: 'pint', // quantity: 15, // }] // } // } as TransactionPayment, // }); // export const Deposit = createExample(TestedComponent, { // transaction: exampleData.deposit // }); // export const DepositPending = createExample(TestedComponent, { // transaction: { ...exampleData.deposit, pending: true } // }); // export const Refresh = createExample(TestedComponent, { // transaction: exampleData.refresh // }); // export const Tip = createExample(TestedComponent, { // transaction: exampleData.tip // }); // export const TipPending = createExample(TestedComponent, { // transaction: { ...exampleData.tip, pending: true } // }); // export const Refund = createExample(TestedComponent, { // transaction: exampleData.refund // }); // export const RefundPending = createExample(TestedComponent, { // transaction: { ...exampleData.refund, pending: true } // }); // export const RefundWithProducts = createExample(TestedComponent, { // transaction: { // ...exampleData.refund, // info: { // ...exampleData.refund.info, // products: [{ // description: 't-shirt', // }, { // description: 'beer', // }] // } // } as TransactionRefund, // });