1
import * as React from 'react';
2
import { shallow, ShallowWrapper } from 'enzyme';
3
import SeriesName from './SeriesName';
5
describe('SeriesName', () => {
6
describe('with labels=null', () => {
7
const seriesNameProps = {
11
const seriesName = shallow(<SeriesName {...seriesNameProps} />);
12
it('renders the string "scalar"', () => {
13
expect(seriesName.text()).toEqual('scalar');
17
describe('with labels defined and format false', () => {
18
const seriesNameProps = {
20
__name__: 'metric_name',
27
const seriesName = shallow(<SeriesName {...seriesNameProps} />);
28
it('renders the series name as a string', () => {
29
expect(seriesName.text()).toEqual('metric_name{label1="value_1", label2="value_2", label3="value_3"}');
33
describe('with labels defined and format true', () => {
34
const seriesNameProps = {
36
__name__: 'metric_name',
43
const seriesName = shallow(<SeriesName {...seriesNameProps} />);
44
it('renders the series name as a series of spans', () => {
45
expect(seriesName.children()).toHaveLength(6);
47
{ name: 'metric_name', className: 'legend-metric-name' },
48
{ name: '{', className: 'legend-label-brace' },
49
{ name: 'label1', value: 'value_1', className: 'legend-label-name' },
50
{ name: 'label2', value: 'value_2', className: 'legend-label-name' },
51
{ name: 'label3', value: 'value_3', className: 'legend-label-name' },
52
{ name: '}', className: 'legend-label-brace' },
55
const testLabelContainerElement = (text: string, expectedText: string, container: ShallowWrapper) => {
56
expect(text).toEqual(expectedText);
57
expect(container.prop('className')).toEqual('legend-label-container');
58
expect(container.childAt(0).prop('className')).toEqual('legend-label-name');
59
expect(container.childAt(2).prop('className')).toEqual('legend-label-value');
62
testCases.forEach((tc, i) => {
63
const child = seriesName.childAt(i);
64
const firstChildElement = child.childAt(0);
65
const firstChildElementClass = firstChildElement.prop('className');
68
.map((ch) => ch.text())
70
switch (child.children().length) {
72
switch (firstChildElementClass) {
73
case 'legend-label-container':
74
testLabelContainerElement(text, `${tc.name}="${tc.value}"`, firstChildElement);
77
expect(text).toEqual(tc.name);
78
expect(child.prop('className')).toEqual(tc.className);
82
const container = child.childAt(1);
83
testLabelContainerElement(text, `, ${tc.name}="${tc.value}"`, container);
86
fail('incorrect number of children: ' + child.children().length);