wallet-core/packages/taler-wallet-webextension/src/popup/Transaction.stories.tsx

199 lines
5.3 KiB
TypeScript
Raw Normal View History

2021-06-03 06:07:29 +02:00
/*
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 <http://www.gnu.org/licenses/>
*/
/**
*
* @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 { TransactionView as TestedComponent } from './Transaction';
2021-06-03 06:07:29 +02:00
export default {
title: 'popup/transaction/details',
component: TestedComponent,
2021-06-03 06:07:29 +02:00
decorators: [
(Story: any) => <div>
<link key="1" rel="stylesheet" type="text/css" href="/style/pure.css" />
<link key="2" rel="stylesheet" type="text/css" href="/style/popup.css" />
<link key="3" rel="stylesheet" type="text/css" href="/style/wallet.css" />
<div style={{ margin: "1em", width: 400 }}>
<Story />
</div>
</div>
],
};
const commonTransaction = {
amountRaw: 'USD:10',
amountEffective: 'USD:9',
pending: false,
timestamp: {
t_ms: new Date().getTime()
},
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,
2021-06-08 14:17:12 +02:00
amountEffective: 'USD:11',
2021-06-03 06:07:29 +02:00
type: TransactionType.Payment,
info: {
contractTermsHash: 'ASDZXCASD',
merchant: {
name: 'the merchant',
},
orderId: '#12345',
products: [],
summary: 'the summary',
fulfillmentMessage: '',
},
proposalId: '1EMJJH8EP1NX3XF7733NCYS2DBEJW4Q2KA5KEB37MCQJQ8Q5HMC0',
2021-06-03 06:07:29 +02:00
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',
2021-06-03 06:07:29 +02:00
info: {
contractTermsHash: 'ASDZXCASD',
merchant: {
name: 'the merchant',
},
orderId: '#12345',
products: [],
summary: 'the summary',
fulfillmentMessage: '',
},
} as TransactionRefund,
}
function createExample<Props>(Component: FunctionalComponent<Props>, props: Partial<Props>) {
2021-06-03 06:07:29 +02:00
const r = (args: any) => <Component {...args} />
r.args = props
return r
}
export const NotYetLoaded = createExample(TestedComponent,{});
2021-06-03 06:07:29 +02:00
export const Withdraw = createExample(TestedComponent,{
2021-06-03 06:07:29 +02:00
transaction: exampleData.withdraw
});
export const WithdrawPending = createExample(TestedComponent,{
2021-06-03 06:07:29 +02:00
transaction: { ...exampleData.withdraw, pending: true },
});
export const Payment = createExample(TestedComponent,{
2021-06-03 06:07:29 +02:00
transaction: exampleData.payment
});
export const PaymentPending = createExample(TestedComponent,{
2021-06-03 06:07:29 +02:00
transaction: { ...exampleData.payment, pending: true },
});
export const PaymentWithProducts = createExample(TestedComponent,{
2021-06-03 06:07:29 +02:00
transaction: {
...exampleData.payment,
info: {
...exampleData.payment.info,
products: [{
description: 't-shirt',
}, {
description: 'beer',
}]
}
} as TransactionPayment,
});
export const Deposit = createExample(TestedComponent,{
2021-06-03 06:07:29 +02:00
transaction: exampleData.deposit
});
export const DepositPending = createExample(TestedComponent,{
2021-06-03 06:07:29 +02:00
transaction: { ...exampleData.deposit, pending: true }
});
export const Refresh = createExample(TestedComponent,{
2021-06-03 06:07:29 +02:00
transaction: exampleData.refresh
});
export const Tip = createExample(TestedComponent,{
2021-06-03 06:07:29 +02:00
transaction: exampleData.tip
});
export const TipPending = createExample(TestedComponent,{
2021-06-03 06:07:29 +02:00
transaction: { ...exampleData.tip, pending: true }
});
export const Refund = createExample(TestedComponent,{
2021-06-03 06:07:29 +02:00
transaction: exampleData.refund
});
export const RefundPending = createExample(TestedComponent,{
transaction: { ...exampleData.refund, pending: true }
2021-06-03 06:07:29 +02:00
});
export const RefundWithProducts = createExample(TestedComponent,{
2021-06-03 06:07:29 +02:00
transaction: {
...exampleData.refund,
info: {
...exampleData.refund.info,
products: [{
description: 't-shirt',
}, {
description: 'beer',
}]
}
} as TransactionRefund,
});