import { sharedLinkData } from './sharedLink.fakeData'; import { addSharedLink, updateSharedLink, deleteSharedLink } from './sharedLink'; import type { TSharedLink, SharedLinkListData } from 'librechat-data-provider'; describe('Shared Link Utilities', () => { describe('addSharedLink', () => { it('adds a new shared link to the top of the list', () => { const data = { pages: [{ sharedLinks: [] }] }; const newSharedLink = { shareId: 'new', updatedAt: '2023-04-02T12:00:00Z' }; const newData = addSharedLink( data as unknown as SharedLinkListData, newSharedLink as TSharedLink, ); expect(newData.pages[0].sharedLinks).toHaveLength(1); expect(newData.pages[0].sharedLinks[0].shareId).toBe('new'); }); it('does not add a shared link but updates it if it already exists', () => { const data = { pages: [ { sharedLinks: [ { shareId: '1', updatedAt: '2023-04-01T12:00:00Z' }, { shareId: '2', updatedAt: '2023-04-01T13:00:00Z' }, ], }, ], }; const newSharedLink = { shareId: '2', updatedAt: '2023-04-02T12:00:00Z' }; const newData = addSharedLink( data as unknown as SharedLinkListData, newSharedLink as TSharedLink, ); expect(newData.pages[0].sharedLinks).toHaveLength(2); expect(newData.pages[0].sharedLinks[0].shareId).toBe('2'); }); }); describe('updateSharedLink', () => { it('updates an existing shared link and moves it to the top', () => { const initialData = { pages: [ { sharedLinks: [ { shareId: '1', updatedAt: '2023-04-01T12:00:00Z' }, { shareId: '2', updatedAt: '2023-04-01T13:00:00Z' }, ], }, ], }; const updatedSharedLink = { shareId: '1', updatedAt: '2023-04-02T12:00:00Z' }; const newData = updateSharedLink( initialData as unknown as SharedLinkListData, updatedSharedLink as TSharedLink, ); expect(newData.pages[0].sharedLinks).toHaveLength(2); expect(newData.pages[0].sharedLinks[0].shareId).toBe('1'); }); it('does not update a shared link if it does not exist', () => { const initialData = { pages: [ { sharedLinks: [ { shareId: '1', updatedAt: '2023-04-01T12:00:00Z' }, { shareId: '2', updatedAt: '2023-04-01T13:00:00Z' }, ], }, ], }; const updatedSharedLink = { shareId: '3', updatedAt: '2023-04-02T12:00:00Z' }; const newData = updateSharedLink( initialData as unknown as SharedLinkListData, updatedSharedLink as TSharedLink, ); expect(newData.pages[0].sharedLinks).toHaveLength(2); expect(newData.pages[0].sharedLinks[0].shareId).toBe('1'); }); }); describe('deleteSharedLink', () => { it('removes a shared link by id', () => { const initialData = { pages: [ { sharedLinks: [ { shareId: '1', updatedAt: '2023-04-01T12:00:00Z' }, { shareId: '2', updatedAt: '2023-04-01T13:00:00Z' }, ], }, ], }; const newData = deleteSharedLink(initialData as unknown as SharedLinkListData, '1'); expect(newData.pages[0].sharedLinks).toHaveLength(1); expect(newData.pages[0].sharedLinks[0].shareId).not.toBe('1'); }); it('does not remove a shared link if it does not exist', () => { const initialData = { pages: [ { sharedLinks: [ { shareId: '1', updatedAt: '2023-04-01T12:00:00Z' }, { shareId: '2', updatedAt: '2023-04-01T13:00:00Z' }, ], }, ], }; const newData = deleteSharedLink(initialData as unknown as SharedLinkListData, '3'); expect(newData.pages[0].sharedLinks).toHaveLength(2); }); }); }); describe('Shared Link Utilities with Fake Data', () => { describe('addSharedLink', () => { it('adds a new shared link to the existing fake data', () => { const newSharedLink = { shareId: 'new', updatedAt: new Date().toISOString(), } as TSharedLink; const initialLength = sharedLinkData.pages[0].sharedLinks.length; const newData = addSharedLink(sharedLinkData, newSharedLink); expect(newData.pages[0].sharedLinks.length).toBe(initialLength + 1); expect(newData.pages[0].sharedLinks[0].shareId).toBe('new'); }); }); describe('updateSharedLink', () => { it('updates an existing shared link within fake data', () => { const updatedSharedLink = { ...sharedLinkData.pages[0].sharedLinks[0], title: 'Updated Title', }; const newData = updateSharedLink(sharedLinkData, updatedSharedLink); expect(newData.pages[0].sharedLinks[0].title).toBe('Updated Title'); }); }); describe('deleteSharedLink', () => { it('removes a shared link by id from fake data', () => { const shareIdToDelete = sharedLinkData.pages[0].sharedLinks[0].shareId as string; const newData = deleteSharedLink(sharedLinkData, shareIdToDelete); const deletedDataExists = newData.pages[0].sharedLinks.some( (c) => c.shareId === shareIdToDelete, ); expect(deletedDataExists).toBe(false); }); }); });