diff --git a/src/routes/safe/test/Safe.withdraw.test.js b/src/routes/safe/test/Safe.withdraw.test.js
deleted file mode 100644
index 5699ec58..00000000
--- a/src/routes/safe/test/Safe.withdraw.test.js
+++ /dev/null
@@ -1,114 +0,0 @@
-// @flow
-import * as React from 'react'
-import TestUtils from 'react-dom/test-utils'
-import { Provider } from 'react-redux'
-import { ConnectedRouter } from 'react-router-redux'
-import { type Match } from 'react-router-dom'
-import Button from '~/components/layout/Button'
-import { aNewStore, history } from '~/store'
-import { addEtherTo } from '~/test/utils/tokenMovements'
-import { aDeployedSafe, executeWithdrawOn } from '~/routes/safe/store/test/builder/deployedSafe.builder'
-import { SAFELIST_ADDRESS } from '~/routes/routes'
-import SafeView from '~/routes/safe/component/Safe'
-import AppRoutes from '~/routes'
-import { WITHDRAW_BUTTON_TEXT } from '~/routes/safe/component/Safe/DailyLimit'
-import WithdrawComponent, { SEE_TXS_BUTTON_TEXT } from '~/routes/safe/component/Withdraw'
-import { getBalanceInEtherOf } from '~/wallets/getWeb3'
-import { sleep } from '~/utils/timer'
-import { getDailyLimitFrom } from '~/routes/safe/component/Withdraw/withdraw'
-import { type DailyLimitProps } from '~/routes/safe/store/model/dailyLimit'
-import { WITHDRAW_INDEX } from '~/test/builder/safe.dom.utils'
-import { buildMathPropsFrom } from '~/test/utils/buildReactRouterProps'
-import { safeSelector } from '~/routes/safe/store/selectors/index'
-import { filterMoveButtonsFrom } from '~/test/builder/safe.dom.builder'
-
-describe('React DOM TESTS > Withdraw funds from safe', () => {
- let SafeDom
- let store
- let address
- beforeEach(async () => {
- // create store
- store = aNewStore()
- // deploy safe updating store
- address = await aDeployedSafe(store)
- // navigate to SAFE route
- history.push(`${SAFELIST_ADDRESS}/${address}`)
- SafeDom = TestUtils.renderIntoDocument((
-
-
-
-
-
- ))
- })
-
- it('should withdraw funds under dailyLimit without needing confirmations', async () => {
- // add funds to safe
- await addEtherTo(address, '0.1')
- await sleep(3000)
- const Safe = TestUtils.findRenderedComponentWithType(SafeDom, SafeView)
-
- // $FlowFixMe
- const expandedButtons = TestUtils.scryRenderedDOMComponentsWithTag(Safe, 'button')
- const buttons = filterMoveButtonsFrom(expandedButtons)
- const addWithdrawButton = buttons[WITHDRAW_INDEX]
- expect(addWithdrawButton.getElementsByTagName('span')[0].innerHTML).toEqual(WITHDRAW_BUTTON_TEXT)
- TestUtils.Simulate.click(addWithdrawButton)
- await sleep(4000)
- const Withdraw = TestUtils.findRenderedComponentWithType(SafeDom, WithdrawComponent)
-
- // $FlowFixMe
- const inputs = TestUtils.scryRenderedDOMComponentsWithTag(Withdraw, 'input')
- const amountInEth = inputs[0]
- const toAddress = inputs[1]
- TestUtils.Simulate.change(amountInEth, { target: { value: '0.01' } })
- TestUtils.Simulate.change(toAddress, { target: { value: store.getState().providers.account } })
-
- // $FlowFixMe
- const form = TestUtils.findRenderedDOMComponentWithTag(Withdraw, 'form')
-
- TestUtils.Simulate.submit(form) // fill the form
- TestUtils.Simulate.submit(form) // confirming data
- await sleep(6000)
-
- const safeBalance = await getBalanceInEtherOf(address)
- expect(safeBalance).toBe('0.09')
-
- // $FlowFixMe
- const withdrawButtons = TestUtils.scryRenderedComponentsWithType(Withdraw, Button)
- const visitTxsButton = withdrawButtons[0]
- expect(visitTxsButton.props.children).toEqual(SEE_TXS_BUTTON_TEXT)
- })
-
- it('spentToday dailyLimitModule property is updated correctly', async () => {
- // add funds to safe
- await addEtherTo(address, '0.1')
-
- const match: Match = buildMathPropsFrom(address)
- const safe = safeSelector(store.getState(), { match })
- if (!safe) throw new Error()
- await executeWithdrawOn(safe, 0.01)
- await executeWithdrawOn(safe, 0.01)
-
- const ethAddress = 0
- const dailyLimit: DailyLimitProps = await getDailyLimitFrom(address, ethAddress)
-
- // THEN
- expect(dailyLimit.value).toBe(0.5)
- expect(dailyLimit.spentToday).toBe(0.02)
- })
-
- it('Withdraw button disabled when balance is 0', async () => {
- const Safe = TestUtils.findRenderedComponentWithType(SafeDom, SafeView)
- // $FlowFixMe
- const buttons = TestUtils.scryRenderedDOMComponentsWithTag(Safe, 'button')
- const addWithdrawButton = buttons[WITHDRAW_INDEX]
- expect(addWithdrawButton.getElementsByTagName('span')[0].innerHTML).toEqual(WITHDRAW_BUTTON_TEXT)
- expect(addWithdrawButton.hasAttribute('disabled')).toBe(true)
-
- await addEtherTo(address, '0.1')
- await sleep(1800)
-
- expect(addWithdrawButton.hasAttribute('disabled')).toBe(false)
- })
-})
diff --git a/src/test/safe.redux.withdraw.test.js b/src/test/safe.redux.withdraw.test.js
new file mode 100644
index 00000000..af8a1a80
--- /dev/null
+++ b/src/test/safe.redux.withdraw.test.js
@@ -0,0 +1,84 @@
+// @flow
+import * as React from 'react'
+import TestUtils from 'react-dom/test-utils'
+import { Provider } from 'react-redux'
+import { ConnectedRouter } from 'react-router-redux'
+import { aNewStore, history } from '~/store'
+import { addEtherTo } from '~/test/utils/tokenMovements'
+import { executeWithdrawOn } from '~/routes/safe/store/test/builder/deployedSafe.builder'
+import { SAFELIST_ADDRESS } from '~/routes/routes'
+import SafeView from '~/routes/safe/component/Safe'
+import AppRoutes from '~/routes'
+import { WITHDRAW_BUTTON_TEXT } from '~/routes/safe/component/Safe/DailyLimit'
+import { getBalanceInEtherOf } from '~/wallets/getWeb3'
+import { sleep } from '~/utils/timer'
+import { getDailyLimitFrom } from '~/routes/safe/component/Withdraw/withdraw'
+import { type DailyLimitProps } from '~/routes/safe/store/model/dailyLimit'
+import { WITHDRAW_INDEX } from '~/test/builder/safe.dom.utils'
+import { aMinedSafe } from '~/test/builder/safe.redux.builder'
+import { getSafeFrom } from '~/test/utils/safeHelper'
+import { filterMoveButtonsFrom } from '~/test/builder/safe.dom.builder'
+import { fetchTokens } from '~/routes/tokens/store/actions/fetchTokens'
+
+describe('React DOM TESTS > Withdraw funds from safe', () => {
+ let store
+ let safeAddress: string
+ beforeEach(async () => {
+ store = aNewStore()
+ safeAddress = await aMinedSafe(store)
+ })
+
+ it('should withdraw funds under dailyLimit without needing confirmations', async () => {
+ // add funds to safe
+ await addEtherTo(safeAddress, '0.1')
+
+ const safe = getSafeFrom(store.getState(), safeAddress)
+ await executeWithdrawOn(safe, 0.01)
+
+ const safeBalance = await getBalanceInEtherOf(safeAddress)
+ expect(safeBalance).toBe('0.09')
+ })
+
+ it('spentToday dailyLimitModule property is updated correctly', async () => {
+ // add funds to safe
+ await addEtherTo(safeAddress, '0.1')
+
+ const safe = getSafeFrom(store.getState(), safeAddress)
+ await executeWithdrawOn(safe, 0.01)
+ await executeWithdrawOn(safe, 0.01)
+
+ const ethAddress = 0
+ const dailyLimit: DailyLimitProps = await getDailyLimitFrom(safeAddress, ethAddress)
+
+ // THEN
+ expect(dailyLimit.value).toBe(0.5)
+ expect(dailyLimit.spentToday).toBe(0.02)
+ })
+
+ it('Withdraw button disabled when balance is 0', async () => {
+ // navigate to SAFE route
+ history.push(`${SAFELIST_ADDRESS}/${safeAddress}`)
+ const SafeDom = TestUtils.renderIntoDocument((
+
+
+
+
+
+ ))
+
+ await sleep(300)
+ const Safe = TestUtils.findRenderedComponentWithType(SafeDom, SafeView)
+ // $FlowFixMe
+ const buttons = TestUtils.scryRenderedDOMComponentsWithTag(Safe, 'button')
+ const filteredButtons = filterMoveButtonsFrom(buttons)
+ const addWithdrawButton = filteredButtons[WITHDRAW_INDEX]
+ expect(addWithdrawButton.getElementsByTagName('span')[0].innerHTML).toEqual(WITHDRAW_BUTTON_TEXT)
+ expect(addWithdrawButton.hasAttribute('disabled')).toBe(true)
+
+ await addEtherTo(safeAddress, '0.1')
+ await store.dispatch(fetchTokens(safeAddress))
+ await sleep(150)
+
+ expect(addWithdrawButton.hasAttribute('disabled')).toBe(false)
+ })
+})