|
1 | 1 | import { act, renderHook, waitFor } from '@testing-library/react'; |
2 | 2 | import { describe, expect, it, vi } from 'vitest'; |
3 | 3 |
|
| 4 | +import { ColumnSort } from '@ovh-ux/manager-react-components'; |
| 5 | + |
4 | 6 | import { deleteWorkflow } from '@/api/data/workflow'; |
5 | 7 | import { wrapper } from '@/wrapperRenders'; |
6 | 8 |
|
7 | | -import { useDeleteWorkflow } from './workflows'; |
| 9 | +import { TWorkflow, sortWorkflows, useDeleteWorkflow } from './workflows'; |
8 | 10 |
|
9 | 11 | vi.mock('@/api/data/workflow'); |
10 | 12 |
|
@@ -57,3 +59,77 @@ describe('useDeleteWorkflow', () => { |
57 | 59 | expect(onSuccessMock).not.toHaveBeenCalled(); |
58 | 60 | }); |
59 | 61 | }); |
| 62 | + |
| 63 | +describe('sortWorkflows', () => { |
| 64 | + it.each([ |
| 65 | + { |
| 66 | + workflows: [ |
| 67 | + { id: '1', name: 'zz', region: 'EU-WEST' }, |
| 68 | + { id: '2', name: 'aa', region: 'SBG5' }, |
| 69 | + { id: '3', name: 'bb', region: 'GRA9' }, |
| 70 | + ] as TWorkflow[], |
| 71 | + sorting: undefined, |
| 72 | + expectedResults: [ |
| 73 | + { id: '1', name: 'zz', region: 'EU-WEST' }, |
| 74 | + { id: '2', name: 'aa', region: 'SBG5' }, |
| 75 | + { id: '3', name: 'bb', region: 'GRA9' }, |
| 76 | + ] as TWorkflow[], |
| 77 | + }, |
| 78 | + { |
| 79 | + workflows: [ |
| 80 | + { id: '1', name: 'zz', region: 'EU-WEST' }, |
| 81 | + { id: '2', name: 'aa', region: 'SBG5' }, |
| 82 | + { id: '3', name: 'bb', region: 'GRA9' }, |
| 83 | + ] as TWorkflow[], |
| 84 | + sorting: { id: 'regions', desc: false } as ColumnSort, |
| 85 | + expectedResults: [ |
| 86 | + { id: '1', name: 'zz', region: 'EU-WEST' }, |
| 87 | + { id: '3', name: 'bb', region: 'GRA9' }, |
| 88 | + { id: '2', name: 'aa', region: 'SBG5' }, |
| 89 | + ] as TWorkflow[], |
| 90 | + }, |
| 91 | + { |
| 92 | + workflows: [ |
| 93 | + { id: '1', name: 'zz', region: 'EU-WEST' }, |
| 94 | + { id: '2', name: 'aa', region: 'SBG5' }, |
| 95 | + { id: '3', name: 'bb', region: 'GRA9' }, |
| 96 | + ] as TWorkflow[], |
| 97 | + sorting: { id: 'regions', desc: true } as ColumnSort, |
| 98 | + expectedResults: [ |
| 99 | + { id: '2', name: 'aa', region: 'SBG5' }, |
| 100 | + { id: '3', name: 'bb', region: 'GRA9' }, |
| 101 | + { id: '1', name: 'zz', region: 'EU-WEST' }, |
| 102 | + ] as TWorkflow[], |
| 103 | + }, |
| 104 | + { |
| 105 | + workflows: [ |
| 106 | + { id: '1', name: 'zz', region: 'EU-WEST' }, |
| 107 | + { id: '2', name: 'aa', region: 'SBG5' }, |
| 108 | + { id: '3', name: 'bb', region: 'GRA9' }, |
| 109 | + ] as TWorkflow[], |
| 110 | + sorting: { id: 'name', desc: false } as ColumnSort, |
| 111 | + expectedResults: [ |
| 112 | + { id: '2', name: 'aa', region: 'SBG5' }, |
| 113 | + { id: '3', name: 'bb', region: 'GRA9' }, |
| 114 | + { id: '1', name: 'zz', region: 'EU-WEST' }, |
| 115 | + ] as TWorkflow[], |
| 116 | + }, |
| 117 | + { |
| 118 | + workflows: [ |
| 119 | + { id: '1', name: 'zz', region: 'EU-WEST' }, |
| 120 | + { id: '2', name: 'aa', region: 'SBG5' }, |
| 121 | + { id: '3', name: 'bb', region: 'GRA9' }, |
| 122 | + ] as TWorkflow[], |
| 123 | + sorting: { id: 'name', desc: true } as ColumnSort, |
| 124 | + expectedResults: [ |
| 125 | + { id: '1', name: 'zz', region: 'EU-WEST' }, |
| 126 | + { id: '3', name: 'bb', region: 'GRA9' }, |
| 127 | + { id: '2', name: 'aa', region: 'SBG5' }, |
| 128 | + ] as TWorkflow[], |
| 129 | + }, |
| 130 | + ])('should sort workflows with $sorting', ({ workflows, sorting, expectedResults }) => { |
| 131 | + const result = sortWorkflows(workflows, sorting, []); |
| 132 | + |
| 133 | + expect(result).toEqual(expectedResults); |
| 134 | + }); |
| 135 | +}); |
0 commit comments