useDragNDropColumns.spec.tsx 2.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394
  1. import {useState} from 'react';
  2. import {act, render} from 'sentry-test/reactTestingLibrary';
  3. import {useDragNDropColumns} from './useDragNDropColumns';
  4. describe('useDragNDropColumns', () => {
  5. const initialColumns = ['span.op', 'span_id', 'timestamp'];
  6. it('should insert a column', () => {
  7. let columns!: string[];
  8. let setColumns: (columns: string[]) => void;
  9. let insertColumn: ReturnType<typeof useDragNDropColumns>['insertColumn'];
  10. function TestPage() {
  11. [columns, setColumns] = useState(initialColumns);
  12. ({insertColumn} = useDragNDropColumns({columns, setColumns}));
  13. return null;
  14. }
  15. render(<TestPage />, {disableRouterMocks: true});
  16. act(() => {
  17. insertColumn();
  18. });
  19. expect(columns).toEqual(['span.op', 'span_id', 'timestamp', '']);
  20. });
  21. it('should update a column at a specific index', () => {
  22. let columns!: string[];
  23. let setColumns: (columns: string[]) => void;
  24. let updateColumnAtIndex: ReturnType<
  25. typeof useDragNDropColumns
  26. >['updateColumnAtIndex'];
  27. function TestPage() {
  28. [columns, setColumns] = useState(initialColumns);
  29. ({updateColumnAtIndex} = useDragNDropColumns({columns, setColumns}));
  30. return null;
  31. }
  32. render(<TestPage />, {disableRouterMocks: true});
  33. act(() => {
  34. updateColumnAtIndex(0, 'span.description');
  35. });
  36. expect(columns).toEqual(['span.description', 'span_id', 'timestamp']);
  37. });
  38. it('should delete a column at a specific index', () => {
  39. let columns!: string[];
  40. let setColumns: (columns: string[]) => void;
  41. let deleteColumnAtIndex: (index: number) => void;
  42. function TestPage() {
  43. [columns, setColumns] = useState(initialColumns);
  44. ({deleteColumnAtIndex} = useDragNDropColumns({columns, setColumns}));
  45. return null;
  46. }
  47. render(<TestPage />, {disableRouterMocks: true});
  48. act(() => {
  49. deleteColumnAtIndex(0);
  50. });
  51. expect(columns).toEqual(['span_id', 'timestamp']);
  52. });
  53. it('should swap two columns at specific indices', () => {
  54. let columns!: string[];
  55. let setColumns: (columns: string[]) => void;
  56. let onDragEnd: (arg: any) => void;
  57. function TestPage() {
  58. [columns, setColumns] = useState(initialColumns);
  59. ({onDragEnd} = useDragNDropColumns({columns, setColumns}));
  60. return null;
  61. }
  62. render(<TestPage />, {disableRouterMocks: true});
  63. act(() => {
  64. onDragEnd({
  65. active: {id: 1},
  66. over: {id: 3},
  67. });
  68. });
  69. expect(columns).toEqual(['span_id', 'timestamp', 'span.op']);
  70. });
  71. });