oxfordizeArray.spec.tsx 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. import {render, screen} from 'sentry-test/reactTestingLibrary';
  2. import oxfordizeArray, {Oxfordize} from 'sentry/utils/oxfordizeArray';
  3. describe('oxfordizeArray', function () {
  4. it('correctly formats lists of strings', function () {
  5. const zero = [];
  6. const one = ['A'];
  7. const two = ['A', 'B'];
  8. const three = ['A', 'B', 'C'];
  9. const four = ['A', 'B', 'C', 'D'];
  10. expect(oxfordizeArray(zero)).toEqual('');
  11. expect(oxfordizeArray(one)).toEqual('A');
  12. expect(oxfordizeArray(two)).toEqual('A and B');
  13. expect(oxfordizeArray(three)).toEqual('A, B, and C');
  14. expect(oxfordizeArray(four)).toEqual('A, B, C, and D');
  15. });
  16. });
  17. describe('Oxfordize', function () {
  18. it('correctly formats lists of elements', function () {
  19. const items = [<i key="1">one</i>, <i key="2">two</i>, <i key="3">three</i>];
  20. render(<Oxfordize>{items}</Oxfordize>);
  21. expect(screen.getByText('one')).toBeInTheDocument();
  22. expect(screen.getByText('two')).toBeInTheDocument();
  23. expect(screen.getByText('three')).toBeInTheDocument();
  24. expect(screen.getByText(/, and/)).toBeInTheDocument();
  25. });
  26. it('correctly formats one element', function () {
  27. const items = ['one'];
  28. render(<Oxfordize>{items}</Oxfordize>);
  29. expect(screen.getByText('one')).toBeInTheDocument();
  30. });
  31. it('correctly formats two elements', function () {
  32. const items = ['one', 'two'];
  33. render(<Oxfordize>{items}</Oxfordize>);
  34. expect(screen.getByText('one and two')).toBeInTheDocument();
  35. });
  36. it('correctly formats mixed lists of nodes', function () {
  37. const items = [<i key="1">one</i>, 'two'];
  38. render(<Oxfordize>{items}</Oxfordize>);
  39. expect(screen.getByText('one')).toBeInTheDocument();
  40. expect(screen.getByText(/and two/)).toBeInTheDocument();
  41. });
  42. });