Skip to content

Commit 11c3c58

Browse files
committed
tests: add deleteOrTrashItem test suite
1 parent 4c6a090 commit 11c3c58

1 file changed

Lines changed: 65 additions & 0 deletions

File tree

test/utils/webdav.utils.test.ts

Lines changed: 65 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,9 @@ import { newFileItem, newFolderItem } from '../fixtures/drive.fixture';
55
import { DriveFolderService } from '../../src/services/drive/drive-folder.service';
66
import { DriveFileService } from '../../src/services/drive/drive-file.service';
77
import AppError from '@internxt/sdk/dist/shared/types/errors';
8+
import { ConfigService } from '../../src/services/config.service';
9+
import { TrashService } from '../../src/services/drive/trash.service';
10+
import { getWebdavConfigMock } from '../fixtures/webdav.fixture';
811

912
describe('Webdav utils', () => {
1013
describe('joinURL', () => {
@@ -131,4 +134,66 @@ describe('Webdav utils', () => {
131134
expect(findFolderStub).not.toHaveBeenCalled();
132135
});
133136
});
137+
138+
describe('deleteOrTrashItem', () => {
139+
it('When deleteFilesPermanently is true for a file, then it should delete permanently', async () => {
140+
const fileItem = newFileItem();
141+
vi.spyOn(ConfigService.instance, 'readWebdavConfig').mockResolvedValue(
142+
getWebdavConfigMock({ deleteFilesPermanently: true }),
143+
);
144+
const deleteItemPermanentlyStub = vi.spyOn(TrashService.instance, 'deleteItemPermanently').mockResolvedValue();
145+
const trashItemsStub = vi.spyOn(TrashService.instance, 'trashItems').mockResolvedValue();
146+
147+
await WebDavUtils.deleteOrTrashItem(fileItem);
148+
149+
expect(deleteItemPermanentlyStub).toHaveBeenCalledWith('file', fileItem.uuid);
150+
expect(trashItemsStub).not.toHaveBeenCalled();
151+
});
152+
153+
it('When deleteFilesPermanently is true for a folder, then it should delete permanently', async () => {
154+
const folderItem = newFolderItem();
155+
vi.spyOn(ConfigService.instance, 'readWebdavConfig').mockResolvedValue(
156+
getWebdavConfigMock({ deleteFilesPermanently: true }),
157+
);
158+
const deleteItemPermanentlyStub = vi.spyOn(TrashService.instance, 'deleteItemPermanently').mockResolvedValue();
159+
const trashItemsStub = vi.spyOn(TrashService.instance, 'trashItems').mockResolvedValue();
160+
161+
await WebDavUtils.deleteOrTrashItem(folderItem);
162+
163+
expect(deleteItemPermanentlyStub).toHaveBeenCalledWith('folder', folderItem.uuid);
164+
expect(trashItemsStub).not.toHaveBeenCalled();
165+
});
166+
167+
it('When deleteFilesPermanently is false for a file, then it should trash the file', async () => {
168+
const fileItem = newFileItem();
169+
vi.spyOn(ConfigService.instance, 'readWebdavConfig').mockResolvedValue(
170+
getWebdavConfigMock({ deleteFilesPermanently: false }),
171+
);
172+
const deleteItemPermanentlyStub = vi.spyOn(TrashService.instance, 'deleteItemPermanently').mockResolvedValue();
173+
const trashItemsStub = vi.spyOn(TrashService.instance, 'trashItems').mockResolvedValue();
174+
175+
await WebDavUtils.deleteOrTrashItem(fileItem);
176+
177+
expect(trashItemsStub).toHaveBeenCalledWith({
178+
items: [{ type: 'file', uuid: fileItem.uuid }],
179+
});
180+
expect(deleteItemPermanentlyStub).not.toHaveBeenCalled();
181+
});
182+
183+
it('When deleteFilesPermanently is false for a folder, then it should trash the folder', async () => {
184+
const folderItem = newFolderItem();
185+
vi.spyOn(ConfigService.instance, 'readWebdavConfig').mockResolvedValue(
186+
getWebdavConfigMock({ deleteFilesPermanently: false }),
187+
);
188+
const deleteItemPermanentlyStub = vi.spyOn(TrashService.instance, 'deleteItemPermanently').mockResolvedValue();
189+
const trashItemsStub = vi.spyOn(TrashService.instance, 'trashItems').mockResolvedValue();
190+
191+
await WebDavUtils.deleteOrTrashItem(folderItem);
192+
193+
expect(trashItemsStub).toHaveBeenCalledWith({
194+
items: [{ type: 'folder', uuid: folderItem.uuid }],
195+
});
196+
expect(deleteItemPermanentlyStub).not.toHaveBeenCalled();
197+
});
198+
});
134199
});

0 commit comments

Comments
 (0)