@@ -685,6 +685,35 @@ describe('Projects', () => {
685685 } ) ;
686686 } ) ;
687687
688+ describe ( 'Delete Assembly' , ( ) => {
689+ test ( 'Deleteing assembly fails because user is not an admin or head' , async ( ) => {
690+ await expect ( ProjectsService . deleteAssembly ( 'New Assembly' , theVisitor ) ) . rejects . toThrow (
691+ new AccessDeniedException ( 'Only an Admin or a head can delete an Assembly' )
692+ ) ;
693+ } ) ;
694+
695+ test ( 'Deleting assembly fails if assembly does not exist' , async ( ) => {
696+ await expect ( ProjectsService . deleteAssembly ( 'New Assembly' , batman ) ) . rejects . toThrow (
697+ new NotFoundException ( 'Assembly' , 'New Assembly' )
698+ ) ;
699+ } ) ;
700+
701+ test ( 'Deleting assembly fails if assemly has already been deleted' , async ( ) => {
702+ vi . spyOn ( prisma . assembly , 'findUnique' ) . mockResolvedValue ( { ...prismaAssembly1 , dateDeleted : new Date ( ) } ) ;
703+ await expect ( ProjectsService . deleteAssembly ( 'New Assembly' , batman ) ) . rejects . toThrow (
704+ new DeletedException ( 'Assembly' , 'New Assembly' )
705+ ) ;
706+ } ) ;
707+
708+ test ( 'Deleting assembly works' , async ( ) => {
709+ vi . spyOn ( prisma . assembly , 'findUnique' ) . mockResolvedValue ( prismaAssembly1 ) ;
710+ vi . spyOn ( prisma . assembly , 'update' ) . mockResolvedValue ( { ...prismaAssembly1 , dateDeleted : new Date ( ) } ) ;
711+ const deletedAssembly = await ProjectsService . deleteAssembly ( 'New Assembly' , batman ) ;
712+ expect ( deletedAssembly . name ) . toBe ( 'New Assembly' ) ;
713+ expect ( prisma . assembly . update ) . toBeCalledTimes ( 1 ) ;
714+ } ) ;
715+ } ) ;
716+
688717 describe ( 'Deleting material type' , ( ) => {
689718 test ( 'Delete Material Type does not work if user is not an admin or head' , async ( ) => {
690719 await expect ( ProjectsService . deleteMaterialType ( 'NERSoftwareTools' , theVisitor ) ) . rejects . toThrow (
0 commit comments