organizationUserFeedback.spec.jsx 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128
  1. import React from 'react';
  2. import {mount} from 'enzyme';
  3. import {OrganizationUserFeedback} from 'app/views/userFeedback/organizationUserFeedback';
  4. describe('OrganizationUserFeedback', function() {
  5. let organization, routerContext;
  6. const pageLinks =
  7. '<https://sentry.io/api/0/organizations/sentry/user-feedback/?statsPeriod=14d&cursor=0:0:1>; rel="previous"; results="false"; cursor="0:0:1", ' +
  8. '<https://sentry.io/api/0/organizations/sentry/user-feedback/?statsPeriod=14d&cursor=0:100:0>; rel="next"; results="true"; cursor="0:100:0"';
  9. beforeEach(function() {
  10. MockApiClient.addMockResponse({
  11. url: '/organizations/org-slug/user-feedback/',
  12. body: [TestStubs.UserFeedback()],
  13. headers: {Link: pageLinks},
  14. });
  15. MockApiClient.addMockResponse({
  16. url: '/organizations/org-slug/environments/',
  17. body: TestStubs.Environments(),
  18. });
  19. organization = TestStubs.Organization();
  20. routerContext = TestStubs.routerContext([
  21. {
  22. organization,
  23. router: {
  24. ...TestStubs.router(),
  25. params: {
  26. orgId: organization.slug,
  27. },
  28. },
  29. },
  30. ]);
  31. });
  32. it('renders', function() {
  33. const params = {
  34. organization: TestStubs.Organization({
  35. projects: [TestStubs.Project({isMember: true})],
  36. }),
  37. location: {query: {}, search: ''},
  38. params: {
  39. orgId: organization.slug,
  40. },
  41. };
  42. const wrapper = mount(<OrganizationUserFeedback {...params} />, routerContext);
  43. expect(wrapper.find('CompactIssue')).toHaveLength(1);
  44. });
  45. it('renders no project message', function() {
  46. const params = {
  47. organization: TestStubs.Organization({
  48. projects: [],
  49. }),
  50. location: {query: {}, search: ''},
  51. params: {
  52. orgId: organization.slug,
  53. },
  54. };
  55. const wrapper = mount(<OrganizationUserFeedback {...params} />, routerContext);
  56. expect(wrapper.find('NoProjectMessage').exists()).toBe(true);
  57. expect(wrapper.find('UserFeedbackEmpty').exists()).toBe(false);
  58. });
  59. it('renders empty state', function() {
  60. MockApiClient.addMockResponse({
  61. url: '/organizations/org-slug/user-feedback/',
  62. body: [],
  63. });
  64. const params = {
  65. organization: TestStubs.Organization({
  66. projects: [TestStubs.Project({isMember: true})],
  67. }),
  68. location: {query: {}, search: ''},
  69. params: {
  70. orgId: organization.slug,
  71. },
  72. };
  73. const wrapper = mount(<OrganizationUserFeedback {...params} />, routerContext);
  74. expect(wrapper.find('UserFeedbackEmpty').prop('projectIds')).toEqual([]);
  75. });
  76. it('renders empty state with project query', function() {
  77. MockApiClient.addMockResponse({
  78. url: '/organizations/org-slug/user-feedback/',
  79. body: [],
  80. });
  81. const params = {
  82. organization: TestStubs.Organization({
  83. projects: [TestStubs.Project({isMember: true})],
  84. }),
  85. location: {query: {project: '112'}, search: ''},
  86. params: {
  87. orgId: organization.slug,
  88. },
  89. };
  90. const wrapper = mount(<OrganizationUserFeedback {...params} />, routerContext);
  91. expect(wrapper.find('UserFeedbackEmpty').prop('projectIds')).toEqual(['112']);
  92. });
  93. it('renders empty state with multi project query', function() {
  94. MockApiClient.addMockResponse({
  95. url: '/organizations/org-slug/user-feedback/',
  96. body: [],
  97. });
  98. const params = {
  99. organization: TestStubs.Organization({
  100. projects: [TestStubs.Project({isMember: true})],
  101. }),
  102. location: {query: {project: ['112', '113']}, search: ''},
  103. params: {
  104. orgId: organization.slug,
  105. },
  106. };
  107. const wrapper = mount(<OrganizationUserFeedback {...params} />, routerContext);
  108. expect(wrapper.find('UserFeedbackEmpty').prop('projectIds')).toEqual(['112', '113']);
  109. });
  110. });