frameLine.spec.jsx 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100
  1. import React from 'react';
  2. import {mountWithTheme} from 'sentry-test/enzyme';
  3. import FrameLine from 'app/components/events/interfaces/frame/frameLine';
  4. describe('Frame', function() {
  5. let data;
  6. describe('renderOriginalSourceInfo()', function() {
  7. beforeEach(function() {
  8. data = {
  9. origAbsPath: 'https://beta.getsentry.com/_static/sentry/dist/vendor.js',
  10. origColNo: 2503,
  11. origFilename: '/_static/sentry/dist/vendor.js',
  12. origFunction: 'T._updateRenderedComponent',
  13. origLineNo: 419,
  14. map: 'vendor.js.map',
  15. mapUrl: 'https://beta.getsentry.com/_static/sentry/dist/vendor.js.map',
  16. };
  17. });
  18. it('should render the source map information as a HTML string', function() {
  19. const frame = mountWithTheme(<FrameLine data={data} components={[]} />);
  20. expect(frame.find('Tooltip')).toSnapshot();
  21. });
  22. });
  23. describe('renderContext()', () => {
  24. it('should render context lines', () => {
  25. data = {
  26. context: [
  27. [211, ' # Mark the crashed thread and add its stacktrace to the exception'],
  28. [212, " crashed_thread = data['threads'][state.requesting_thread]"],
  29. [213, " crashed_thread['crashed'] = True"],
  30. ],
  31. };
  32. const frame = mountWithTheme(<FrameLine data={data} components={[]} isExpanded />);
  33. expect(frame.find('ContextLine')).toSnapshot();
  34. });
  35. it('should render register values', () => {
  36. data = {};
  37. const registers = {
  38. r10: '0x00007fff9300bf70',
  39. r11: '0xffffffffffffffff',
  40. r12: '0x0000000000000000',
  41. r13: '0x0000000000000000',
  42. r14: '0x000000000000000a',
  43. r15: '0x0000000000000000',
  44. r8: '0x00007fff9300bf78',
  45. r9: '0x0000000000000040',
  46. rax: '0x00007fff9291e660',
  47. rbp: '0x00007ffedfdff7e0',
  48. rbx: '0x00007fff9291e660',
  49. rcx: '0x0000000000000008',
  50. rdi: '0x00007ffedfdff790',
  51. rdx: '0x0000020000000303',
  52. rip: '0x000000010fe00a59',
  53. rsi: '0x0000000000000300',
  54. rsp: '0x00007ffedfdff7c0',
  55. };
  56. const frame = mountWithTheme(
  57. <FrameLine data={data} registers={registers} components={[]} isExpanded />
  58. );
  59. expect(frame.find('FrameRegisters').prop('data')).toEqual(registers);
  60. });
  61. it('should not render empty registers', () => {
  62. data = {};
  63. const registers = {};
  64. const frame = mountWithTheme(
  65. <FrameLine data={data} registers={registers} components={[]} isExpanded />
  66. );
  67. expect(frame.find('FrameRegisters')).toHaveLength(0);
  68. });
  69. it('should render context vars', () => {
  70. data = {
  71. vars: {
  72. origin: null,
  73. helper: '<sentry.coreapi.MinidumpApiHelper object at 0x10e157ed0>',
  74. self: '<sentry.web.api.MinidumpView object at 0x10e157250>',
  75. args: [],
  76. request: '<WSGIRequest at 0x4531253712>',
  77. content: '[Filtered]',
  78. kwargs: {},
  79. project_id: "u'3'",
  80. },
  81. };
  82. const frame = mountWithTheme(<FrameLine data={data} components={[]} isExpanded />);
  83. expect(frame.find('FrameVariables').prop('data')).toEqual(data.vars);
  84. });
  85. });
  86. });