11import { createAchievement , getAchievements , getAchievementById , updateAchievementById , deleteAchievementById , removeMemberFromAchievement } from '../src/controllers/achievement.controller' ;
22import * as achievementService from '../src/services/achievement.service' ;
3- import { uploadImage } from '../src/utils/imageUtils' ;
3+ import { uploadImage , deleteImage } from '../src/utils/imageUtils' ;
44import { ApiError } from '../src/utils/apiError' ;
55
66jest . mock ( '../src/app' , ( ) => ( {
@@ -24,8 +24,10 @@ jest.mock('../src/routes/achievements', () => {
2424
2525jest . mock ( '../src/utils/imageUtils' , ( ) => ( {
2626 uploadImage : jest . fn ( ) ,
27+ deleteImage : jest . fn ( ) ,
2728} ) ) ;
2829
30+
2931const mockedUploadImage = uploadImage as jest . Mock ;
3032
3133describe ( 'createAchievement (with image upload)' , ( ) => {
@@ -368,6 +370,7 @@ describe('updateAchievementById', () => {
368370 } ) ;
369371} ) ;
370372
373+ const mockedDeleteImage = deleteImage as jest . Mock ;
371374
372375describe ( 'deleteAchievementById' , ( ) => {
373376 it ( 'should delete the achievement and return 200 success message' , async ( ) => {
@@ -392,14 +395,26 @@ describe('deleteAchievementById', () => {
392395 createdAt : new Date ( ) ,
393396 updatedById : null ,
394397 updatedAt : new Date ( ) ,
398+
399+ createdBy : { id : 'admin_123' , name : 'Admin' } ,
400+ updatedBy : null ,
401+ members : [ ] ,
395402 } ;
396403
404+ jest
405+ . spyOn ( achievementService , 'getAchievementById' )
406+ . mockResolvedValue ( mockDeletedAchievement ) ;
407+
397408 jest
398409 . spyOn ( achievementService , 'deleteAchievementById' )
399410 . mockResolvedValue ( mockDeletedAchievement ) ;
400411
412+ mockedDeleteImage . mockResolvedValue ( undefined ) ;
413+
401414 await deleteAchievementById ( req , res ) ;
402415
416+ expect ( achievementService . getAchievementById ) . toHaveBeenCalledWith ( 1 ) ;
417+ expect ( mockedDeleteImage ) . toHaveBeenCalledWith ( expect . anything ( ) , mockDeletedAchievement . imageUrl ) ;
403418 expect ( achievementService . deleteAchievementById ) . toHaveBeenCalledWith ( 1 ) ;
404419 expect ( res . status ) . toHaveBeenCalledWith ( 200 ) ;
405420 expect ( res . json ) . toHaveBeenCalledWith ( {
0 commit comments