bookmarkStar.spec.jsx 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114
  1. import {mount} from 'enzyme';
  2. import React from 'react';
  3. import BookmarkStar from 'app/components/bookmarkStar';
  4. describe('BookmarkStar', function() {
  5. let wrapper, projectMock;
  6. beforeEach(function() {
  7. wrapper = mount(
  8. <BookmarkStar
  9. organization={TestStubs.Organization()}
  10. project={TestStubs.Project()}
  11. />,
  12. TestStubs.routerContext()
  13. );
  14. projectMock = MockApiClient.addMockResponse({
  15. url: '/projects/org-slug/project-slug/',
  16. method: 'PUT',
  17. data: TestStubs.Project({isBookmarked: false, platform: 'javascript'}),
  18. });
  19. });
  20. afterEach(function() {
  21. MockApiClient.clearMockResponses();
  22. });
  23. it('renders', function() {
  24. expect(wrapper).toMatchSnapshot();
  25. });
  26. it('can star', async function() {
  27. const star = wrapper.find('BookmarkStar');
  28. expect(
  29. star
  30. .find('Star')
  31. .first()
  32. .prop('isBookmarked')
  33. ).toBe(false);
  34. star.simulate('click');
  35. expect(projectMock).toHaveBeenCalledWith(
  36. '/projects/org-slug/project-slug/',
  37. expect.objectContaining({
  38. data: {
  39. isBookmarked: true,
  40. },
  41. })
  42. );
  43. });
  44. it('can unstar', async function() {
  45. wrapper = mount(
  46. <BookmarkStar
  47. organization={TestStubs.Organization()}
  48. project={TestStubs.Project({
  49. isBookmarked: true,
  50. })}
  51. />,
  52. TestStubs.routerContext()
  53. );
  54. const star = wrapper.find('BookmarkStar');
  55. expect(
  56. star
  57. .find('Star')
  58. .first()
  59. .prop('isBookmarked')
  60. ).toBe(true);
  61. star.simulate('click');
  62. expect(projectMock).toHaveBeenCalledWith(
  63. '/projects/org-slug/project-slug/',
  64. expect.objectContaining({
  65. data: {
  66. isBookmarked: false,
  67. },
  68. })
  69. );
  70. });
  71. it('takes a manual isBookmarked prop', function() {
  72. wrapper = mount(
  73. <BookmarkStar
  74. organization={TestStubs.Organization()}
  75. project={TestStubs.Project()}
  76. isBookmarked={true}
  77. />,
  78. TestStubs.routerContext()
  79. );
  80. const star = wrapper.find('BookmarkStar');
  81. expect(
  82. star
  83. .find('Star')
  84. .first()
  85. .prop('isBookmarked')
  86. ).toBe(true);
  87. star.simulate('click');
  88. expect(
  89. star
  90. .find('Star')
  91. .first()
  92. .prop('isBookmarked')
  93. ).toBe(true);
  94. });
  95. });