|
|
|
@ -1,4 +1,4 @@ |
|
|
|
|
import { shallow } from 'enzyme'; |
|
|
|
|
import { render, screen, within } from '@testing-library/react'; |
|
|
|
|
import React from 'react'; |
|
|
|
|
|
|
|
|
|
import { createTheme } from '@grafana/data'; |
|
|
|
@ -7,44 +7,39 @@ import { UnThemedLogMessageAnsi as LogMessageAnsi } from './LogMessageAnsi'; |
|
|
|
|
|
|
|
|
|
describe('<LogMessageAnsi />', () => { |
|
|
|
|
it('renders string without ANSI codes', () => { |
|
|
|
|
const wrapper = shallow(<LogMessageAnsi value="Lorem ipsum" theme={createTheme()} />); |
|
|
|
|
render(<LogMessageAnsi value="Lorem ipsum" theme={createTheme()} />); |
|
|
|
|
|
|
|
|
|
expect(wrapper.find('span').exists()).toBe(false); |
|
|
|
|
expect(wrapper.text()).toBe('Lorem ipsum'); |
|
|
|
|
expect(screen.queryByTestId('ansiLogLine')).not.toBeInTheDocument(); |
|
|
|
|
expect(screen.queryByText('Lorem ipsum')).toBeInTheDocument(); |
|
|
|
|
}); |
|
|
|
|
it('renders string with ANSI codes', () => { |
|
|
|
|
const value = 'Lorem \u001B[31mipsum\u001B[0m et dolor'; |
|
|
|
|
const wrapper = shallow(<LogMessageAnsi value={value} theme={createTheme()} />); |
|
|
|
|
|
|
|
|
|
expect(wrapper.find('span')).toHaveLength(1); |
|
|
|
|
expect(wrapper.find('span').first().prop('style')).toMatchObject( |
|
|
|
|
expect.objectContaining({ |
|
|
|
|
color: expect.any(String), |
|
|
|
|
}) |
|
|
|
|
); |
|
|
|
|
expect(wrapper.find('span').first().text()).toBe('ipsum'); |
|
|
|
|
render(<LogMessageAnsi value={value} theme={createTheme()} />); |
|
|
|
|
|
|
|
|
|
expect(screen.queryByTestId('ansiLogLine')).toBeInTheDocument(); |
|
|
|
|
expect(screen.getAllByTestId('ansiLogLine')).toHaveLength(1); |
|
|
|
|
expect(screen.getAllByTestId('ansiLogLine').at(0)).toHaveAttribute('style', expect.stringMatching('color')); |
|
|
|
|
|
|
|
|
|
const { getByText } = within(screen.getAllByTestId('ansiLogLine').at(0)!); |
|
|
|
|
expect(getByText('ipsum')).toBeInTheDocument(); |
|
|
|
|
}); |
|
|
|
|
it('renders string with ANSI codes with correctly converted css classnames', () => { |
|
|
|
|
const value = 'Lorem \u001B[1;32mIpsum'; |
|
|
|
|
const wrapper = shallow(<LogMessageAnsi value={value} theme={createTheme()} />); |
|
|
|
|
|
|
|
|
|
expect(wrapper.find('span')).toHaveLength(1); |
|
|
|
|
expect(wrapper.find('span').first().prop('style')).toMatchObject( |
|
|
|
|
expect.objectContaining({ |
|
|
|
|
fontWeight: expect.any(String), |
|
|
|
|
}) |
|
|
|
|
); |
|
|
|
|
render(<LogMessageAnsi value={value} theme={createTheme()} />); |
|
|
|
|
|
|
|
|
|
expect(screen.queryByTestId('ansiLogLine')).toBeInTheDocument(); |
|
|
|
|
expect(screen.getAllByTestId('ansiLogLine')).toHaveLength(1); |
|
|
|
|
|
|
|
|
|
expect(screen.getAllByTestId('ansiLogLine').at(0)).toHaveAttribute('style', expect.stringMatching('font-weight')); |
|
|
|
|
}); |
|
|
|
|
it('renders string with ANSI dim code with appropriate themed color', () => { |
|
|
|
|
const value = 'Lorem \u001B[1;2mIpsum'; |
|
|
|
|
const theme = createTheme(); |
|
|
|
|
const wrapper = shallow(<LogMessageAnsi value={value} theme={theme} />); |
|
|
|
|
|
|
|
|
|
expect(wrapper.find('span')).toHaveLength(1); |
|
|
|
|
expect(wrapper.find('span').first().prop('style')).toMatchObject( |
|
|
|
|
expect.objectContaining({ |
|
|
|
|
color: theme.colors.text.secondary, |
|
|
|
|
}) |
|
|
|
|
); |
|
|
|
|
render(<LogMessageAnsi value={value} theme={theme} />); |
|
|
|
|
|
|
|
|
|
expect(screen.queryByTestId('ansiLogLine')).toBeInTheDocument(); |
|
|
|
|
expect(screen.getAllByTestId('ansiLogLine')).toHaveLength(1); |
|
|
|
|
|
|
|
|
|
expect(screen.getAllByTestId('ansiLogLine').at(0)).toHaveStyle({ color: theme.colors.text.secondary }); |
|
|
|
|
}); |
|
|
|
|
}); |
|
|
|
|