@@ -683,6 +683,7 @@ describe('Projects', () => {
683683 new DeletedException ( 'Manufacturer' , prismaManufacturer2 . name )
684684 ) ;
685685 } ) ;
686+
686687 test ( 'Get all Manufacturer works' , async ( ) => {
687688 vi . spyOn ( prisma . manufacturer , 'findMany' ) . mockResolvedValue ( [ ] ) ;
688689
@@ -1014,5 +1015,42 @@ describe('Projects', () => {
10141015 expect ( updatedMaterial . name ) . toBe ( 'name2' ) ;
10151016 expect ( prisma . material . update ) . toBeCalledTimes ( 1 ) ;
10161017 } ) ;
1018+
1019+ test ( 'deleteMaterial works' , async ( ) => {
1020+ vi . spyOn ( prisma . material , 'findUnique' ) . mockResolvedValue ( prismaMaterial ) ;
1021+ const deletedMaterial = { ...prismaMaterial , dateDeleted : new Date ( ) } ;
1022+ vi . spyOn ( prisma . material , 'update' ) . mockResolvedValue ( deletedMaterial ) ;
1023+
1024+ const material = await ProjectsService . deleteMaterial ( batman , prismaMaterial . materialId ) ;
1025+
1026+ expect ( material ) . toStrictEqual ( deletedMaterial ) ;
1027+ } ) ;
1028+
1029+ test ( 'deleteMaterial fails when user is not at least Lead' , async ( ) => {
1030+ vi . spyOn ( prisma . material , 'findUnique' ) . mockResolvedValue ( prismaMaterial ) ;
1031+ vi . spyOn ( prisma . material , 'update' ) . mockResolvedValue ( prismaMaterial ) ;
1032+
1033+ await expect ( async ( ) => await ProjectsService . deleteMaterial ( wonderwoman , prismaMaterial . materialId ) ) . rejects . toThrow (
1034+ new AccessDeniedException ( 'Only Leadership can delete materials' )
1035+ ) ;
1036+ } ) ;
1037+
1038+ test ( 'deleteMaterial fails when material is not found' , async ( ) => {
1039+ vi . spyOn ( prisma . material , 'findUnique' ) . mockResolvedValue ( null ) ;
1040+ vi . spyOn ( prisma . material , 'update' ) . mockResolvedValue ( prismaMaterial ) ;
1041+
1042+ await expect ( async ( ) => await ProjectsService . deleteMaterial ( batman , prismaMaterial . materialId ) ) . rejects . toThrow (
1043+ new NotFoundException ( 'Material' , prismaMaterial . materialId )
1044+ ) ;
1045+ } ) ;
1046+
1047+ test ( 'deleteMaterial fails when material has been deleted' , async ( ) => {
1048+ vi . spyOn ( prisma . material , 'findUnique' ) . mockResolvedValue ( { ...prismaMaterial , dateDeleted : new Date ( ) } ) ;
1049+ vi . spyOn ( prisma . material , 'update' ) . mockResolvedValue ( prismaMaterial ) ;
1050+
1051+ await expect ( async ( ) => await ProjectsService . deleteMaterial ( batman , prismaMaterial . materialId ) ) . rejects . toThrow (
1052+ new DeletedException ( 'Material' , prismaMaterial . materialId )
1053+ ) ;
1054+ } ) ;
10171055 } ) ;
10181056} ) ;
0 commit comments