import {mountWithTheme} from 'sentry-test/enzyme';
import PanelTable from 'app/components/panels/panelTable';
describe('PanelTable', function () {
const createWrapper = (props = {}) =>
mountWithTheme(
1, 2
, 3
]}
{...props}
>
Cell 1
Cell 2
Cell 3
);
it('renders headers', function () {
const wrapper = createWrapper();
expect(wrapper.find('PanelTableHeader')).toHaveLength(3);
// 3 divs from headers, 3 from "body"
expect(wrapper.find('[data-test-id="cell"]')).toHaveLength(3);
expect(wrapper.find('PanelTableHeader').at(0).text()).toBe('1');
});
it('renders loading', function () {
const wrapper = createWrapper({isLoading: true});
// Does not render content
expect(wrapper.find('[data-test-id="cell"]')).toHaveLength(0);
// renders loading
expect(wrapper.find('LoadingIndicator')).toBeDefined();
});
it('renders custom loader', function () {
const wrapper = createWrapper({
isLoading: true,
loader: loading,
});
// Does not render content
expect(wrapper.find('[data-test-id="cell"]')).toHaveLength(0);
// no default loader
expect(wrapper.find('LoadingIndicator')).toHaveLength(0);
// has custom loader
expect(wrapper.find('[data-test-id="custom-loader"]')).toHaveLength(1);
});
it('ignores empty state when loading', function () {
const wrapper = createWrapper({isLoading: true, isEmpty: true});
// renders loading
expect(wrapper.find('LoadingIndicator')).toBeDefined();
expect(wrapper.find('EmptyStateWarning')).toHaveLength(0);
});
it('renders empty state with custom message', function () {
const wrapper = createWrapper({isEmpty: true, emptyMessage: 'I am empty inside'});
// Does not render content
expect(wrapper.find('[data-test-id="cell"]')).toHaveLength(0);
// renders empty state
expect(wrapper.find('EmptyStateWarning').text()).toBe('I am empty inside');
});
it('children can be a render function', function () {
const wrapper = mountWithTheme(
1, 2
, 3
]}
>
{() => I am child
}
);
expect(wrapper.find('p').text()).toBe('I am child');
});
});