releaseSeries.spec.jsx 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172
  1. import React from 'react';
  2. import {mount} from 'enzyme';
  3. import {initializeOrg} from 'app-test/helpers/initializeOrg';
  4. import ReleaseSeries from 'app/components/charts/releaseSeries';
  5. describe('ReleaseSeries', function() {
  6. const renderFunc = jest.fn(() => null);
  7. const {routerContext, organization} = initializeOrg();
  8. const releases = [TestStubs.Release()];
  9. let releasesMock;
  10. beforeEach(function() {
  11. MockApiClient.clearMockResponses();
  12. releasesMock = MockApiClient.addMockResponse({
  13. url: `/organizations/${organization.slug}/releases/`,
  14. body: releases,
  15. });
  16. });
  17. it('does not fetch releases if releases is truthy', function() {
  18. mount(
  19. <ReleaseSeries organization={organization} releases={[]}>
  20. {renderFunc}
  21. </ReleaseSeries>,
  22. routerContext
  23. );
  24. expect(releasesMock).not.toHaveBeenCalled();
  25. });
  26. it('fetches releases if no releases passed through props', async function() {
  27. let wrapper = mount(<ReleaseSeries>{renderFunc}</ReleaseSeries>, routerContext);
  28. await tick();
  29. wrapper.update();
  30. expect(releasesMock).toHaveBeenCalled();
  31. expect(renderFunc).toHaveBeenCalledWith(
  32. expect.objectContaining({
  33. releases,
  34. })
  35. );
  36. });
  37. it('generates an eCharts `markLine` series from releases', async function() {
  38. let wrapper = mount(<ReleaseSeries>{renderFunc}</ReleaseSeries>, routerContext);
  39. await tick();
  40. wrapper.update();
  41. expect(renderFunc).toHaveBeenCalledWith(
  42. expect.objectContaining({
  43. releaseSeries: [
  44. expect.objectContaining({
  45. // we don't care about the other properties for now
  46. markLine: expect.objectContaining({
  47. data: [
  48. expect.objectContaining({
  49. name: '92eccef',
  50. value: '92eccef',
  51. xAxis: 1530206345000,
  52. }),
  53. ],
  54. }),
  55. }),
  56. ],
  57. })
  58. );
  59. });
  60. });