breadcrumbTitle.spec.jsx 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. import React from 'react';
  2. import {mount} from 'enzyme';
  3. import BreadcrumbTitle from 'app/views/settings/components/settingsBreadcrumb/breadcrumbTitle';
  4. import Crumb from 'app/views/settings/components/settingsBreadcrumb/crumb';
  5. import SettingsBreadcrumb from 'app/views/settings/components/settingsBreadcrumb';
  6. import SettingsBreadcrumbStore from 'app/stores/settingsBreadcrumbStore';
  7. describe('BreadcrumbTitle', function() {
  8. const routes = [
  9. {name: 'One', path: '/one/'},
  10. {name: 'Two', path: '/two/'},
  11. {name: 'Three', path: '/three/'},
  12. ];
  13. it('renders', async function() {
  14. const wrapper = mount(
  15. <div>
  16. <SettingsBreadcrumb routes={routes} />;
  17. <BreadcrumbTitle routes={routes} title="Last Title" />
  18. </div>
  19. );
  20. await tick();
  21. wrapper.update();
  22. expect(
  23. wrapper
  24. .find(Crumb)
  25. .last()
  26. .text()
  27. ).toEqual('Last Title ');
  28. });
  29. it('cleans up routes', async function() {
  30. const upOneRoutes = routes.slice(0, -1);
  31. const breadcrumbs = mount(<SettingsBreadcrumb routes={routes} />);
  32. mount(
  33. <div>
  34. <BreadcrumbTitle routes={upOneRoutes} title="Second Title" />
  35. <BreadcrumbTitle routes={routes} title="Last Title" />
  36. </div>
  37. );
  38. await tick();
  39. breadcrumbs.update();
  40. const crumbs = breadcrumbs.find(Crumb);
  41. expect(crumbs.at(1).text()).toEqual('Second Title ');
  42. expect(crumbs.last().text()).toEqual('Last Title ');
  43. // Simulate navigating up a level, trimming the last title
  44. breadcrumbs.setProps({routes: upOneRoutes});
  45. await tick();
  46. expect(SettingsBreadcrumbStore.pathMap).toEqual({'/two/': 'Second Title'});
  47. });
  48. });