@@ -5,6 +5,9 @@ import { newFileItem, newFolderItem } from '../fixtures/drive.fixture';
55import { DriveFolderService } from '../../src/services/drive/drive-folder.service' ;
66import { DriveFileService } from '../../src/services/drive/drive-file.service' ;
77import 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
912describe ( '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