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

241 lines
6.6 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" />
2021-06-21 01:37:35 +02:00
<div style={{ margin: "1em", width: 400, display: 'flex', padding: '0.5em', height: 'calc(20rem - 34px)', border: 'black solid 1px' }}>
2021-06-03 06:07:29 +02:00
<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',
},
2021-06-21 01:37:35 +02:00
orderId: '2021.167-03NPY6MCYMVGT',
2021-06-03 06:07:29 +02:00
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',
},
2021-06-21 01:37:35 +02:00
orderId: '2021.167-03NPY6MCYMVGT',
2021-06-03 06:07:29 +02:00
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
}
2021-06-21 01:37:35 +02:00
export const NotYetLoaded = createExample(TestedComponent, {});
2021-06-03 06:07:29 +02:00
2021-06-21 01:37:35 +02:00
export const Withdraw = createExample(TestedComponent, {
2021-06-03 06:07:29 +02:00
transaction: exampleData.withdraw
});
2021-06-21 01:37:35 +02:00
export const WithdrawPending = createExample(TestedComponent, {
2021-06-03 06:07:29 +02:00
transaction: { ...exampleData.withdraw, pending: true },
});
2021-06-21 01:37:35 +02:00
export const Payment = createExample(TestedComponent, {
2021-06-03 06:07:29 +02:00
transaction: exampleData.payment
});
2021-06-21 01:37:35 +02:00
export const PaymentWithoutFee = createExample(TestedComponent, {
transaction: {
...exampleData.payment,
amountRaw: 'USD:11',
}
});
export const PaymentPending = createExample(TestedComponent, {
2021-06-03 06:07:29 +02:00
transaction: { ...exampleData.payment, pending: true },
});
2021-06-21 01:37:35 +02:00
export const PaymentWithProducts = createExample(TestedComponent, {
2021-06-03 06:07:29 +02:00
transaction: {
...exampleData.payment,
info: {
...exampleData.payment.info,
2021-06-21 01:37:35 +02:00
summary: 'this order has 5 products',
2021-06-03 06:07:29 +02:00
products: [{
description: 't-shirt',
2021-06-21 01:37:35 +02:00
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,
2021-06-03 06:07:29 +02:00
}, {
description: 'beer',
2021-06-21 01:37:35 +02:00
unit: 'pint',
quantity: 15,
2021-06-03 06:07:29 +02:00
}]
}
} as TransactionPayment,
});
2021-06-21 01:37:35 +02:00
export const Deposit = createExample(TestedComponent, {
2021-06-03 06:07:29 +02:00
transaction: exampleData.deposit
});
2021-06-21 01:37:35 +02:00
export const DepositPending = createExample(TestedComponent, {
2021-06-03 06:07:29 +02:00
transaction: { ...exampleData.deposit, pending: true }
});
2021-06-21 01:37:35 +02:00
export const Refresh = createExample(TestedComponent, {
2021-06-03 06:07:29 +02:00
transaction: exampleData.refresh
});
2021-06-21 01:37:35 +02:00
export const Tip = createExample(TestedComponent, {
2021-06-03 06:07:29 +02:00
transaction: exampleData.tip
});
2021-06-21 01:37:35 +02:00
export const TipPending = createExample(TestedComponent, {
2021-06-03 06:07:29 +02:00
transaction: { ...exampleData.tip, pending: true }
});
2021-06-21 01:37:35 +02:00
export const Refund = createExample(TestedComponent, {
2021-06-03 06:07:29 +02:00
transaction: exampleData.refund
});
2021-06-21 01:37:35 +02:00
export const RefundPending = createExample(TestedComponent, {
transaction: { ...exampleData.refund, pending: true }
2021-06-03 06:07:29 +02:00
});
2021-06-21 01:37:35 +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,
});