influxdb/ui/test/shared/components/MeasurementListItem.test.tsx

79 lines
2.1 KiB
TypeScript

import {shallow} from 'enzyme'
import React from 'react'
import MeasurementListItem from 'src/shared/components/MeasurementListItem'
import TagList from 'src/shared/components/TagList'
import {query as defaultQuery} from 'test/resources'
const setup = (overrides = {}) => {
const props = {
query: defaultQuery,
querySource: {
links: {
proxy: '',
},
},
isActive: true,
measurement: defaultQuery.measurement,
numTagsActive: 3,
areTagsAccepted: true,
isQuerySupportedByExplorer: true,
onChooseTag: () => {},
onGroupByTag: () => {},
onAcceptReject: () => {},
onChooseMeasurement: () => () => {},
...overrides,
}
return shallow(<MeasurementListItem {...props} />)
}
describe('MeasurementListItem', () => {
describe('render', () => {
describe('toggling measurement', () => {
it('shows the correct state', () => {
const trigger = jest.fn()
const factory = jest.fn(() => trigger)
const wrapper = setup({onChooseMeasurement: factory})
expect(wrapper.find(TagList).exists()).toBe(true)
wrapper.simulate('click')
expect(factory).not.toHaveBeenCalled()
expect(wrapper.find(TagList).exists()).toBe(false)
wrapper.simulate('click')
expect(factory).not.toHaveBeenCalled()
expect(wrapper.find(TagList).exists()).toBe(true)
})
})
it('triggers callback when not current measurement', () => {
const trigger = jest.fn()
let measurement = 'boo'
const query = {...defaultQuery, measurement}
const factory = jest.fn((m: string) => {
measurement = m
return trigger
})
const wrapper = setup({
onChooseMeasurement: factory,
query,
})
expect(wrapper.find(TagList).exists()).toBe(false)
wrapper.simulate('click')
wrapper.setProps({query: {...defaultQuery, measurement}})
expect(factory).toHaveBeenCalledWith(defaultQuery.measurement)
expect(trigger).toHaveBeenCalled()
expect(wrapper.find(TagList).exists()).toBe(true)
})
})
})