@huma-finance/widgets 0.0.34 → 0.0.36
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.env.example +2 -2
- package/.eslintignore +2 -2
- package/.eslintrc.js +64 -64
- package/.prettierignore +4 -4
- package/.prettierrc.js +16 -16
- package/API.md +332 -332
- package/LICENSE +660 -660
- package/README.md +48 -48
- package/babel.config.js +15 -15
- package/config-overrides.js +9 -9
- package/cosmos.config.json +7 -7
- package/cypress/e2e/01-invoice-factoring-borrow.test.ts +62 -62
- package/cypress/support/e2e.ts +76 -76
- package/cypress/support/ethereum.ts +142 -142
- package/cypress/tsconfig.json +9 -9
- package/cypress/utils/index.ts +54 -54
- package/cypress.config.ts +20 -20
- package/dist/cjs/index.cjs +1939 -1866
- package/dist/cjs/index.cjs.map +1 -1
- package/dist/index.d.ts +227 -195
- package/dist/index.js +1942 -1870
- package/dist/index.js.map +1 -1
- package/jsdoc2md.json +20 -20
- package/package.json +5 -4
- package/public/index.html +40 -40
- package/public/manifest.json +25 -25
- package/public/robots.txt +3 -3
- package/rollup.config.js +81 -81
- package/src/components/Activity.tsx +128 -132
- package/src/components/ApolloWrapper.tsx +15 -15
- package/src/components/ApproveAllowanceModal.tsx +138 -121
- package/src/components/BottomButton.tsx +33 -33
- package/src/components/ChainNotSupportedModal.tsx +33 -33
- package/src/components/ChooseAmountModal.tsx +322 -322
- package/src/components/ConfirmTransferModal.tsx +153 -153
- package/src/components/CreditLine/approve/1-ApproveAllowance.tsx +34 -0
- package/src/components/CreditLine/approve/2-Success.tsx +43 -0
- package/src/components/CreditLine/approve/index.tsx +85 -0
- package/src/components/CreditLine/borrow/1-Evaluation.tsx +157 -157
- package/src/components/CreditLine/borrow/2-ChooseAmount.tsx +74 -68
- package/src/components/CreditLine/borrow/{4-ApproveAllowance.tsx → 3-ApproveAllowance.tsx} +29 -29
- package/src/components/CreditLine/borrow/{3-Transfer.tsx → 4-Transfer.tsx} +34 -44
- package/src/components/CreditLine/borrow/5-Success.tsx +38 -38
- package/src/components/CreditLine/borrow/6-Notifications.tsx +10 -10
- package/src/components/CreditLine/borrow/index.tsx +136 -136
- package/src/components/CreditLine/payment/1-ChooseAmount.tsx +67 -67
- package/src/components/CreditLine/payment/2-ApproveAllowance.tsx +23 -23
- package/src/components/CreditLine/payment/3-Transfer.tsx +34 -34
- package/src/components/CreditLine/payment/4-Success.tsx +39 -39
- package/src/components/CreditLine/payment/index.tsx +94 -94
- package/src/components/ErrorModal.tsx +136 -132
- package/src/components/Factoring/FactoredList.tsx +143 -143
- package/src/components/Factoring/UpcomingList.tsx +90 -90
- package/src/components/Factoring/index.ts +2 -2
- package/src/components/HumaLoading.tsx +68 -68
- package/src/components/HumaSnackBar.tsx +60 -60
- package/src/components/HumaTable.tsx +203 -158
- package/src/components/InvoiceFactoring/borrow/1-Evaluation.tsx +49 -49
- package/src/components/InvoiceFactoring/borrow/2-ChooseAmount.tsx +88 -88
- package/src/components/InvoiceFactoring/borrow/3-ConfirmTransfer.tsx +37 -37
- package/src/components/InvoiceFactoring/borrow/4-ApproveNFT.tsx +55 -55
- package/src/components/InvoiceFactoring/borrow/5-Transfer.tsx +34 -34
- package/src/components/InvoiceFactoring/borrow/6-Success.tsx +20 -20
- package/src/components/InvoiceFactoring/borrow/index.tsx +94 -94
- package/src/components/InvoiceFactoring/payment/1-ChooseAmount.tsx +67 -67
- package/src/components/InvoiceFactoring/payment/2-ApproveAllowance.tsx +23 -23
- package/src/components/InvoiceFactoring/payment/3-Transfer.tsx +34 -34
- package/src/components/InvoiceFactoring/payment/4-Success.tsx +23 -23
- package/src/components/InvoiceFactoring/payment/index.tsx +86 -86
- package/src/components/Lend/supply/1-Evaluation/EvaluationEA.tsx +90 -86
- package/src/components/Lend/supply/1-Evaluation/EvaluationKYC.tsx +319 -287
- package/src/components/Lend/supply/1-Evaluation/index.tsx +31 -31
- package/src/components/Lend/supply/2-ChooseAmount.tsx +69 -69
- package/src/components/Lend/supply/3-ApproveAllowance.tsx +25 -25
- package/src/components/Lend/supply/4-Transfer.tsx +32 -32
- package/src/components/Lend/supply/5-Success.tsx +60 -60
- package/src/components/Lend/supply/6-Notifications.tsx +10 -10
- package/src/components/Lend/supply/index.tsx +167 -167
- package/src/components/Lend/withdraw/1-CheckWithdrawble.tsx +73 -73
- package/src/components/Lend/withdraw/2-ChooseAmount.tsx +50 -50
- package/src/components/Lend/withdraw/3-Transfer.tsx +32 -32
- package/src/components/Lend/withdraw/4-Success.tsx +49 -49
- package/src/components/Lend/withdraw/index.tsx +101 -101
- package/src/components/LoadingModal.tsx +49 -49
- package/src/components/Notifi/NotifiSubscriptionModal.tsx +268 -264
- package/src/components/StreamFactoring/borrow/1-Evaluation.tsx +55 -55
- package/src/components/StreamFactoring/borrow/2-ChooseAmount.tsx +127 -127
- package/src/components/StreamFactoring/borrow/3-ConfirmTransfer.tsx +42 -42
- package/src/components/StreamFactoring/borrow/4-ApproveAllowance.tsx +33 -33
- package/src/components/StreamFactoring/borrow/5-Permit.tsx +144 -144
- package/src/components/StreamFactoring/borrow/6-Transfer.tsx +37 -37
- package/src/components/StreamFactoring/borrow/7-Success.tsx +20 -20
- package/src/components/StreamFactoring/borrow/index.tsx +94 -94
- package/src/components/StreamFactoring/payment/ChooseAmount.tsx +54 -54
- package/src/components/StreamFactoring/payment/Success.tsx +23 -23
- package/src/components/StreamFactoring/payment/Transfer.tsx +34 -34
- package/src/components/StreamFactoring/payment/index.tsx +66 -66
- package/src/components/SuperfluidFactoring/SuperfluidFactoredList.tsx +69 -70
- package/src/components/SuperfluidFactoring/SuperfluidUpcomingList.tsx +166 -167
- package/src/components/SuperfluidFactoring/index.tsx +85 -85
- package/src/components/TxDoneModal.tsx +85 -85
- package/src/components/TxSendModal.tsx +59 -59
- package/src/components/ViewOnExplorer.tsx +23 -26
- package/src/components/WidgetWrapper.tsx +74 -74
- package/src/components/WrapperModal.tsx +54 -54
- package/src/components/buttons/TableActionButton.tsx +36 -36
- package/src/components/buttons/index.ts +1 -1
- package/src/components/humaModal/HumaModal.tsx +68 -68
- package/src/components/humaModal/HumaModalHeader.tsx +70 -70
- package/src/components/humaModal/index.tsx +2 -2
- package/src/components/icons/approve-lender.svg +58 -30
- package/src/components/icons/auto-payback.svg +139 -40
- package/src/components/icons/check-circle.svg +3 -3
- package/src/components/icons/check-green.svg +3 -3
- package/src/components/icons/check.svg +10 -10
- package/src/components/icons/donut.svg +904 -904
- package/src/components/icons/ellipse.svg +3 -3
- package/src/components/icons/huma-full.svg +22 -22
- package/src/components/icons/huma.svg +15 -15
- package/src/components/icons/index.tsx +93 -93
- package/src/components/icons/loader.svg +229 -229
- package/src/components/icons/metamask.svg +31 -31
- package/src/components/icons/polygon.svg +16 -16
- package/src/components/icons/receipt.svg +3 -3
- package/src/components/icons/separator.svg +3 -3
- package/src/components/icons/sorry.svg +17 -31
- package/src/components/icons/usdc.svg +5 -5
- package/src/components/icons/wallet-connect.svg +11 -11
- package/src/components/images/approve-lender.png +0 -0
- package/src/components/images/auto-payback.png +0 -0
- package/src/components/images/index.ts +3 -0
- package/src/components/images/sorry.png +0 -0
- package/src/cosmos/CreditLineBorrow.fixture.tsx +86 -86
- package/src/cosmos/CreditLinePayment.fixture.tsx +50 -50
- package/src/cosmos/InvoiceFactoringBorrow.fixture.tsx +111 -111
- package/src/cosmos/InvoiceFactoringPayment.fixture.tsx +67 -67
- package/src/cosmos/LendSupply.fixture.tsx +75 -75
- package/src/cosmos/LendWithdraw.fixture.tsx +43 -43
- package/src/cosmos/SDKTesting.fixture.tsx +616 -616
- package/src/cosmos/SuperfluidFactoringBorrow.fixture.tsx +15 -15
- package/src/cosmos/WalletWrapper.tsx +52 -52
- package/src/cosmos/abis/InvoiceNFT.json +644 -644
- package/src/cosmos/abis/ReceivableFactoringPool.json +1529 -1529
- package/src/cosmos/utils/env.ts +6 -6
- package/src/cosmos/utils/index.ts +169 -169
- package/src/fonts/Recoleta/Recoleta-Black.otf +0 -0
- package/src/fonts/Recoleta/Recoleta-Bold.otf +0 -0
- package/src/fonts/Recoleta/Recoleta-Light.otf +0 -0
- package/src/fonts/Recoleta/Recoleta-Medium.otf +0 -0
- package/src/fonts/Recoleta/Recoleta-Regular.otf +0 -0
- package/src/fonts/Recoleta/Recoleta-RegularDEMO.otf +0 -0
- package/src/fonts/Recoleta/Recoleta-SemiBold.otf +0 -0
- package/src/fonts/Recoleta/Recoleta-Thin.otf +0 -0
- package/src/hooks/useEA.ts +53 -53
- package/src/hooks/useElementDimensions.ts +30 -0
- package/src/hooks/useNotifi.ts +71 -71
- package/src/hooks/useRedux.ts +6 -6
- package/src/index.css +61 -61
- package/src/index.tsx +283 -301
- package/src/react-app-env.d.ts +1 -1
- package/src/reportWebVitals.ts +15 -15
- package/src/setupTests.ts +6 -6
- package/src/store/index.ts +27 -27
- package/src/store/widgets.reducers.ts +120 -120
- package/src/store/widgets.selectors.ts +3 -3
- package/src/store/widgets.store.ts +55 -55
- package/src/theme/breakpoints.ts +10 -10
- package/src/theme/components.ts +70 -70
- package/src/theme/coreThemeConstants.ts +29 -29
- package/src/theme/cssMixins.ts +92 -92
- package/src/theme/hooks/useGetSizes.ts +31 -31
- package/src/theme/index.ts +24 -24
- package/src/theme/palette.ts +150 -150
- package/src/theme/shape.ts +7 -7
- package/src/theme/theme.types.ts +80 -80
- package/src/theme/typography.ts +117 -117
- package/src/utilTypes.d.ts +30 -31
- package/src/utils/env.ts +10 -10
- package/tsconfig.build.json +7 -7
- package/tsconfig.json +32 -32
- package/webpack.cosmos.js +54 -54
package/README.md
CHANGED
|
@@ -1,48 +1,48 @@
|
|
|
1
|
-
# Huma Widgets
|
|
2
|
-
|
|
3
|
-
The `@huma-finance/widgets` package is an [npm package](https://www.npmjs.com/package/@huma-finance/widgets) of React components used to provide subsets of the Huma Finance Protocol functionality in a small user interface element for:
|
|
4
|
-
|
|
5
|
-
- Invoice factoring borrow and payment
|
|
6
|
-
- Credit line borrow and payment
|
|
7
|
-
- Lend supply and withdraw
|
|
8
|
-
- Superfluid stream borrow
|
|
9
|
-
|
|
10
|
-
## Installation
|
|
11
|
-
|
|
12
|
-
Install the widgets library via `npm` or `yarn`.
|
|
13
|
-
|
|
14
|
-
```js
|
|
15
|
-
yarn add @huma-finance/widgets
|
|
16
|
-
```
|
|
17
|
-
|
|
18
|
-
```js
|
|
19
|
-
npm i --save @huma-finance/widgets
|
|
20
|
-
```
|
|
21
|
-
|
|
22
|
-
## Adding Widget to Your App
|
|
23
|
-
|
|
24
|
-
```jsx
|
|
25
|
-
import { InvoiceFactoringBorrowWidget } from '@huma-finance/widgets'
|
|
26
|
-
|
|
27
|
-
export const InvoiceFactoringBorrowPage = () => {
|
|
28
|
-
return (
|
|
29
|
-
<InvoiceFactoringBorrowWidget
|
|
30
|
-
poolName='pool name'
|
|
31
|
-
poolType='pool type'
|
|
32
|
-
tokenId={tokenId}
|
|
33
|
-
handleClose={handleClose}
|
|
34
|
-
/>
|
|
35
|
-
)
|
|
36
|
-
}
|
|
37
|
-
```
|
|
38
|
-
|
|
39
|
-
## Documentation
|
|
40
|
-
|
|
41
|
-
For documentation on the different widgets offered please refer to the [API](API.md)
|
|
42
|
-
|
|
43
|
-
## Example Usage
|
|
44
|
-
|
|
45
|
-
To see how the Huma widgets can be used, feel free to use our interactive example under src/cosmos.
|
|
46
|
-
|
|
47
|
-
1. Run `yarn cosmos`
|
|
48
|
-
2. Open up `localhost:8000` in your browser and choose the fixture to test
|
|
1
|
+
# Huma Widgets
|
|
2
|
+
|
|
3
|
+
The `@huma-finance/widgets` package is an [npm package](https://www.npmjs.com/package/@huma-finance/widgets) of React components used to provide subsets of the Huma Finance Protocol functionality in a small user interface element for:
|
|
4
|
+
|
|
5
|
+
- Invoice factoring borrow and payment
|
|
6
|
+
- Credit line borrow and payment
|
|
7
|
+
- Lend supply and withdraw
|
|
8
|
+
- Superfluid stream borrow
|
|
9
|
+
|
|
10
|
+
## Installation
|
|
11
|
+
|
|
12
|
+
Install the widgets library via `npm` or `yarn`.
|
|
13
|
+
|
|
14
|
+
```js
|
|
15
|
+
yarn add @huma-finance/widgets
|
|
16
|
+
```
|
|
17
|
+
|
|
18
|
+
```js
|
|
19
|
+
npm i --save @huma-finance/widgets
|
|
20
|
+
```
|
|
21
|
+
|
|
22
|
+
## Adding Widget to Your App
|
|
23
|
+
|
|
24
|
+
```jsx
|
|
25
|
+
import { InvoiceFactoringBorrowWidget } from '@huma-finance/widgets'
|
|
26
|
+
|
|
27
|
+
export const InvoiceFactoringBorrowPage = () => {
|
|
28
|
+
return (
|
|
29
|
+
<InvoiceFactoringBorrowWidget
|
|
30
|
+
poolName='pool name'
|
|
31
|
+
poolType='pool type'
|
|
32
|
+
tokenId={tokenId}
|
|
33
|
+
handleClose={handleClose}
|
|
34
|
+
/>
|
|
35
|
+
)
|
|
36
|
+
}
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
## Documentation
|
|
40
|
+
|
|
41
|
+
For documentation on the different widgets offered please refer to the [API](API.md)
|
|
42
|
+
|
|
43
|
+
## Example Usage
|
|
44
|
+
|
|
45
|
+
To see how the Huma widgets can be used, feel free to use our interactive example under src/cosmos.
|
|
46
|
+
|
|
47
|
+
1. Run `yarn cosmos`
|
|
48
|
+
2. Open up `localhost:8000` in your browser and choose the fixture to test
|
package/babel.config.js
CHANGED
|
@@ -1,15 +1,15 @@
|
|
|
1
|
-
module.exports = {
|
|
2
|
-
compact: false,
|
|
3
|
-
presets: [
|
|
4
|
-
'@babel/preset-env',
|
|
5
|
-
[
|
|
6
|
-
'@babel/preset-react',
|
|
7
|
-
{
|
|
8
|
-
importSource: '@emotion/react',
|
|
9
|
-
runtime: 'automatic',
|
|
10
|
-
},
|
|
11
|
-
],
|
|
12
|
-
['@babel/preset-typescript', { isTSX: true, allExtensions: true }],
|
|
13
|
-
],
|
|
14
|
-
plugins: ['@babel/plugin-transform-runtime', '@emotion'],
|
|
15
|
-
}
|
|
1
|
+
module.exports = {
|
|
2
|
+
compact: false,
|
|
3
|
+
presets: [
|
|
4
|
+
'@babel/preset-env',
|
|
5
|
+
[
|
|
6
|
+
'@babel/preset-react',
|
|
7
|
+
{
|
|
8
|
+
importSource: '@emotion/react',
|
|
9
|
+
runtime: 'automatic',
|
|
10
|
+
},
|
|
11
|
+
],
|
|
12
|
+
['@babel/preset-typescript', { isTSX: true, allExtensions: true }],
|
|
13
|
+
],
|
|
14
|
+
plugins: ['@babel/plugin-transform-runtime', '@emotion'],
|
|
15
|
+
}
|
package/config-overrides.js
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
const { addBabelPlugin, addBabelPreset, override } = require('customize-cra')
|
|
2
|
-
|
|
3
|
-
module.exports = override(
|
|
4
|
-
addBabelPlugin('@emotion/babel-plugin'),
|
|
5
|
-
addBabelPreset([
|
|
6
|
-
'@babel/preset-react',
|
|
7
|
-
{ importSource: '@emotion/react', runtime: 'automatic' },
|
|
8
|
-
]),
|
|
9
|
-
)
|
|
1
|
+
const { addBabelPlugin, addBabelPreset, override } = require('customize-cra')
|
|
2
|
+
|
|
3
|
+
module.exports = override(
|
|
4
|
+
addBabelPlugin('@emotion/babel-plugin'),
|
|
5
|
+
addBabelPreset([
|
|
6
|
+
'@babel/preset-react',
|
|
7
|
+
{ importSource: '@emotion/react', runtime: 'automatic' },
|
|
8
|
+
]),
|
|
9
|
+
)
|
package/cosmos.config.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
{
|
|
2
|
-
"watchDirs": ["src/cosmos"],
|
|
3
|
-
"webpack": {
|
|
4
|
-
"overridePath": "webpack.cosmos.js"
|
|
5
|
-
},
|
|
6
|
-
"port": 8000
|
|
7
|
-
}
|
|
1
|
+
{
|
|
2
|
+
"watchDirs": ["src/cosmos"],
|
|
3
|
+
"webpack": {
|
|
4
|
+
"overridePath": "webpack.cosmos.js"
|
|
5
|
+
},
|
|
6
|
+
"port": 8000
|
|
7
|
+
}
|
|
@@ -1,62 +1,62 @@
|
|
|
1
|
-
import '@testing-library/cypress/add-commands'
|
|
2
|
-
import 'cypress-iframe'
|
|
3
|
-
|
|
4
|
-
import {
|
|
5
|
-
addressForTx,
|
|
6
|
-
INVOICE_AMOUNT,
|
|
7
|
-
INVOICE_FACTORED_AMOUNT,
|
|
8
|
-
INVOICE_FEES,
|
|
9
|
-
ONE_MINUTE,
|
|
10
|
-
TWO_MINUTES,
|
|
11
|
-
} from '../utils'
|
|
12
|
-
|
|
13
|
-
describe('Invoice factoring recurring borrow', () => {
|
|
14
|
-
it('Create RN request', () => {
|
|
15
|
-
cy.visit(Cypress.env('E2E_TEST_RN_CREATE_BASE_URL'))
|
|
16
|
-
cy.findByText('Metamask', { timeout: ONE_MINUTE }).click()
|
|
17
|
-
cy.get('input[name="amount"]').type(String(INVOICE_AMOUNT))
|
|
18
|
-
cy.get('input[name="payer"]').type(addressForTx)
|
|
19
|
-
cy.get('button').contains('Create a request').click()
|
|
20
|
-
cy.findAllByText('Request for payment from', {
|
|
21
|
-
timeout: TWO_MINUTES,
|
|
22
|
-
}).should('exist')
|
|
23
|
-
})
|
|
24
|
-
|
|
25
|
-
it('Should get paid 80 USDC for an invoice factoring of 100 USDC value', () => {
|
|
26
|
-
cy.visit('/')
|
|
27
|
-
cy.findByText('InvoiceFactoringBorrow', { timeout: ONE_MINUTE }).click()
|
|
28
|
-
const receivedUSDC = INVOICE_FACTORED_AMOUNT - INVOICE_FEES
|
|
29
|
-
const remainedUSDC = INVOICE_AMOUNT - INVOICE_FACTORED_AMOUNT
|
|
30
|
-
const chooseAmountModalIncrementIcon = '.choose-amount-modal-increment-icon'
|
|
31
|
-
const txDoneModalCloseButton = '.transaction-done-modal-close-btn'
|
|
32
|
-
|
|
33
|
-
// click the increment icon each time will increment 1 usdc
|
|
34
|
-
for (let i = 0; i < INVOICE_FACTORED_AMOUNT; i++) {
|
|
35
|
-
cy.iframe()
|
|
36
|
-
.find(chooseAmountModalIncrementIcon, { timeout: TWO_MINUTES })
|
|
37
|
-
.click()
|
|
38
|
-
}
|
|
39
|
-
|
|
40
|
-
cy.iframe().find('button').contains('ACCEPT TERMS').click()
|
|
41
|
-
cy.iframe().find('div').contains(`${receivedUSDC} USDC`).should('exist')
|
|
42
|
-
cy.iframe().find('button').contains('APPROVE TRANSFER').click()
|
|
43
|
-
|
|
44
|
-
// wait 2 minutes for transaction to be successful
|
|
45
|
-
cy.iframe()
|
|
46
|
-
.find(txDoneModalCloseButton, {
|
|
47
|
-
timeout: TWO_MINUTES,
|
|
48
|
-
})
|
|
49
|
-
.should('be.visible')
|
|
50
|
-
|
|
51
|
-
cy.iframe()
|
|
52
|
-
.find('div')
|
|
53
|
-
.contains(`${receivedUSDC} USDC is now in your wallet.`)
|
|
54
|
-
.should('exist')
|
|
55
|
-
cy.iframe()
|
|
56
|
-
.find('div')
|
|
57
|
-
.contains(
|
|
58
|
-
`The remaining ${remainedUSDC} USDC will be sent to your wallet when the invoice is paid.`,
|
|
59
|
-
)
|
|
60
|
-
.should('exist')
|
|
61
|
-
})
|
|
62
|
-
})
|
|
1
|
+
import '@testing-library/cypress/add-commands'
|
|
2
|
+
import 'cypress-iframe'
|
|
3
|
+
|
|
4
|
+
import {
|
|
5
|
+
addressForTx,
|
|
6
|
+
INVOICE_AMOUNT,
|
|
7
|
+
INVOICE_FACTORED_AMOUNT,
|
|
8
|
+
INVOICE_FEES,
|
|
9
|
+
ONE_MINUTE,
|
|
10
|
+
TWO_MINUTES,
|
|
11
|
+
} from '../utils'
|
|
12
|
+
|
|
13
|
+
describe('Invoice factoring recurring borrow', () => {
|
|
14
|
+
it('Create RN request', () => {
|
|
15
|
+
cy.visit(Cypress.env('E2E_TEST_RN_CREATE_BASE_URL'))
|
|
16
|
+
cy.findByText('Metamask', { timeout: ONE_MINUTE }).click()
|
|
17
|
+
cy.get('input[name="amount"]').type(String(INVOICE_AMOUNT))
|
|
18
|
+
cy.get('input[name="payer"]').type(addressForTx)
|
|
19
|
+
cy.get('button').contains('Create a request').click()
|
|
20
|
+
cy.findAllByText('Request for payment from', {
|
|
21
|
+
timeout: TWO_MINUTES,
|
|
22
|
+
}).should('exist')
|
|
23
|
+
})
|
|
24
|
+
|
|
25
|
+
it('Should get paid 80 USDC for an invoice factoring of 100 USDC value', () => {
|
|
26
|
+
cy.visit('/')
|
|
27
|
+
cy.findByText('InvoiceFactoringBorrow', { timeout: ONE_MINUTE }).click()
|
|
28
|
+
const receivedUSDC = INVOICE_FACTORED_AMOUNT - INVOICE_FEES
|
|
29
|
+
const remainedUSDC = INVOICE_AMOUNT - INVOICE_FACTORED_AMOUNT
|
|
30
|
+
const chooseAmountModalIncrementIcon = '.choose-amount-modal-increment-icon'
|
|
31
|
+
const txDoneModalCloseButton = '.transaction-done-modal-close-btn'
|
|
32
|
+
|
|
33
|
+
// click the increment icon each time will increment 1 usdc
|
|
34
|
+
for (let i = 0; i < INVOICE_FACTORED_AMOUNT; i++) {
|
|
35
|
+
cy.iframe()
|
|
36
|
+
.find(chooseAmountModalIncrementIcon, { timeout: TWO_MINUTES })
|
|
37
|
+
.click()
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
cy.iframe().find('button').contains('ACCEPT TERMS').click()
|
|
41
|
+
cy.iframe().find('div').contains(`${receivedUSDC} USDC`).should('exist')
|
|
42
|
+
cy.iframe().find('button').contains('APPROVE TRANSFER').click()
|
|
43
|
+
|
|
44
|
+
// wait 2 minutes for transaction to be successful
|
|
45
|
+
cy.iframe()
|
|
46
|
+
.find(txDoneModalCloseButton, {
|
|
47
|
+
timeout: TWO_MINUTES,
|
|
48
|
+
})
|
|
49
|
+
.should('be.visible')
|
|
50
|
+
|
|
51
|
+
cy.iframe()
|
|
52
|
+
.find('div')
|
|
53
|
+
.contains(`${receivedUSDC} USDC is now in your wallet.`)
|
|
54
|
+
.should('exist')
|
|
55
|
+
cy.iframe()
|
|
56
|
+
.find('div')
|
|
57
|
+
.contains(
|
|
58
|
+
`The remaining ${remainedUSDC} USDC will be sent to your wallet when the invoice is paid.`,
|
|
59
|
+
)
|
|
60
|
+
.should('exist')
|
|
61
|
+
})
|
|
62
|
+
})
|
package/cypress/support/e2e.ts
CHANGED
|
@@ -1,76 +1,76 @@
|
|
|
1
|
-
// ***********************************************************
|
|
2
|
-
// This file is processed and loaded automatically before your test files.
|
|
3
|
-
//
|
|
4
|
-
// You can read more here:
|
|
5
|
-
// https://on.cypress.io/configuration
|
|
6
|
-
// ***********************************************************
|
|
7
|
-
|
|
8
|
-
// Import commands.ts using ES2015 syntax:
|
|
9
|
-
import { injectedForApprove, injectedForTx } from './ethereum'
|
|
10
|
-
import assert = require('assert')
|
|
11
|
-
|
|
12
|
-
declare global {
|
|
13
|
-
// eslint-disable-next-line @typescript-eslint/no-namespace
|
|
14
|
-
namespace Cypress {
|
|
15
|
-
interface ApplicationWindow {
|
|
16
|
-
ethereum: typeof injectedForTx
|
|
17
|
-
}
|
|
18
|
-
interface VisitOptions {
|
|
19
|
-
serviceWorker?: true
|
|
20
|
-
}
|
|
21
|
-
}
|
|
22
|
-
}
|
|
23
|
-
|
|
24
|
-
// sets up the injected provider to be a mock ethereum provider with the given mnemonic/index
|
|
25
|
-
// eslint-disable-next-line no-undef
|
|
26
|
-
Cypress.Commands.overwrite(
|
|
27
|
-
'visit',
|
|
28
|
-
(
|
|
29
|
-
original,
|
|
30
|
-
url: string | Partial<Cypress.VisitOptions>,
|
|
31
|
-
options?: Partial<Cypress.VisitOptions>,
|
|
32
|
-
) => {
|
|
33
|
-
assert(typeof url === 'string')
|
|
34
|
-
|
|
35
|
-
cy.intercept(
|
|
36
|
-
'/service-worker.js',
|
|
37
|
-
options?.serviceWorker ? undefined : { statusCode: 404 },
|
|
38
|
-
).then(() => {
|
|
39
|
-
original({
|
|
40
|
-
...options,
|
|
41
|
-
url:
|
|
42
|
-
url.startsWith('/') && url.length > 2 && !url.startsWith('/#')
|
|
43
|
-
? `/#${url}`
|
|
44
|
-
: url,
|
|
45
|
-
onBeforeLoad(win) {
|
|
46
|
-
options?.onBeforeLoad?.(win)
|
|
47
|
-
win.localStorage.clear()
|
|
48
|
-
win.localStorage.setItem(
|
|
49
|
-
'redux_localstorage_simple_user',
|
|
50
|
-
'{"selectedWallet":"INJECTED"}',
|
|
51
|
-
)
|
|
52
|
-
|
|
53
|
-
win.ethereum = injectedForTx
|
|
54
|
-
if (url.endsWith('type=newWallet')) {
|
|
55
|
-
win.ethereum = injectedForApprove
|
|
56
|
-
}
|
|
57
|
-
},
|
|
58
|
-
})
|
|
59
|
-
})
|
|
60
|
-
},
|
|
61
|
-
)
|
|
62
|
-
|
|
63
|
-
beforeEach(() => {
|
|
64
|
-
// Infura security policies are based on Origin headers.
|
|
65
|
-
// These are stripped by cypress because chromeWebSecurity === false; this adds them back in.
|
|
66
|
-
cy.intercept(/infura.io/, (res) => {
|
|
67
|
-
res.headers['origin'] = Cypress.config().baseUrl!
|
|
68
|
-
res.continue()
|
|
69
|
-
})
|
|
70
|
-
})
|
|
71
|
-
|
|
72
|
-
Cypress.on('uncaught:exception', (_err, _runnable) => {
|
|
73
|
-
// returning false here prevents Cypress from
|
|
74
|
-
// failing the test
|
|
75
|
-
return false
|
|
76
|
-
})
|
|
1
|
+
// ***********************************************************
|
|
2
|
+
// This file is processed and loaded automatically before your test files.
|
|
3
|
+
//
|
|
4
|
+
// You can read more here:
|
|
5
|
+
// https://on.cypress.io/configuration
|
|
6
|
+
// ***********************************************************
|
|
7
|
+
|
|
8
|
+
// Import commands.ts using ES2015 syntax:
|
|
9
|
+
import { injectedForApprove, injectedForTx } from './ethereum'
|
|
10
|
+
import assert = require('assert')
|
|
11
|
+
|
|
12
|
+
declare global {
|
|
13
|
+
// eslint-disable-next-line @typescript-eslint/no-namespace
|
|
14
|
+
namespace Cypress {
|
|
15
|
+
interface ApplicationWindow {
|
|
16
|
+
ethereum: typeof injectedForTx
|
|
17
|
+
}
|
|
18
|
+
interface VisitOptions {
|
|
19
|
+
serviceWorker?: true
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
// sets up the injected provider to be a mock ethereum provider with the given mnemonic/index
|
|
25
|
+
// eslint-disable-next-line no-undef
|
|
26
|
+
Cypress.Commands.overwrite(
|
|
27
|
+
'visit',
|
|
28
|
+
(
|
|
29
|
+
original,
|
|
30
|
+
url: string | Partial<Cypress.VisitOptions>,
|
|
31
|
+
options?: Partial<Cypress.VisitOptions>,
|
|
32
|
+
) => {
|
|
33
|
+
assert(typeof url === 'string')
|
|
34
|
+
|
|
35
|
+
cy.intercept(
|
|
36
|
+
'/service-worker.js',
|
|
37
|
+
options?.serviceWorker ? undefined : { statusCode: 404 },
|
|
38
|
+
).then(() => {
|
|
39
|
+
original({
|
|
40
|
+
...options,
|
|
41
|
+
url:
|
|
42
|
+
url.startsWith('/') && url.length > 2 && !url.startsWith('/#')
|
|
43
|
+
? `/#${url}`
|
|
44
|
+
: url,
|
|
45
|
+
onBeforeLoad(win) {
|
|
46
|
+
options?.onBeforeLoad?.(win)
|
|
47
|
+
win.localStorage.clear()
|
|
48
|
+
win.localStorage.setItem(
|
|
49
|
+
'redux_localstorage_simple_user',
|
|
50
|
+
'{"selectedWallet":"INJECTED"}',
|
|
51
|
+
)
|
|
52
|
+
|
|
53
|
+
win.ethereum = injectedForTx
|
|
54
|
+
if (url.endsWith('type=newWallet')) {
|
|
55
|
+
win.ethereum = injectedForApprove
|
|
56
|
+
}
|
|
57
|
+
},
|
|
58
|
+
})
|
|
59
|
+
})
|
|
60
|
+
},
|
|
61
|
+
)
|
|
62
|
+
|
|
63
|
+
beforeEach(() => {
|
|
64
|
+
// Infura security policies are based on Origin headers.
|
|
65
|
+
// These are stripped by cypress because chromeWebSecurity === false; this adds them back in.
|
|
66
|
+
cy.intercept(/infura.io/, (res) => {
|
|
67
|
+
res.headers['origin'] = Cypress.config().baseUrl!
|
|
68
|
+
res.continue()
|
|
69
|
+
})
|
|
70
|
+
})
|
|
71
|
+
|
|
72
|
+
Cypress.on('uncaught:exception', (_err, _runnable) => {
|
|
73
|
+
// returning false here prevents Cypress from
|
|
74
|
+
// failing the test
|
|
75
|
+
return false
|
|
76
|
+
})
|