mirror of
https://github.com/oceanprotocol/commons.git
synced 2023-03-15 18:03:00 +01:00
update tests
This commit is contained in:
parent
1b336e2e80
commit
264a066874
@ -1,29 +1,124 @@
|
||||
import React from 'react'
|
||||
import { render, waitForElement } from '@testing-library/react'
|
||||
import mockAxios from 'jest-mock-axios'
|
||||
import VersionNumbers from '.'
|
||||
import { StateMock } from '@react-mock/state'
|
||||
import { version as versionSquid } from '@oceanprotocol/squid/package.json'
|
||||
import VersionNumbers, { commonsVersion } from '.'
|
||||
|
||||
afterEach(() => {
|
||||
mockAxios.reset()
|
||||
})
|
||||
|
||||
const stateMock = {
|
||||
commons: { software: 'Commons', version: commonsVersion },
|
||||
squidJs: {
|
||||
software: 'Squid-js',
|
||||
version: versionSquid
|
||||
},
|
||||
aquarius: {
|
||||
isLoading: false,
|
||||
software: 'Aquarius',
|
||||
version: ''
|
||||
},
|
||||
brizo: {
|
||||
isLoading: false,
|
||||
software: 'Brizo',
|
||||
version: '',
|
||||
contracts: {},
|
||||
network: '',
|
||||
'keeper-version': '0.0.0',
|
||||
'keeper-url': ''
|
||||
},
|
||||
keeperContracts: {
|
||||
isLoading: false,
|
||||
software: 'Keeper Contracts',
|
||||
version: '',
|
||||
contracts: {},
|
||||
network: ''
|
||||
},
|
||||
faucet: {
|
||||
isLoading: false,
|
||||
software: 'Faucet',
|
||||
version: ''
|
||||
}
|
||||
}
|
||||
|
||||
const stateMockIncomplete = {
|
||||
commons: { software: 'Commons', version: commonsVersion },
|
||||
squidJs: {
|
||||
software: 'Squid-js',
|
||||
version: versionSquid
|
||||
},
|
||||
aquarius: {
|
||||
isLoading: false,
|
||||
software: 'Aquarius',
|
||||
version: undefined
|
||||
},
|
||||
brizo: {
|
||||
isLoading: false,
|
||||
software: 'Brizo',
|
||||
version: undefined,
|
||||
contracts: undefined,
|
||||
network: undefined,
|
||||
'keeper-version': undefined,
|
||||
'keeper-url': undefined
|
||||
},
|
||||
keeperContracts: {
|
||||
isLoading: false,
|
||||
software: 'Keeper Contracts',
|
||||
version: undefined,
|
||||
contracts: undefined,
|
||||
network: undefined
|
||||
},
|
||||
faucet: {
|
||||
isLoading: false,
|
||||
software: 'Faucet',
|
||||
version: undefined
|
||||
}
|
||||
}
|
||||
|
||||
const mockResponse = {
|
||||
data: {
|
||||
software: 'Brizo',
|
||||
version: '6.6.6',
|
||||
contracts: { Hello: 'Hello', Another: 'Hello' },
|
||||
network: 'hello'
|
||||
network: 'hello',
|
||||
'keeper-url': 'https://squid.com',
|
||||
'keeper-version': '6.6.6'
|
||||
}
|
||||
}
|
||||
|
||||
const mockResponseFaulty = {
|
||||
status: 404,
|
||||
statusText: 'Not Found',
|
||||
data: {}
|
||||
}
|
||||
|
||||
describe('VersionNumbers', () => {
|
||||
it('renders without crashing', () => {
|
||||
const { container } = render(<VersionNumbers />)
|
||||
const { container } = render(
|
||||
<StateMock state={stateMock}>
|
||||
<VersionNumbers />
|
||||
</StateMock>
|
||||
)
|
||||
mockAxios.mockResponse(mockResponse)
|
||||
expect(mockAxios.get).toHaveBeenCalled()
|
||||
expect(container.firstChild).toBeInTheDocument()
|
||||
})
|
||||
|
||||
it('renders without proper component response', () => {
|
||||
const { container } = render(
|
||||
<StateMock state={stateMockIncomplete}>
|
||||
<VersionNumbers />
|
||||
</StateMock>
|
||||
)
|
||||
mockAxios.mockResponse(mockResponseFaulty)
|
||||
expect(mockAxios.get).toHaveBeenCalled()
|
||||
expect(container.querySelector('table')).toHaveTextContent(
|
||||
'Could not get version'
|
||||
)
|
||||
})
|
||||
|
||||
it('minimal component versions in link title, prefixed with `v`', async () => {
|
||||
const { getByTitle } = render(<VersionNumbers minimal />)
|
||||
mockAxios.mockResponse(mockResponse)
|
||||
|
@ -18,8 +18,9 @@ import {
|
||||
} from '../../../config'
|
||||
|
||||
import VersionTable from './VersionTable'
|
||||
import { isJsonString } from './utils'
|
||||
|
||||
const commonsVersion =
|
||||
export const commonsVersion =
|
||||
process.env.NODE_ENV === 'production' ? version : `${version}-dev`
|
||||
|
||||
interface VersionNumbersProps {
|
||||
@ -120,6 +121,7 @@ export default class VersionNumbers extends PureComponent<
|
||||
aquariusHost,
|
||||
aquariusPort
|
||||
)
|
||||
aquarius &&
|
||||
aquarius.version !== undefined &&
|
||||
this.setState({ aquarius: { isLoading: false, ...aquarius } })
|
||||
}
|
||||
@ -133,6 +135,7 @@ export default class VersionNumbers extends PureComponent<
|
||||
brizo['keeper-url'] &&
|
||||
new URL(brizo['keeper-url']).hostname.split('.')[0]
|
||||
|
||||
brizo &&
|
||||
brizo.version !== undefined &&
|
||||
this.setState({
|
||||
brizo: {
|
||||
@ -153,21 +156,13 @@ export default class VersionNumbers extends PureComponent<
|
||||
const faucet = await this.getData(faucetScheme, faucetHost, faucetPort)
|
||||
|
||||
// backwards compatibility
|
||||
function IsJsonString(str: string) {
|
||||
try {
|
||||
JSON.parse(str)
|
||||
} catch (e) {
|
||||
return false
|
||||
}
|
||||
return true
|
||||
}
|
||||
|
||||
IsJsonString(faucet) === false &&
|
||||
isJsonString(faucet) === false &&
|
||||
this.setState({
|
||||
faucet: { ...this.state.faucet, isLoading: false }
|
||||
})
|
||||
|
||||
// the new thing
|
||||
faucet &&
|
||||
faucet.version !== undefined &&
|
||||
this.setState({ faucet: { isLoading: false, ...faucet } })
|
||||
}
|
||||
@ -179,10 +174,8 @@ export default class VersionNumbers extends PureComponent<
|
||||
cancelToken: this.signal.token
|
||||
})
|
||||
|
||||
if (response.status !== 200) {
|
||||
Logger.error(response.statusText)
|
||||
return
|
||||
}
|
||||
// fail silently
|
||||
if (response.status !== 200) return
|
||||
|
||||
return response.data
|
||||
} catch (error) {
|
||||
|
11
client/src/components/atoms/VersionNumbers/utils.test.ts
Normal file
11
client/src/components/atoms/VersionNumbers/utils.test.ts
Normal file
@ -0,0 +1,11 @@
|
||||
import { isJsonString } from './utils'
|
||||
|
||||
describe('isJsonString', () => {
|
||||
it('detects json correctly', () => {
|
||||
const testJson = isJsonString('{ "hello": "squid" }')
|
||||
expect(testJson).toBeTruthy()
|
||||
|
||||
const testNonJson = isJsonString('<strong>')
|
||||
expect(testNonJson).toBeFalsy()
|
||||
})
|
||||
})
|
8
client/src/components/atoms/VersionNumbers/utils.ts
Normal file
8
client/src/components/atoms/VersionNumbers/utils.ts
Normal file
@ -0,0 +1,8 @@
|
||||
export function isJsonString(str: string) {
|
||||
try {
|
||||
JSON.parse(str)
|
||||
} catch (e) {
|
||||
return false
|
||||
}
|
||||
return true
|
||||
}
|
Loading…
Reference in New Issue
Block a user