Add tests

pull/10616/head
Christopher Henn 2018-07-11 14:18:58 -07:00 committed by Chris Henn
parent fe69503c5c
commit 6b92c0b5f1
3 changed files with 163 additions and 6 deletions

View File

@ -4,11 +4,13 @@ import {shallow} from 'enzyme'
import OverlayTechnology from 'src/reusable_ui/components/overlays/OverlayTechnology'
import TemplateVariableEditor from 'src/tempVars/components/TemplateVariableEditor'
import TemplateControl from 'src/tempVars/components/TemplateControl'
import TextTemplateSelector from 'src/tempVars/components/TextTemplateSelector'
import TemplateDropdown from 'src/tempVars/components/TemplateDropdown'
import {source} from 'test/resources'
import {TemplateType, TemplateValueType} from 'src/types'
const template = {
const defaultTemplate = () => ({
id: '0',
tempVar: ':my-var:',
label: '',
@ -21,23 +23,23 @@ const template = {
localSelected: true,
},
],
}
})
const defaultProps = {
const defaultProps = ({template = defaultTemplate()} = {}) => ({
template,
templates: [template],
meRole: 'EDITOR',
isUsingAuth: true,
source,
onPickTemplate: () => Promise.resolve(),
onPickValue: () => Promise.resolve(),
onCreateTemplate: () => Promise.resolve(),
onUpdateTemplate: () => Promise.resolve(),
onDeleteTemplate: () => Promise.resolve(),
}
})
describe('TemplateControl', () => {
it('should show a TemplateVariableEditor overlay when the settings icon is clicked', () => {
const wrapper = shallow(<TemplateControl {...defaultProps} />, {
const wrapper = shallow(<TemplateControl {...defaultProps()} />, {
context: {
store: {},
},
@ -60,4 +62,45 @@ describe('TemplateControl', () => {
expect(elements).toHaveLength(1)
})
it('displays a TextTemplateSelector for text templates', () => {
const props = defaultProps({
template: {
id: '0',
tempVar: ':my-var:',
label: '',
type: TemplateType.Text,
values: [
{
value: 'initial value',
type: TemplateValueType.Constant,
selected: true,
localSelected: true,
},
],
},
})
const wrapper = shallow(<TemplateControl {...props} />)
expect(wrapper.find(TemplateDropdown).length).toEqual(0)
expect(wrapper.find(TextTemplateSelector).length).toEqual(1)
})
it('displays a TemplateDropdown for non-text templates', () => {
const props = defaultProps({
template: {
id: '0',
tempVar: ':my-var:',
label: '',
type: TemplateType.CSV,
values: [],
},
})
const wrapper = shallow(<TemplateControl {...props} />)
expect(wrapper.find(TemplateDropdown).length).toEqual(1)
expect(wrapper.find(TextTemplateSelector).length).toEqual(0)
})
})

View File

@ -0,0 +1,54 @@
import React from 'react'
import {shallow} from 'enzyme'
import {source} from 'test/resources'
import TextTemplateBuilder from 'src/tempVars/components/TextTemplateBuilder'
import {TemplateType, TemplateValueType} from 'src/types'
describe('TextTemplateBuilder', () => {
test('updates template approriately after edits', () => {
const onUpdateTemplateMock = jest.fn()
const template = {
id: '0',
tempVar: ':my-var:',
label: '',
type: TemplateType.Text,
values: [
{
value: 'initial value',
type: TemplateValueType.Constant,
selected: true,
localSelected: true,
},
],
}
const props = {
template,
templates: [template],
source,
onUpdateTemplate: onUpdateTemplateMock,
onUpdateDefaultTemplateValue: () => {},
}
const wrapper = shallow(<TextTemplateBuilder {...props} />)
wrapper.find('input').simulate('change', {target: {value: 'new value'}})
expect(onUpdateTemplateMock).toBeCalledWith({
id: '0',
tempVar: ':my-var:',
label: '',
type: TemplateType.Text,
values: [
{
value: 'new value',
type: TemplateValueType.Constant,
selected: true,
localSelected: true,
},
],
})
})
})

View File

@ -0,0 +1,60 @@
import React from 'react'
import {shallow} from 'enzyme'
import TextTemplateSelector from 'src/tempVars/components/TextTemplateSelector'
import {TemplateType, TemplateValueType} from 'src/types'
describe('TextTemplateSelector', () => {
test('updates template on enter', () => {
const onUpdateTemplateMock = jest.fn()
const template = {
id: '0',
tempVar: ':my-var:',
label: '',
type: TemplateType.Text,
values: [
{
value: 'initial value',
type: TemplateValueType.Constant,
selected: true,
localSelected: true,
},
],
}
const wrapper = shallow(
<TextTemplateSelector
template={template}
onUpdateTemplate={onUpdateTemplateMock}
/>
)
wrapper.find('input').simulate('change', {target: {value: 'new value'}})
expect(wrapper.find('input').prop('value')).toEqual('new value')
wrapper.find('input').simulate('keyup', {
key: 'Enter',
currentTarget: {
blur() {
wrapper.find('input').simulate('blur')
},
},
})
expect(onUpdateTemplateMock).toBeCalledWith({
id: '0',
tempVar: ':my-var:',
label: '',
type: TemplateType.Text,
values: [
{
value: 'new value',
type: TemplateValueType.Constant,
selected: true,
localSelected: true,
},
],
})
})
})