diff --git a/packages/twenty-front/src/modules/views/hooks/__tests__/useUpdateViewAggregate.test.tsx b/packages/twenty-front/src/modules/views/hooks/__tests__/useUpdateViewAggregate.test.tsx new file mode 100644 index 000000000..6c39643c0 --- /dev/null +++ b/packages/twenty-front/src/modules/views/hooks/__tests__/useUpdateViewAggregate.test.tsx @@ -0,0 +1,56 @@ +import { AGGREGATE_OPERATIONS } from '@/object-record/record-table/constants/AggregateOperations'; +import { DATE_AGGREGATE_OPERATIONS } from '@/object-record/record-table/constants/DateAggregateOperations'; +import { useRecoilComponentValueV2 } from '@/ui/utilities/state/component-state/hooks/useRecoilComponentValueV2'; +import { useUpdateView } from '@/views/hooks/useUpdateView'; +import { renderHook } from '@testing-library/react'; +import { useSetRecoilState } from 'recoil'; +import { useUpdateViewAggregate } from '../useUpdateViewAggregate'; + +jest.mock( + '@/ui/utilities/state/component-state/hooks/useRecoilComponentValueV2', +); +jest.mock('@/views/hooks/useUpdateView'); +jest.mock('recoil'); + +describe('useUpdateViewAggregate', () => { + const mockCurrentViewId = 'test-view-id'; + const mockUpdateView = jest.fn(); + const mockSetRecordIndexKanbanAggregateOperationState = jest.fn(); + + beforeEach(() => { + jest.clearAllMocks(); + (useRecoilComponentValueV2 as jest.Mock).mockReturnValue(mockCurrentViewId); + (useUpdateView as jest.Mock).mockReturnValue({ + updateView: mockUpdateView, + }); + (useSetRecoilState as jest.Mock).mockReturnValue( + mockSetRecordIndexKanbanAggregateOperationState, + ); + }); + + describe('Aggregate operations on dates', () => { + it('should update view with rightfully converted values', () => { + const { result } = renderHook(() => useUpdateViewAggregate()); + + result.current.updateViewAggregate({ + kanbanAggregateOperationFieldMetadataId: 'test-field-id', + kanbanAggregateOperation: DATE_AGGREGATE_OPERATIONS.earliest, + }); + + // updateView is called with 'EARLIEST' converted to 'MIN' + expect(mockUpdateView).toHaveBeenCalledWith({ + id: mockCurrentViewId, + kanbanAggregateOperationFieldMetadataId: 'test-field-id', + kanbanAggregateOperation: AGGREGATE_OPERATIONS.min, + }); + + // setAggregateOperation is called with 'EARLIEST' + expect( + mockSetRecordIndexKanbanAggregateOperationState, + ).toHaveBeenCalledWith({ + operation: DATE_AGGREGATE_OPERATIONS.earliest, + fieldMetadataId: 'test-field-id', + }); + }); + }); +}); diff --git a/packages/twenty-front/src/modules/views/hooks/useUpdateViewAggregate.ts b/packages/twenty-front/src/modules/views/hooks/useUpdateViewAggregate.ts index f2165f8b4..c3f81fe73 100644 --- a/packages/twenty-front/src/modules/views/hooks/useUpdateViewAggregate.ts +++ b/packages/twenty-front/src/modules/views/hooks/useUpdateViewAggregate.ts @@ -36,7 +36,7 @@ export const useUpdateViewAggregate = () => { }); setRecordIndexKanbanAggregateOperationState({ - operation: convertedKanbanAggregateOperation, + operation: kanbanAggregateOperation, fieldMetadataId: kanbanAggregateOperationFieldMetadataId, }); },