import * as React from 'react'; import { shallow } from 'enzyme'; import SeriesName from './SeriesName'; describe('SeriesName', () => { describe('with labels=null', () => { const seriesNameProps = { labels: null, format: false, }; const seriesName = shallow(); it('renders the string "scalar"', () => { expect(seriesName.text()).toEqual('scalar'); }); }); describe('with labels defined and format false', () => { const seriesNameProps = { labels: { __name__: 'metric_name', label1: 'value_1', label2: 'value_2', label3: 'value_3', }, format: false, }; const seriesName = shallow(); it('renders the series name as a string', () => { expect(seriesName.text()).toEqual('metric_name{label1="value_1", label2="value_2", label3="value_3"}'); }); }); describe('with labels defined and format true', () => { const seriesNameProps = { labels: { __name__: 'metric_name', label1: 'value_1', label2: 'value_2', label3: 'value_3', }, format: true, }; const seriesName = shallow(); it('renders the series name as a series of spans', () => { expect(seriesName.children()).toHaveLength(6); const testCases = [ { name: 'metric_name', className: 'legend-metric-name' }, { name: '{', className: 'legend-label-brace' }, { name: 'label1', value: 'value_1', className: 'legend-label-name' }, { name: 'label2', value: 'value_2', className: 'legend-label-name' }, { name: 'label3', value: 'value_3', className: 'legend-label-name' }, { name: '}', className: 'legend-label-brace' }, ]; testCases.forEach((tc, i) => { const child = seriesName.childAt(i); const text = child .children() .map((ch) => ch.text()) .join(''); switch (child.children().length) { case 1: expect(text).toEqual(tc.name); expect(child.prop('className')).toEqual(tc.className); break; case 3: expect(text).toEqual(`${tc.name}="${tc.value}"`); expect(child.childAt(0).prop('className')).toEqual('legend-label-name'); expect(child.childAt(2).prop('className')).toEqual('legend-label-value'); break; case 4: expect(text).toEqual(`, ${tc.name}="${tc.value}"`); expect(child.childAt(1).prop('className')).toEqual('legend-label-name'); expect(child.childAt(3).prop('className')).toEqual('legend-label-value'); break; default: fail('incorrect number of children: ' + child.children().length); } }); }); }); });