WA-232 Create moveTokens.helper class for simulating a tx at DOM level
This commit is contained in:
parent
dc0c7615a8
commit
677e7649d6
|
@ -0,0 +1,76 @@
|
|||
// @flow
|
||||
import { Map } from 'immutable'
|
||||
import TestUtils from 'react-dom/test-utils'
|
||||
import { sleep } from '~/utils/timer'
|
||||
import * as fetchBalancesAction from '~/routes/safe/store/actions/fetchBalances'
|
||||
import { checkMinedTx, checkPendingTx, EXPAND_BALANCE_INDEX } from '~/test/builder/safe.dom.utils'
|
||||
import { makeBalance, type Balance } from '~/routes/safe/store/model/balance'
|
||||
import addBalances from '~/routes/safe/store/actions/addBalances'
|
||||
|
||||
export const sendMoveTokensForm = async (
|
||||
SafeDom: React$Component<any, any>,
|
||||
expandBalance: React$Component<any, any>,
|
||||
txName: string,
|
||||
value: number,
|
||||
destination: string,
|
||||
) => {
|
||||
TestUtils.Simulate.click(expandBalance)
|
||||
await sleep(800)
|
||||
|
||||
// $FlowFixMe
|
||||
const balanceButtons = TestUtils.scryRenderedDOMComponentsWithTag(SafeDom, 'button')
|
||||
const tokenButton = balanceButtons[EXPAND_BALANCE_INDEX + 1] // expand button, and the next one is for sending
|
||||
expect(tokenButton.hasAttribute('disabled')).toBe(false)
|
||||
|
||||
// load move tokens form component
|
||||
TestUtils.Simulate.click(tokenButton)
|
||||
await sleep(800)
|
||||
|
||||
// fill the form
|
||||
const inputs = TestUtils.scryRenderedDOMComponentsWithTag(SafeDom, 'input')
|
||||
const nameInput = inputs[0]
|
||||
const destinationInput = inputs[1]
|
||||
const amountofTokens = inputs[2]
|
||||
TestUtils.Simulate.change(nameInput, { target: { value: txName } })
|
||||
TestUtils.Simulate.change(amountofTokens, { target: { value } })
|
||||
TestUtils.Simulate.change(destinationInput, { target: { value: destination } })
|
||||
// $FlowFixMe
|
||||
const form = TestUtils.findRenderedDOMComponentWithTag(SafeDom, 'form')
|
||||
|
||||
// submit it
|
||||
TestUtils.Simulate.submit(form)
|
||||
TestUtils.Simulate.submit(form)
|
||||
|
||||
// give time to process transaction
|
||||
return sleep(1250)
|
||||
}
|
||||
|
||||
export const dispatchTknBalance = async (store: Store, tokenAddress: string, address: string) => {
|
||||
const fetchBalancesMock = jest.spyOn(fetchBalancesAction, 'fetchBalances')
|
||||
const funds = await fetchBalancesAction.calculateBalanceOf(tokenAddress, address)
|
||||
|
||||
const balances: Map<string, Balance> = Map().set('TKN', makeBalance({
|
||||
address: tokenAddress,
|
||||
name: 'Token',
|
||||
symbol: 'TKN',
|
||||
decimals: 18,
|
||||
logoUrl: 'https://github.com/TrustWallet/tokens/blob/master/images/0x6810e776880c02933d47db1b9fc05908e5386b96.png?raw=true',
|
||||
funds,
|
||||
}))
|
||||
fetchBalancesMock.mockImplementation(() => store.dispatch(addBalances(address, balances)))
|
||||
await store.dispatch(fetchBalancesAction.fetchBalances(address))
|
||||
fetchBalancesMock.mockRestore()
|
||||
}
|
||||
|
||||
export const checkMinedMoveTokensTx = (Transaction: React$Component<any, any>, name: string) => {
|
||||
checkMinedTx(Transaction, name)
|
||||
}
|
||||
|
||||
export const checkPendingMoveTokensTx = async (
|
||||
Transaction: React$Component<any, any>,
|
||||
safeThreshold: number,
|
||||
name: string,
|
||||
statusses: string[],
|
||||
) => {
|
||||
await checkPendingTx(Transaction, safeThreshold, name, statusses)
|
||||
}
|
Loading…
Reference in New Issue