Merge pull request #3738 from influxdata/tempVars/tests

Add two tests for template variables
pull/10616/head
Chris Henn 2018-06-21 09:58:49 -07:00 committed by GitHub
commit 803cfec5b8
4 changed files with 93 additions and 32 deletions

View File

@ -78,6 +78,7 @@ class TemplateControlBar extends Component<Props, State> {
<Authorized requiredRole={EDITOR_ROLE}>
<button
className="btn btn-primary btn-sm template-control--manage"
data-test="add-template-variable"
onClick={this.handleAddVariable}
>
<span className="icon plus" />

View File

@ -72,6 +72,7 @@ class TemplateControlDropdown extends PureComponent<Props, State> {
<span
className="icon cog-thick"
onClick={this.handleShowSettings}
data-test="edit"
/>
</label>
</Authorized>

View File

@ -3,13 +3,26 @@ import {shallow} from 'enzyme'
import TemplateControlBar from 'src/tempVars/components/TemplateControlBar'
import TemplateControlDropdown from 'src/tempVars/components/TemplateControlDropdown'
import {TemplateType, TemplateValueType} from 'src/types'
import TemplateVariableEditor from 'src/tempVars/components/TemplateVariableEditor'
import SimpleOverlayTechnology from 'src/shared/components/SimpleOverlayTechnology'
import {source} from 'test/resources'
import {TemplateType, TemplateValueType} from 'src/types'
const defaultProps = {
isOpen: true,
templates: [
{
templates: [],
meRole: 'EDITOR',
isUsingAuth: true,
onSelectTemplate: () => {},
onSaveTemplates: () => {},
onCreateTemplateVariable: () => {},
source,
}
describe('TemplateControlBar', () => {
it('renders component with variables', () => {
const template = {
id: '000',
tempVar: ':alpha:',
label: '',
@ -26,42 +39,39 @@ const defaultProps = {
selected: false,
},
],
},
],
meRole: 'EDITOR',
isUsingAuth: true,
onOpenTemplateManager: () => {},
onSelectTemplate: () => {},
onSaveTemplates: () => {},
onCreateTemplateVariable: () => {},
source,
}
}
const props = {...defaultProps, templates: [template]}
const wrapper = shallow(<TemplateControlBar {...props} />)
const setup = (override = {}) => {
const props = {...defaultProps, ...override}
const wrapper = shallow(<TemplateControlBar {...props} />)
const dropdown = wrapper.find(TemplateControlDropdown)
expect(dropdown.exists()).toBe(true)
})
return {wrapper, props}
}
it('renders component without variables', () => {
const props = {...defaultProps}
const wrapper = shallow(<TemplateControlBar {...props} />)
describe('Dashboard.TemplateControlBar', () => {
describe('rendering', () => {
it('renders component with variables', () => {
const {wrapper} = setup()
const emptyState = wrapper.find({'data-test': 'empty-state'})
const dropdown = wrapper.find(TemplateControlDropdown)
expect(dropdown.exists()).toBe(true)
})
const dropdown = wrapper.find(TemplateControlDropdown)
it('renders component without variables', () => {
const {wrapper} = setup({...defaultProps, templates: []})
expect(dropdown.exists()).toBe(false)
expect(emptyState.exists()).toBe(true)
})
const emptyState = wrapper.find({'data-test': 'empty-state'})
it('renders an TemplateVariableEditor overlay when adding a template variable', () => {
const props = {...defaultProps}
const wrapper = shallow(<TemplateControlBar {...props} />)
const dropdown = wrapper.find(TemplateControlDropdown)
expect(wrapper.find(SimpleOverlayTechnology)).toHaveLength(0)
expect(dropdown.exists()).toBe(false)
expect(emptyState.exists()).toBe(true)
})
wrapper.find('[data-test="add-template-variable"]').simulate('click')
const elements = wrapper
.find(SimpleOverlayTechnology)
.dive()
.find(TemplateVariableEditor)
expect(elements).toHaveLength(1)
})
})

View File

@ -0,0 +1,49 @@
import React from 'react'
import {shallow} from 'enzyme'
import SimpleOverlayTechnology from 'src/shared/components/SimpleOverlayTechnology'
import TemplateVariableEditor from 'src/tempVars/components/TemplateVariableEditor'
import TemplateControlDropdown from 'src/tempVars/components/TemplateControlDropdown'
import {source} from 'test/resources'
import {TemplateType, TemplateValueType} from 'src/types'
const defaultProps = {
template: {
id: '0',
tempVar: ':my-var:',
label: '',
type: TemplateType.Databases,
values: [
{
value: 'db0',
type: TemplateValueType.Database,
selected: true,
},
],
},
meRole: 'EDITOR',
isUsingAuth: true,
source,
onSelectTemplate: () => Promise.resolve(),
onCreateTemplate: () => Promise.resolve(),
onUpdateTemplate: () => Promise.resolve(),
onDeleteTemplate: () => Promise.resolve(),
}
describe('TemplateControlDropdown', () => {
it('should show a TemplateVariableEditor overlay when the settings icon is clicked', () => {
const wrapper = shallow(<TemplateControlDropdown {...defaultProps} />)
expect(wrapper.find(SimpleOverlayTechnology)).toHaveLength(0)
wrapper.find("[data-test='edit']").simulate('click')
const elements = wrapper
.find(SimpleOverlayTechnology)
.dive()
.find(TemplateVariableEditor)
expect(elements).toHaveLength(1)
})
})