mirror of
https://github.com/prometheus/prometheus.git
synced 2024-11-18 19:44:06 -08:00
e0443e6fa3
* Add MetricFormat unit tests Signed-off-by: Dustin Hooten <dhooten@splunk.com> * Add App unit tests; Add debug script Signed-off-by: Dustin Hooten <dhooten@splunk.com> * Add Checkbox unit tests Signed-off-by: Dustin Hooten <dhooten@splunk.com> * Add SeriesName unit tests Signed-off-by: Dustin Hooten <dhooten@splunk.com> * Add QueryStatsView unit test Signed-off-by: Dustin Hooten <dhooten@splunk.com> * Add Legend unit tests Signed-off-by: Dustin Hooten <dhooten@splunk.com> * Remove unused utils/func Signed-off-by: Dustin Hooten <dhooten@splunk.com> * Add utils/urlParams unit test Signed-off-by: Dustin Hooten <dhooten@splunk.com> * Add utils/timeFormat unit test Signed-off-by: Dustin Hooten <dhooten@splunk.com> * Add ExpressionInput unit tests Signed-off-by: Dustin Hooten <dhooten@splunk.com> * Add GraphControls unit test Signed-off-by: Dustin Hooten <dhooten@splunk.com> * Add TimeInput unit test Signed-off-by: Dustin Hooten <dhooten@splunk.com> * Add DataTable unit test Signed-off-by: Dustin Hooten <dhooten@splunk.com> * Add SanitizeHTML unit test Signed-off-by: Dustin Hooten <dhooten@splunk.com> * Add Graph unit test Signed-off-by: Dustin Hooten <dhooten@splunk.com> * Extract utils/html Signed-off-by: Dustin Hooten <dhooten@splunk.com> * Add PanelList unit test Signed-off-by: Dustin Hooten <dhooten@splunk.com> * Add Panel unit test Signed-off-by: Dustin Hooten <dhooten@splunk.com> * Add react-ui test coverage report to CI Signed-off-by: Dustin Hooten <dhooten@splunk.com>
59 lines
2 KiB
TypeScript
59 lines
2 KiB
TypeScript
import * as React from 'react';
|
|
import { shallow } from 'enzyme';
|
|
import sinon from 'sinon';
|
|
import TimeInput from './TimeInput';
|
|
import { Button, InputGroup, InputGroupAddon, Input } from 'reactstrap';
|
|
import { FontAwesomeIcon } from '@fortawesome/react-fontawesome';
|
|
import { faChevronLeft, faChevronRight, faTimes } from '@fortawesome/free-solid-svg-icons';
|
|
|
|
describe('TimeInput', () => {
|
|
const timeInputProps = {
|
|
time: 1572102237932,
|
|
range: 60 * 60 * 7,
|
|
placeholder: 'time input',
|
|
onChangeTime: (): void => {},
|
|
};
|
|
const timeInput = shallow(<TimeInput {...timeInputProps} />);
|
|
it('renders the string "scalar"', () => {
|
|
const inputGroup = timeInput.find(InputGroup);
|
|
expect(inputGroup.prop('className')).toEqual('time-input');
|
|
expect(inputGroup.prop('size')).toEqual('sm');
|
|
});
|
|
|
|
it('renders buttons to adjust time', () => {
|
|
[
|
|
{
|
|
position: 'prepend',
|
|
title: 'Decrease time',
|
|
icon: faChevronLeft,
|
|
},
|
|
{
|
|
position: 'append',
|
|
title: 'Clear time',
|
|
icon: faTimes,
|
|
},
|
|
{
|
|
position: 'append',
|
|
title: 'Increase time',
|
|
icon: faChevronRight,
|
|
},
|
|
].forEach(button => {
|
|
const onChangeTime = sinon.spy();
|
|
const timeInput = shallow(<TimeInput {...timeInputProps} onChangeTime={onChangeTime} />);
|
|
const addon = timeInput.find(InputGroupAddon).filterWhere(addon => addon.prop('addonType') === button.position);
|
|
const btn = addon.find(Button).filterWhere(btn => btn.prop('title') === button.title);
|
|
const icon = btn.find(FontAwesomeIcon);
|
|
expect(icon.prop('icon')).toEqual(button.icon);
|
|
expect(icon.prop('fixedWidth')).toBe(true);
|
|
btn.simulate('click');
|
|
expect(onChangeTime.calledOnce).toBe(true);
|
|
});
|
|
});
|
|
|
|
it('renders an Input', () => {
|
|
const input = timeInput.find(Input);
|
|
expect(input.prop('placeholder')).toEqual(timeInputProps.placeholder);
|
|
expect(input.prop('innerRef')).toEqual({ current: null });
|
|
});
|
|
});
|