import {shallow} from 'sentry-test/enzyme';
import Breadcrumbs from 'app/components/breadcrumbs';
describe('Breadcrumbs', () => {
const wrapper = shallow(
);
const wrapperWithDropdown = shallow(
{},
items: ['item1', 'item2', 'item3'],
},
{
label: 'Test 2',
to: '/test2',
},
{
label: 'Test 3',
to: null,
},
]}
/>
);
it('returns null when 0 crumbs', () => {
const empty = shallow();
expect(empty.html()).toBeNull();
});
it('generates correct links', () => {
const allElements = wrapper.find('BreadcrumbList').children();
const links = wrapper.find('BreadcrumbLink');
expect(links.length).toBe(2);
expect(allElements.at(0).props().to).toBe('/test1');
expect(allElements.at(0).props().children).toBe('Test 1');
expect(allElements.at(2).props().to).toBe('/test2');
expect(allElements.at(2).props().children).toBe('Test 2');
});
it('does not make links where no `to` is provided', () => {
const allElements = wrapper.find('BreadcrumbList').children();
const notLink = wrapper.find('BreadcrumbItem');
expect(notLink.length).toBe(1);
expect(allElements.at(4).props().to).toBeUndefined();
expect(allElements.at(4).props().children).toBe('Test 3');
});
it('separates crumbs with icon', () => {
const allElements = wrapper.find('BreadcrumbList').children();
const dividers = wrapper.find('BreadcrumbDividerIcon');
expect(dividers.length).toBe(2);
expect(allElements.at(1).is('BreadcrumbDividerIcon')).toBeTruthy();
expect(allElements.at(3).is('BreadcrumbDividerIcon')).toBeTruthy();
expect(allElements.at(5).exists()).toBeFalsy();
});
it('renders a crumb dropdown', () => {
const allElements = wrapperWithDropdown.find('BreadcrumbList').children();
const dropdown = wrapperWithDropdown.find('BreadcrumbDropdown');
expect(allElements.at(0).is('BreadcrumbDropdown')).toBeTruthy();
expect(allElements.at(1).is('BreadcrumbLink')).toBeTruthy();
expect(allElements.at(3).is('BreadcrumbItem')).toBeTruthy();
expect(dropdown.exists()).toBeTruthy();
});
});