mirror of https://github.com/grafana/grafana
parent
e75b0a3c70
commit
3c60f98d13
@ -0,0 +1,72 @@ |
||||
import React from 'react'; |
||||
import { mount, ReactWrapper } from 'enzyme'; |
||||
import { ColorPickerPopover } from './ColorPickerPopover'; |
||||
import { ColorsPalette, BasicGreen, BasicBlue } from '../../utils/namedColorsPalette'; |
||||
import { ColorSwatch } from './NamedColorsGroup'; |
||||
import { flatten } from 'lodash'; |
||||
import { GrafanaTheme } from '../../types'; |
||||
|
||||
const allColors = flatten(Array.from(ColorsPalette.values())); |
||||
|
||||
describe('ColorPickerPopover', () => { |
||||
describe('rendering', () => { |
||||
it('should render provided color as selected if color provided by name', () => { |
||||
const wrapper = mount(<ColorPickerPopover color={BasicGreen.name} onChange={() => {}} />); |
||||
const selectedSwatch = wrapper.find(ColorSwatch).findWhere(node => node.key() === BasicGreen.name); |
||||
const notSelectedSwatches = wrapper.find(ColorSwatch).filterWhere(node => node.prop('isSelected') === false); |
||||
|
||||
expect(selectedSwatch.length).toBe(1); |
||||
expect(notSelectedSwatches.length).toBe(allColors.length - 1); |
||||
expect(selectedSwatch.prop('isSelected')).toBe(true); |
||||
}); |
||||
|
||||
it('should render provided color as selected if color provided by hex', () => { |
||||
const wrapper = mount(<ColorPickerPopover color={BasicGreen.variants.dark} onChange={() => {}} />); |
||||
const selectedSwatch = wrapper.find(ColorSwatch).findWhere(node => node.key() === BasicGreen.name); |
||||
const notSelectedSwatches = wrapper.find(ColorSwatch).filterWhere(node => node.prop('isSelected') === false); |
||||
|
||||
expect(selectedSwatch.length).toBe(1); |
||||
expect(notSelectedSwatches.length).toBe(allColors.length - 1); |
||||
expect(selectedSwatch.prop('isSelected')).toBe(true); |
||||
}); |
||||
}); |
||||
|
||||
describe('named colors support', () => { |
||||
const onChangeSpy = jest.fn(); |
||||
let wrapper: ReactWrapper; |
||||
|
||||
afterEach(() => { |
||||
wrapper.unmount(); |
||||
onChangeSpy.mockClear(); |
||||
}); |
||||
|
||||
it('should pass hex color value to onChange prop by default', () => { |
||||
wrapper = mount( |
||||
<ColorPickerPopover color={BasicGreen.variants.dark} onChange={onChangeSpy} theme={GrafanaTheme.Light} /> |
||||
); |
||||
const basicBlueSwatch = wrapper.find(ColorSwatch).findWhere(node => node.key() === BasicBlue.name); |
||||
|
||||
basicBlueSwatch.simulate('click'); |
||||
|
||||
expect(onChangeSpy).toBeCalledTimes(1); |
||||
expect(onChangeSpy).toBeCalledWith(BasicBlue.variants.light); |
||||
}); |
||||
|
||||
it('should pass color name to onChange prop when named colors enabled', () => { |
||||
wrapper = mount( |
||||
<ColorPickerPopover |
||||
enableNamedColors |
||||
color={BasicGreen.variants.dark} |
||||
onChange={onChangeSpy} |
||||
theme={GrafanaTheme.Light} |
||||
/> |
||||
); |
||||
const basicBlueSwatch = wrapper.find(ColorSwatch).findWhere(node => node.key() === BasicBlue.name); |
||||
|
||||
basicBlueSwatch.simulate('click'); |
||||
|
||||
expect(onChangeSpy).toBeCalledTimes(1); |
||||
expect(onChangeSpy).toBeCalledWith(BasicBlue.name); |
||||
}); |
||||
}); |
||||
}); |
@ -0,0 +1,33 @@ |
||||
import React from 'react'; |
||||
import { mount, ReactWrapper } from 'enzyme'; |
||||
import { NamedColorsPalette } from './NamedColorsPalette'; |
||||
import { ColorSwatch } from './NamedColorsGroup'; |
||||
import { BasicGreen } from '../../utils'; |
||||
import { GrafanaTheme } from '../../types'; |
||||
|
||||
describe('NamedColorsPalette', () => { |
||||
describe('theme support for named colors', () => { |
||||
let wrapper: ReactWrapper, selectedSwatch; |
||||
|
||||
afterEach(() => { |
||||
wrapper.unmount(); |
||||
}); |
||||
|
||||
it('should render provided color variant specific for theme', () => { |
||||
wrapper = mount(<NamedColorsPalette color={BasicGreen.name} theme={GrafanaTheme.Dark} onChange={() => {}} />); |
||||
selectedSwatch = wrapper.find(ColorSwatch).findWhere(node => node.key() === BasicGreen.name); |
||||
expect(selectedSwatch.prop('color')).toBe(BasicGreen.variants.dark); |
||||
|
||||
wrapper.unmount(); |
||||
wrapper = mount(<NamedColorsPalette color={BasicGreen.name} theme={GrafanaTheme.Light} onChange={() => {}} />); |
||||
selectedSwatch = wrapper.find(ColorSwatch).findWhere(node => node.key() === BasicGreen.name); |
||||
expect(selectedSwatch.prop('color')).toBe(BasicGreen.variants.light); |
||||
}); |
||||
|
||||
it('should render dar variant of provided color when theme not provided', () => { |
||||
wrapper = mount(<NamedColorsPalette color={BasicGreen.name} onChange={() => {}} />); |
||||
selectedSwatch = wrapper.find(ColorSwatch).findWhere(node => node.key() === BasicGreen.name); |
||||
expect(selectedSwatch.prop('color')).toBe(BasicGreen.variants.dark); |
||||
}); |
||||
}); |
||||
}); |
Loading…
Reference in new issue