@orfeas126/box-ui-elements
Version:
Box UI Elements
101 lines (81 loc) • 3.14 kB
JavaScript
import * as React from 'react';
import { shallow } from 'enzyme';
import { Plus } from '@box/blueprint-web-assets/icons/Fill';
import PlainButton from '../../../../components/plain-button/PlainButton';
import AdditionalTab from '../AdditionalTab';
import AdditionalTabTooltip from '../AdditionalTabTooltip';
import AdditionalTabPlaceholder from '../AdditionalTabPlaceholder';
describe('elements/content-sidebar/additional-tabs/AdditionalTab', () => {
const getWrapper = props => shallow(<AdditionalTab {...props} />);
test('should render the tooltip and button contents', () => {
const mockSrc = 'https://foo.com/image';
const props = {
title: 'test title',
iconUrl: mockSrc,
id: 4,
callback: () => {},
};
const wrapper = getWrapper(props);
expect(wrapper.find(PlainButton).childAt(0).prop('src')).toEqual(mockSrc);
expect(wrapper.find(AdditionalTabTooltip).prop('defaultTooltipText')).toBe('test title');
expect(wrapper).toMatchSnapshot();
});
test('should render the more icon ellipsis if no valid id and icon URL are provided', () => {
const props = {
title: 'test title',
id: -1,
callback: () => {},
};
const wrapper = getWrapper(props);
expect(wrapper).toMatchSnapshot();
});
test('should render icon if no valid id provided with an icon', () => {
const props = {
title: 'test title',
id: -1,
icon: <Plus />,
callback: () => {},
};
const wrapper = getWrapper(props);
expect(wrapper).toMatchSnapshot();
});
test('should render the placeholder when an error occurs', () => {
const props = {
title: 'test title',
id: -1,
callback: () => {},
};
const wrapper = getWrapper(props);
wrapper.setState({ isErrored: true });
expect(wrapper.find(AdditionalTabPlaceholder)).toHaveLength(1);
expect(wrapper).toMatchSnapshot();
});
test('should render disabled button when blocked by shield access policy', () => {
const mockSrc = 'https://foo.com/image';
const props = {
title: 'test title',
iconUrl: mockSrc,
id: 4,
callback: () => {},
status: 'BLOCKED_BY_SHIELD_ACCESS_POLICY',
};
const wrapper = getWrapper(props);
expect(wrapper).toMatchSnapshot();
});
test('should render the FTUX tooltip when ftuxTooltipData is present and the tab is not loading', () => {
const mockSrc = 'https://foo.com/image';
const props = {
title: 'test title',
iconUrl: mockSrc,
id: 4,
isLoading: false,
ftuxTooltipData: {
targetingApi: () => {},
test: 'ftux tooltip text',
},
callback: () => {},
};
const wrapper = getWrapper(props);
expect(wrapper.find(AdditionalTabTooltip).exists()).toBeTruthy();
});
});