httpRenderer.spec.tsx 2.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980
  1. import {mountWithTheme} from 'sentry-test/enzyme';
  2. import HttpRenderer from 'sentry/components/events/interfaces/breadcrumbs/breadcrumb/data/http';
  3. import {BreadcrumbLevelType, BreadcrumbType} from 'sentry/types/breadcrumbs';
  4. describe('HttpRenderer', () => {
  5. describe('render', () => {
  6. it('should work', () => {
  7. const httpRendererWrapper = mountWithTheme(
  8. <HttpRenderer
  9. searchTerm=""
  10. breadcrumb={{
  11. type: BreadcrumbType.HTTP,
  12. level: BreadcrumbLevelType.INFO,
  13. data: {
  14. method: 'POST',
  15. url: 'http://example.com/foo',
  16. // status_code 0 is possible via broken client-side XHR; should still render as '[0]'
  17. status_code: 0,
  18. },
  19. }}
  20. />
  21. );
  22. const annotatedTexts = httpRendererWrapper.find('AnnotatedText');
  23. expect(annotatedTexts.length).toEqual(3);
  24. expect(annotatedTexts.at(0).find('strong').text()).toEqual('POST ');
  25. expect(
  26. annotatedTexts.at(1).find('a[data-test-id="http-renderer-external-link"]').text()
  27. ).toEqual('http://example.com/foo');
  28. expect(
  29. annotatedTexts
  30. .at(2)
  31. .find('Highlight[data-test-id="http-renderer-status-code"]')
  32. .text()
  33. ).toEqual(' [0]');
  34. });
  35. it("shouldn't blow up if crumb.data is missing", () => {
  36. const httpRendererWrapper = mountWithTheme(
  37. <HttpRenderer
  38. searchTerm=""
  39. breadcrumb={{
  40. category: 'xhr',
  41. type: BreadcrumbType.HTTP,
  42. level: BreadcrumbLevelType.INFO,
  43. }}
  44. />
  45. );
  46. const annotatedTexts = httpRendererWrapper.find('AnnotatedText');
  47. expect(annotatedTexts.length).toEqual(0);
  48. });
  49. it("shouldn't blow up if url is not a string", () => {
  50. const httpRendererWrapper = mountWithTheme(
  51. <HttpRenderer
  52. searchTerm=""
  53. breadcrumb={{
  54. category: 'xhr',
  55. type: BreadcrumbType.HTTP,
  56. level: BreadcrumbLevelType.INFO,
  57. data: {
  58. method: 'GET',
  59. },
  60. }}
  61. />
  62. );
  63. const annotatedTexts = httpRendererWrapper.find('AnnotatedText');
  64. expect(annotatedTexts.length).toEqual(1);
  65. });
  66. });
  67. });