Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 5 additions & 0 deletions .changeset/legal-cameras-lose.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
'@smartcontractkit/operator-ui': minor
---

New checkbox to use gRPC transport for External Adapters
39 changes: 39 additions & 0 deletions src/components/Form/BridgeForm.test.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@ describe('BridgeForm', () => {
url: '',
minimumContractPayment: '0',
confirmations: 0,
useConnectionManager: false,
}

render(
Expand All @@ -38,6 +39,7 @@ describe('BridgeForm', () => {
url: '',
minimumContractPayment: '0',
confirmations: 0,
useConnectionManager: false,
}

render(
Expand All @@ -59,6 +61,7 @@ describe('BridgeForm', () => {
url: '',
minimumContractPayment: '0',
confirmations: 0,
useConnectionManager: false,
}

render(
Expand Down Expand Up @@ -92,9 +95,45 @@ describe('BridgeForm', () => {
url: 'https://www.test.com',
minimumContractPayment: '1',
confirmations: 2,
useConnectionManager: false,
},
expect.anything(),
),
)
})

it('submits useConnectionManager when checked', async () => {
const handleSubmit = jest.fn()
const initialValues: FormValues = {
name: '',
url: '',
minimumContractPayment: '0',
confirmations: 0,
useConnectionManager: false,
}

render(
<BridgeForm
initialValues={initialValues}
onSubmit={handleSubmit}
submitButtonText="Submit"
/>,
)

userEvent.type(getByRole('textbox', { name: /name */i }), 'bridge1')
userEvent.type(
getByRole('textbox', { name: /bridge url */i }),
'https://www.test.com',
)
userEvent.click(getByRole('checkbox', { name: /use grpc transport/i }))

userEvent.click(getByRole('button', { name: /submit/i }))

await waitFor(() =>
expect(handleSubmit).toHaveBeenCalledWith(
expect.objectContaining({ useConnectionManager: true }),
expect.anything(),
),
)
})
})
18 changes: 17 additions & 1 deletion src/components/Form/BridgeForm.tsx
Original file line number Diff line number Diff line change
@@ -1,7 +1,10 @@
import React from 'react'

import { Field, Form, Formik, FormikHelpers } from 'formik'
import { FormikTextField as TextField } from './FormikFields'
import {
FormikTextField as TextField,
FormikCheckboxWithLabel as CheckboxWithLabel,
} from './FormikFields'
import * as Yup from 'yup'

import Button from '@mui/material/Button'
Expand All @@ -12,6 +15,7 @@
minimumContractPayment: string
confirmations: number
url: string
useConnectionManager: boolean
}

