breadcrumbs.spec.jsx 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  1. import React from 'react';
  2. import {shallow} from 'sentry-test/enzyme';
  3. import Breadcrumbs from 'app/components/breadcrumbs';
  4. describe('Breadcrumbs', () => {
  5. const wrapper = shallow(
  6. <Breadcrumbs
  7. crumbs={[
  8. {
  9. label: 'Test 1',
  10. to: '/test1',
  11. },
  12. {
  13. label: 'Test 2',
  14. to: '/test2',
  15. },
  16. {
  17. label: 'Test 3',
  18. to: null,
  19. },
  20. ]}
  21. />
  22. );
  23. it('returns null when 0 crumbs', () => {
  24. const empty = shallow(<Breadcrumbs crumbs={[]} />);
  25. expect(empty.html()).toBeNull();
  26. });
  27. it('generates correct links', () => {
  28. const allElements = wrapper.find('BreadcrumbList').children();
  29. const links = wrapper.find('BreadcrumbLink');
  30. expect(links.length).toBe(2);
  31. expect(allElements.at(0).props().to).toBe('/test1');
  32. expect(allElements.at(0).props().children).toBe('Test 1');
  33. expect(allElements.at(2).props().to).toBe('/test2');
  34. expect(allElements.at(2).props().children).toBe('Test 2');
  35. });
  36. it('does not make links where no `to` is provided', () => {
  37. const allElements = wrapper.find('BreadcrumbList').children();
  38. const notLink = wrapper.find('BreadcrumbItem');
  39. expect(notLink.length).toBe(1);
  40. expect(allElements.at(4).props().to).toBeUndefined();
  41. expect(allElements.at(4).props().children).toBe('Test 3');
  42. });
  43. it('separates crumbs with icon', () => {
  44. const allElements = wrapper.find('BreadcrumbList').children();
  45. const dividers = wrapper.find('BreadcrumbDividerIcon');
  46. expect(dividers.length).toBe(2);
  47. expect(allElements.at(1).is('BreadcrumbDividerIcon')).toBeTruthy();
  48. expect(allElements.at(3).is('BreadcrumbDividerIcon')).toBeTruthy();
  49. expect(allElements.at(5).exists()).toBeFalsy();
  50. });
  51. });