Merge pull request #3738 from influxdata/tempVars/tests
Add two tests for template variablespull/10616/head
commit
803cfec5b8
|
@ -78,6 +78,7 @@ class TemplateControlBar extends Component<Props, State> {
|
||||||
<Authorized requiredRole={EDITOR_ROLE}>
|
<Authorized requiredRole={EDITOR_ROLE}>
|
||||||
<button
|
<button
|
||||||
className="btn btn-primary btn-sm template-control--manage"
|
className="btn btn-primary btn-sm template-control--manage"
|
||||||
|
data-test="add-template-variable"
|
||||||
onClick={this.handleAddVariable}
|
onClick={this.handleAddVariable}
|
||||||
>
|
>
|
||||||
<span className="icon plus" />
|
<span className="icon plus" />
|
||||||
|
|
|
@ -72,6 +72,7 @@ class TemplateControlDropdown extends PureComponent<Props, State> {
|
||||||
<span
|
<span
|
||||||
className="icon cog-thick"
|
className="icon cog-thick"
|
||||||
onClick={this.handleShowSettings}
|
onClick={this.handleShowSettings}
|
||||||
|
data-test="edit"
|
||||||
/>
|
/>
|
||||||
</label>
|
</label>
|
||||||
</Authorized>
|
</Authorized>
|
||||||
|
|
|
@ -3,13 +3,26 @@ import {shallow} from 'enzyme'
|
||||||
|
|
||||||
import TemplateControlBar from 'src/tempVars/components/TemplateControlBar'
|
import TemplateControlBar from 'src/tempVars/components/TemplateControlBar'
|
||||||
import TemplateControlDropdown from 'src/tempVars/components/TemplateControlDropdown'
|
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 {source} from 'test/resources'
|
||||||
|
|
||||||
|
import {TemplateType, TemplateValueType} from 'src/types'
|
||||||
|
|
||||||
const defaultProps = {
|
const defaultProps = {
|
||||||
isOpen: true,
|
isOpen: true,
|
||||||
templates: [
|
templates: [],
|
||||||
{
|
meRole: 'EDITOR',
|
||||||
|
isUsingAuth: true,
|
||||||
|
onSelectTemplate: () => {},
|
||||||
|
onSaveTemplates: () => {},
|
||||||
|
onCreateTemplateVariable: () => {},
|
||||||
|
source,
|
||||||
|
}
|
||||||
|
|
||||||
|
describe('TemplateControlBar', () => {
|
||||||
|
it('renders component with variables', () => {
|
||||||
|
const template = {
|
||||||
id: '000',
|
id: '000',
|
||||||
tempVar: ':alpha:',
|
tempVar: ':alpha:',
|
||||||
label: '',
|
label: '',
|
||||||
|
@ -26,42 +39,39 @@ const defaultProps = {
|
||||||
selected: false,
|
selected: false,
|
||||||
},
|
},
|
||||||
],
|
],
|
||||||
},
|
}
|
||||||
],
|
const props = {...defaultProps, templates: [template]}
|
||||||
meRole: 'EDITOR',
|
const wrapper = shallow(<TemplateControlBar {...props} />)
|
||||||
isUsingAuth: true,
|
|
||||||
onOpenTemplateManager: () => {},
|
|
||||||
onSelectTemplate: () => {},
|
|
||||||
onSaveTemplates: () => {},
|
|
||||||
onCreateTemplateVariable: () => {},
|
|
||||||
source,
|
|
||||||
}
|
|
||||||
|
|
||||||
const setup = (override = {}) => {
|
const dropdown = wrapper.find(TemplateControlDropdown)
|
||||||
const props = {...defaultProps, ...override}
|
expect(dropdown.exists()).toBe(true)
|
||||||
const wrapper = shallow(<TemplateControlBar {...props} />)
|
})
|
||||||
|
|
||||||
return {wrapper, props}
|
it('renders component without variables', () => {
|
||||||
}
|
const props = {...defaultProps}
|
||||||
|
const wrapper = shallow(<TemplateControlBar {...props} />)
|
||||||
|
|
||||||
describe('Dashboard.TemplateControlBar', () => {
|
const emptyState = wrapper.find({'data-test': 'empty-state'})
|
||||||
describe('rendering', () => {
|
|
||||||
it('renders component with variables', () => {
|
|
||||||
const {wrapper} = setup()
|
|
||||||
|
|
||||||
const dropdown = wrapper.find(TemplateControlDropdown)
|
const dropdown = wrapper.find(TemplateControlDropdown)
|
||||||
expect(dropdown.exists()).toBe(true)
|
|
||||||
})
|
|
||||||
|
|
||||||
it('renders component without variables', () => {
|
expect(dropdown.exists()).toBe(false)
|
||||||
const {wrapper} = setup({...defaultProps, templates: []})
|
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)
|
wrapper.find('[data-test="add-template-variable"]').simulate('click')
|
||||||
expect(emptyState.exists()).toBe(true)
|
|
||||||
})
|
const elements = wrapper
|
||||||
|
.find(SimpleOverlayTechnology)
|
||||||
|
.dive()
|
||||||
|
.find(TemplateVariableEditor)
|
||||||
|
|
||||||
|
expect(elements).toHaveLength(1)
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
|
|
|
@ -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)
|
||||||
|
})
|
||||||
|
})
|
Loading…
Reference in New Issue