const ValidationSchema = Yup.object().shape({
Expand Down Expand Up @@ -42,83 +46,95 @@
onSubmit={onSubmit}
>
{({ isSubmitting }) => (
<>
<Form data-testid="bridge-form" noValidate>
<Grid container spacing={2}>
<Grid item xs={12} md={7}>
<Field
component={TextField}
id="name"
name="name"
label="Name"
disabled={nameDisabled}
required
fullWidth
FormHelperTextProps={{ 'data-testid': 'name-helper-text' }}
/>
</Grid>

<Grid item xs={12} md={7}>
<Field
component={TextField}
id="url"
name="url"
label="Bridge URL"
placeholder="https://"
required
fullWidth
FormHelperTextProps={{ 'data-testid': 'url-helper-text' }}
/>
</Grid>

<Grid item xs={12} md={7}>
<Grid container spacing={2}>
<Grid item xs={7}>
<Field
component={TextField}
id="minimumContractPayment"
name="minimumContractPayment"
label="Minimum Contract Payment"
placeholder="0"
fullWidth
inputProps={{ min: 0 }}
FormHelperTextProps={{
'data-testid': 'minimumContractPayment-helper-text',
}}
/>
</Grid>
<Grid item xs={7}>
<Field
component={TextField}
id="confirmations"
name="confirmations"
label="Confirmations"
placeholder="0"
type="number"
fullWidth
inputProps={{ min: 0 }}
FormHelperTextProps={{
'data-testid': 'confirmations-helper-text',
}}
/>
</Grid>
</Grid>
</Grid>

<Grid item xs={12} md={7}>
<Field
component={CheckboxWithLabel}
name="useConnectionManager"
type="checkbox"
data-testid="useConnectionManager"
Label={{
label: 'Use gRPC transport',
}}
/>
</Grid>

<Grid item xs={12} md={7}>
<Button
variant="contained"
color="primary"
type="submit"
disabled={isSubmitting}
size="large"
>
{submitButtonText}
</Button>
</Grid>
</Grid>
</Form>
</>

Check warning on line 137 in src/components/Form/BridgeForm.tsx

View check run for this annotation

CL-sonarqube-production / SonarQube Code Analysis

A fragment with only one child is redundant.

[S6749] Redundant JSX fragments should be removed See more on https://sonarqube.main.prod.cldev.sh/project/issues?id=smartcontractkit_operator-ui&pullRequest=118&issues=7e9e6711-3847-46dd-b746-6b1188b27c1c&open=7e9e6711-3847-46dd-b746-6b1188b27c1c
)}
</Formik>
)
Expand Down
1 change: 1 addition & 0 deletions src/screens/Bridge/BridgeCard.test.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,7 @@ describe('BridgeCard', () => {
expect(queryByText(bridge.outgoingToken)).toBeInTheDocument()
expect(queryByText(bridge.confirmations)).toBeInTheDocument()
expect(queryByText(bridge.minimumContractPayment)).toBeInTheDocument()
expect(queryByText('Use gRPC transport')).toBeInTheDocument()
})

it('calls delete', () => {
Expand Down
7 changes: 7 additions & 0 deletions src/screens/Bridge/BridgeCard.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -91,6 +91,13 @@ export const BridgeCard: React.FC<Props> = ({ bridge, onDelete }) => {
<DetailsCardItemTitle title="Min. Contract Payment" />
<DetailsCardItemValue value={bridge.minimumContractPayment} />
</Grid>

<Grid item xs={12} sm={4} md={3}>
<DetailsCardItemTitle title="Use gRPC transport" />
<DetailsCardItemValue
value={bridge.useConnectionManager ? 'Yes' : 'No'}
/>
</Grid>
</Grid>
</DetailsCard>
)
Expand Down
1 change: 1 addition & 0 deletions src/screens/Bridge/BridgeView.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@ export const BRIDGE_PAYLOAD_FIELDS = gql`
confirmations
outgoingToken
minimumContractPayment
useConnectionManager
}
`

Expand Down
9 changes: 9 additions & 0 deletions src/screens/Bridges/BridgeRow.test.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,15 @@ describe('BridgeRow', () => {
expect(queryByText('http://bridge.com')).toBeInTheDocument()
expect(queryByText('1')).toBeInTheDocument()
expect(queryByText('0')).toBeInTheDocument()
expect(queryByText('No')).toBeInTheDocument()
})

it('renders gRPC transport as Yes when enabled', () => {
const bridge = buildBridge({ useConnectionManager: true })

renderComponent(bridge)

expect(queryByText('Yes')).toBeInTheDocument()
})

it('links to the row details', async () => {
Expand Down
5 changes: 5 additions & 0 deletions src/screens/Bridges/BridgeRow.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,11 @@ export const BridgeRow = withStyles(tableStyles)(({
<TableCell>
<Typography variant="body1">{bridge.minimumContractPayment}</Typography>
</TableCell>
<TableCell>
<Typography variant="body1">
{bridge.useConnectionManager ? 'Yes' : 'No'}
</Typography>
</TableCell>
</TableRow>
)
})
1 change: 1 addition & 0 deletions src/screens/Bridges/BridgesView.test.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,7 @@ describe('BridgesView', () => {
expect(queryByText('URL')).toBeInTheDocument()
expect(queryByText('Default Confirmations')).toBeInTheDocument()
expect(queryByText('Minimum Contract Payment')).toBeInTheDocument()
expect(queryByText('Use gRPC transport')).toBeInTheDocument()

expect(queryByText('bridge-api1')).toBeInTheDocument()
expect(queryByText('http://bridge1.com')).toBeInTheDocument()
Expand Down
2 changes: 2 additions & 0 deletions src/screens/Bridges/BridgesView.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,7 @@ export const BRIDGES_PAYLOAD__RESULTS_FIELDS = gql`
url
confirmations
minimumContractPayment
useConnectionManager
}
`

Expand Down Expand Up @@ -69,6 +70,7 @@ export const BridgesView: React.FC<Props> = ({
<TableCell>URL</TableCell>
<TableCell>Default Confirmations</TableCell>
<TableCell>Minimum Contract Payment</TableCell>
<TableCell>Use gRPC transport</TableCell>
</TableRow>
</TableHead>
<TableBody>
Expand Down
3 changes: 3 additions & 0 deletions src/screens/EditBridge/EditBridgeScreen.test.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -58,6 +58,7 @@ describe('EditBridgeScreen', () => {
url: 'https://www.test.com',
minimumContractPayment: '1',
confirmations: 10,
useConnectionManager: false,
},
},
},
Expand Down Expand Up @@ -138,6 +139,7 @@ describe('EditBridgeScreen', () => {
url: bridge.url,
minimumContractPayment: bridge.minimumContractPayment,
confirmations: bridge.confirmations,
useConnectionManager: bridge.useConnectionManager,
},
},
},
Expand Down Expand Up @@ -177,6 +179,7 @@ describe('EditBridgeScreen', () => {
url: bridge.url,
minimumContractPayment: bridge.minimumContractPayment,
confirmations: bridge.confirmations,
useConnectionManager: bridge.useConnectionManager,
},
},
},
Expand Down
1 change: 1 addition & 0 deletions src/screens/EditBridge/EditBridgeView.test.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,7 @@ describe('EditBridgeView', () => {
url: 'http://bridge.com',
minimumContractPayment: '0',
confirmations: 1,
useConnectionManager: false,
})
})

Expand Down
1 change: 1 addition & 0 deletions src/screens/EditBridge/EditBridgeView.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@ export const EditBridgeView: React.FC<Props> = ({ bridge, onSubmit }) => {
url: bridge.url,
minimumContractPayment: bridge.minimumContractPayment,
confirmations: bridge.confirmations,
useConnectionManager: bridge.useConnectionManager,
}

return (
Expand Down
2 changes: 2 additions & 0 deletions src/screens/NewBridge/NewBridgeScreen.test.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,7 @@ describe('NewBridgeScreen', () => {
url: 'https://www.test.com',
minimumContractPayment: '0',
confirmations: 0,
useConnectionManager: false,
},
},
},
Expand Down Expand Up @@ -84,6 +85,7 @@ describe('NewBridgeScreen', () => {
url: 'https://www.test.com',
minimumContractPayment: '0',
confirmations: 0,
useConnectionManager: false,
},
},
},
Expand Down
1 change: 1 addition & 0 deletions src/screens/NewBridge/NewBridgeView.test.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@ describe('NewBridgeView', () => {
url: '',
minimumContractPayment: '0',
confirmations: 0,
useConnectionManager: false,
})
})
})
1 change: 1 addition & 0 deletions src/screens/NewBridge/NewBridgeView.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@ const initialValues = {
url: '',
minimumContractPayment: '0',
confirmations: 0,
useConnectionManager: false,
}

type Props = Pick<FormProps, 'onSubmit'>
Expand Down
1 change: 1 addition & 0 deletions support/factories/gql/fetchBridge.ts
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ export function buildBridgePayloadFields(
confirmations: 1,
minimumContractPayment: '0',
outgoingToken: 'outgoing1',
useConnectionManager: false,
...overrides,
}
}
1 change: 1 addition & 0 deletions support/factories/gql/fetchBridges.ts
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@ export function buildBridge(
url: 'http://bridge.com',
confirmations: 1,
minimumContractPayment: '0',
useConnectionManager: false,
...overrides,
}
}
Expand Down
Loading