safe creation test wip
This commit is contained in:
parent
ead30855a6
commit
4f54a60866
|
@ -21,6 +21,7 @@ type Props = {
|
||||||
onReset?: () => void,
|
onReset?: () => void,
|
||||||
initialValues?: Object,
|
initialValues?: Object,
|
||||||
disabledWhenValidating?: boolean,
|
disabledWhenValidating?: boolean,
|
||||||
|
testId?: string,
|
||||||
}
|
}
|
||||||
|
|
||||||
type State = {
|
type State = {
|
||||||
|
@ -145,7 +146,7 @@ class GnoStepper extends React.PureComponent<Props, State> {
|
||||||
|
|
||||||
render() {
|
render() {
|
||||||
const {
|
const {
|
||||||
steps, children, classes, disabledWhenValidating = false,
|
steps, children, classes, disabledWhenValidating = false, testId,
|
||||||
} = this.props
|
} = this.props
|
||||||
const { page, values } = this.state
|
const { page, values } = this.state
|
||||||
const activePage = this.getActivePageFrom(children)
|
const activePage = this.getActivePageFrom(children)
|
||||||
|
@ -154,7 +155,7 @@ class GnoStepper extends React.PureComponent<Props, State> {
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<React.Fragment>
|
<React.Fragment>
|
||||||
<GnoForm onSubmit={this.handleSubmit} initialValues={values} validation={this.validate}>
|
<GnoForm onSubmit={this.handleSubmit} initialValues={values} validation={this.validate} testId={testId}>
|
||||||
{(submitting: boolean, validating: boolean, ...rest: any) => {
|
{(submitting: boolean, validating: boolean, ...rest: any) => {
|
||||||
const disabled = disabledWhenValidating ? submitting || validating : submitting
|
const disabled = disabledWhenValidating ? submitting || validating : submitting
|
||||||
const controls = (
|
const controls = (
|
||||||
|
|
|
@ -16,6 +16,7 @@ type Props = {
|
||||||
validation?: (values: Object) => Object | Promise<Object>,
|
validation?: (values: Object) => Object | Promise<Object>,
|
||||||
initialValues?: Object,
|
initialValues?: Object,
|
||||||
formMutators?: Object,
|
formMutators?: Object,
|
||||||
|
testId?: string,
|
||||||
}
|
}
|
||||||
|
|
||||||
const stylesBasedOn = (padding: number): $Shape<CSSStyleDeclaration> => ({
|
const stylesBasedOn = (padding: number): $Shape<CSSStyleDeclaration> => ({
|
||||||
|
@ -25,7 +26,7 @@ const stylesBasedOn = (padding: number): $Shape<CSSStyleDeclaration> => ({
|
||||||
})
|
})
|
||||||
|
|
||||||
const GnoForm = ({
|
const GnoForm = ({
|
||||||
onSubmit, validation, initialValues, children, padding = 0, formMutators,
|
onSubmit, validation, initialValues, children, padding = 0, formMutators, testId = '',
|
||||||
}: Props) => (
|
}: Props) => (
|
||||||
<Form
|
<Form
|
||||||
validate={validation}
|
validate={validation}
|
||||||
|
@ -33,7 +34,7 @@ const GnoForm = ({
|
||||||
initialValues={initialValues}
|
initialValues={initialValues}
|
||||||
mutators={formMutators}
|
mutators={formMutators}
|
||||||
render={({ handleSubmit, ...rest }) => (
|
render={({ handleSubmit, ...rest }) => (
|
||||||
<form onSubmit={handleSubmit} style={stylesBasedOn(padding)}>
|
<form onSubmit={handleSubmit} style={stylesBasedOn(padding)} data-testid={testId}>
|
||||||
{children(rest.submitting, rest.validating, rest, rest.form.mutators)}
|
{children(rest.submitting, rest.validating, rest, rest.form.mutators)}
|
||||||
</form>
|
</form>
|
||||||
)}
|
)}
|
||||||
|
|
|
@ -14,9 +14,7 @@ import { getOwnerNameBy, getOwnerAddressBy, FIELD_CONFIRMATIONS } from '~/routes
|
||||||
import { history } from '~/store'
|
import { history } from '~/store'
|
||||||
import { secondary } from '~/theme/variables'
|
import { secondary } from '~/theme/variables'
|
||||||
|
|
||||||
const getSteps = () => [
|
const getSteps = () => ['Start', 'Owners', 'Confirmations', 'Review']
|
||||||
'Start', 'Owners', 'Confirmations', 'Review',
|
|
||||||
]
|
|
||||||
|
|
||||||
const initialValuesFrom = (userAccount: string) => ({
|
const initialValuesFrom = (userAccount: string) => ({
|
||||||
[getOwnerNameBy(0)]: 'My Metamask (me)',
|
[getOwnerNameBy(0)]: 'My Metamask (me)',
|
||||||
|
@ -49,8 +47,7 @@ const Layout = ({
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<React.Fragment>
|
<React.Fragment>
|
||||||
{ provider
|
{provider ? (
|
||||||
? (
|
|
||||||
<Block>
|
<Block>
|
||||||
<Row align="center">
|
<Row align="center">
|
||||||
<IconButton onClick={back} style={iconStyle} disableRipple>
|
<IconButton onClick={back} style={iconStyle} disableRipple>
|
||||||
|
@ -58,28 +55,16 @@ const Layout = ({
|
||||||
</IconButton>
|
</IconButton>
|
||||||
<Heading tag="h2">Create New Safe</Heading>
|
<Heading tag="h2">Create New Safe</Heading>
|
||||||
</Row>
|
</Row>
|
||||||
<Stepper
|
<Stepper onSubmit={onCallSafeContractSubmit} steps={steps} initialValues={initialValues} testId="create-safe-form">
|
||||||
onSubmit={onCallSafeContractSubmit}
|
<Stepper.Page>{SafeNameField}</Stepper.Page>
|
||||||
steps={steps}
|
<Stepper.Page>{SafeOwnersFields}</Stepper.Page>
|
||||||
initialValues={initialValues}
|
<Stepper.Page validate={safeFieldsValidation}>{SafeThresholdField}</Stepper.Page>
|
||||||
>
|
<Stepper.Page network={network}>{Review}</Stepper.Page>
|
||||||
<Stepper.Page>
|
|
||||||
{ SafeNameField }
|
|
||||||
</Stepper.Page>
|
|
||||||
<Stepper.Page>
|
|
||||||
{ SafeOwnersFields }
|
|
||||||
</Stepper.Page>
|
|
||||||
<Stepper.Page validate={safeFieldsValidation}>
|
|
||||||
{ SafeThresholdField }
|
|
||||||
</Stepper.Page>
|
|
||||||
<Stepper.Page network={network}>
|
|
||||||
{ Review }
|
|
||||||
</Stepper.Page>
|
|
||||||
</Stepper>
|
</Stepper>
|
||||||
</Block>
|
</Block>
|
||||||
)
|
) : (
|
||||||
: <div>No metamask detected</div>
|
<div>No metamask detected</div>
|
||||||
}
|
)}
|
||||||
</React.Fragment>
|
</React.Fragment>
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,7 +1,6 @@
|
||||||
// @flow
|
// @flow
|
||||||
import * as React from 'react'
|
import * as React from 'react'
|
||||||
import { type Store } from 'redux'
|
import { type Store } from 'redux'
|
||||||
import TestUtils from 'react-dom/test-utils'
|
|
||||||
import { render, fireEvent, cleanup } from 'react-testing-library'
|
import { render, fireEvent, cleanup } from 'react-testing-library'
|
||||||
import Select from '@material-ui/core/Select'
|
import Select from '@material-ui/core/Select'
|
||||||
import { Provider } from 'react-redux'
|
import { Provider } from 'react-redux'
|
||||||
|
@ -32,12 +31,12 @@ const renderOpenSafeForm = async (localStore: Store<GlobalState>) => {
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
const deploySafe = async (safe: React$Component<{}>, threshold: number, numOwners: number) => {
|
const deploySafe = async (safe: any, threshold: number, numOwners: number) => {
|
||||||
const web3 = getWeb3()
|
const web3 = getWeb3()
|
||||||
const accounts = await web3.eth.getAccounts()
|
const accounts = await web3.eth.getAccounts()
|
||||||
|
|
||||||
expect(threshold).toBeLessThanOrEqual(numOwners)
|
expect(threshold).toBeLessThanOrEqual(numOwners)
|
||||||
const form = TestUtils.findRenderedDOMComponentWithTag(safe, 'form')
|
const form = safe.getByTestId('create-safe-form')
|
||||||
|
|
||||||
// Fill Safe's name
|
// Fill Safe's name
|
||||||
const inputs = TestUtils.scryRenderedDOMComponentsWithTag(safe, 'input')
|
const inputs = TestUtils.scryRenderedDOMComponentsWithTag(safe, 'input')
|
||||||
|
|
Loading…
Reference in New Issue