Diff.spec.tsx 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114
  1. import React from 'react';
  2. import Diff, { DiffProps } from 'components/Schemas/Diff/Diff';
  3. import { render } from 'lib/testHelpers';
  4. import { screen } from '@testing-library/react';
  5. import { versions } from './fixtures';
  6. describe('Diff', () => {
  7. const setupComponent = (props: DiffProps) =>
  8. render(
  9. <Diff
  10. versions={props.versions}
  11. leftVersionInPath={props.leftVersionInPath}
  12. rightVersionInPath={props.rightVersionInPath}
  13. areVersionsFetched={props.areVersionsFetched}
  14. />
  15. );
  16. describe('Container', () => {
  17. it('renders view', () => {
  18. setupComponent({
  19. areVersionsFetched: true,
  20. versions,
  21. });
  22. expect(screen.getAllByText('Version 3').length).toEqual(4);
  23. });
  24. });
  25. describe('View', () => {
  26. setupComponent({
  27. areVersionsFetched: true,
  28. versions,
  29. });
  30. });
  31. describe('when page with schema versions is loading', () => {
  32. beforeAll(() => {
  33. setupComponent({
  34. areVersionsFetched: false,
  35. versions: [],
  36. });
  37. });
  38. it('renders PageLoader', () => {
  39. expect(screen.getByRole('progressbar')).toBeInTheDocument();
  40. });
  41. });
  42. describe('when schema versions are loaded and no specified versions in path', () => {
  43. beforeEach(() => {
  44. setupComponent({
  45. areVersionsFetched: true,
  46. versions,
  47. });
  48. });
  49. it('renders all options', () => {
  50. expect(screen.getAllByRole('option').length).toEqual(2);
  51. });
  52. it('renders left select with empty value', () => {
  53. const select = screen.getAllByRole('listbox')[0];
  54. expect(select).toBeInTheDocument();
  55. expect(select).toHaveTextContent(versions[0].version);
  56. });
  57. it('renders right select with empty value', () => {
  58. const select = screen.getAllByRole('listbox')[1];
  59. expect(select).toBeInTheDocument();
  60. expect(select).toHaveTextContent(versions[0].version);
  61. });
  62. });
  63. describe('when schema versions are loaded and two versions in path', () => {
  64. beforeEach(() => {
  65. setupComponent({
  66. areVersionsFetched: true,
  67. versions,
  68. leftVersionInPath: '1',
  69. rightVersionInPath: '2',
  70. });
  71. });
  72. it('renders left select with version 1', () => {
  73. const select = screen.getAllByRole('listbox')[0];
  74. expect(select).toBeInTheDocument();
  75. expect(select).toHaveTextContent('1');
  76. });
  77. it('renders right select with version 2', () => {
  78. const select = screen.getAllByRole('listbox')[1];
  79. expect(select).toBeInTheDocument();
  80. expect(select).toHaveTextContent('2');
  81. });
  82. });
  83. describe('when schema versions are loaded and only one versions in path', () => {
  84. beforeEach(() => {
  85. setupComponent({
  86. areVersionsFetched: true,
  87. versions,
  88. leftVersionInPath: '1',
  89. });
  90. });
  91. it('renders left select with version 1', () => {
  92. const select = screen.getAllByRole('listbox')[0];
  93. expect(select).toBeInTheDocument();
  94. expect(select).toHaveTextContent('1');
  95. });
  96. it('renders right select with empty value', () => {
  97. const select = screen.getAllByRole('listbox')[1];
  98. expect(select).toBeInTheDocument();
  99. expect(select).toHaveTextContent(versions[0].version);
  100. });
  101. });
  102. });