influxdb/ui/test/flux/components/FuncArgInput.test.tsx

79 lines
2.1 KiB
TypeScript

import React from 'react'
import {shallow} from 'enzyme'
import FuncArgInput from 'src/flux/components/FuncArgInput'
const setup = (override?) => {
const props = {
funcID: '1',
argKey: 'db',
value: 'db1',
type: 'string',
onChangeArg: () => {},
onGenerateScript: () => {},
...override,
}
const wrapper = shallow(<FuncArgInput {...props} />)
return {
wrapper,
props,
}
}
describe('Flux.Components.FuncArgInput', () => {
describe('rendering', () => {
it('renders without errors', () => {
const {wrapper} = setup()
expect(wrapper.exists()).toBe(true)
})
})
describe('user interraction', () => {
describe('typing', () => {
describe('hitting enter', () => {
it('generates a new script when Enter is pressed', () => {
const onGenerateScript = jest.fn()
const preventDefault = jest.fn()
const {wrapper} = setup({onGenerateScript})
const input = wrapper.find('input')
input.simulate('keydown', {key: 'Enter', preventDefault})
expect(onGenerateScript).toHaveBeenCalledTimes(1)
expect(preventDefault).toHaveBeenCalledTimes(1)
})
it('it does not generate a new script when typing', () => {
const onGenerateScript = jest.fn()
const preventDefault = jest.fn()
const {wrapper} = setup({onGenerateScript})
const input = wrapper.find('input')
input.simulate('keydown', {key: 'a', preventDefault})
expect(onGenerateScript).not.toHaveBeenCalled()
expect(preventDefault).not.toHaveBeenCalled()
})
})
describe('changing the input value', () => {
it('calls onChangeArg', () => {
const onChangeArg = jest.fn()
const {wrapper, props} = setup({onChangeArg})
const input = wrapper.find('input')
const value = 'db2'
input.simulate('change', {target: {value}})
const {funcID, argKey} = props
expect(onChangeArg).toHaveBeenCalledWith({funcID, key: argKey, value})
})
})
})
})
})