@@ -292,6 +292,49 @@ describe('Work Packages', () => {
292292 } ) ;
293293 } ) ;
294294
295+ describe ( 'getManyWorkPackages' , ( ) => {
296+ test ( 'should retrieve work packages for valid WBS numbers' , async ( ) => {
297+ const wbsNums = [
298+ { carNumber : 1 , projectNumber : 1 , workPackageNumber : 1 } ,
299+ { carNumber : 1 , projectNumber : 1 , workPackageNumber : 1 }
300+ ] ;
301+
302+ vi . spyOn ( prisma . work_Package , 'findMany' ) . mockResolvedValue ( [ prismaWorkPackage1 , prismaWorkPackage1 ] ) ;
303+
304+ const result = await WorkPackageService . getManyWorkPackages ( wbsNums ) ;
305+
306+ expect ( result ) . toStrictEqual ( [ sharedWorkPackage , sharedWorkPackage ] ) ;
307+ } ) ;
308+
309+ test ( 'should throw an error for a project WBS number' , async ( ) => {
310+ const wbsNums = [ { carNumber : 1 , projectNumber : 1 , workPackageNumber : 0 } ] ;
311+
312+ await expect ( async ( ) => await WorkPackageService . getManyWorkPackages ( wbsNums ) ) . rejects . toThrow (
313+ new HttpException ( 404 , 'WBS Number 1.1.0 is a project WBS#, not a Work Package WBS#' )
314+ ) ;
315+ } ) ;
316+
317+ test ( 'should throw an error for non-existent WBS numbers' , async ( ) => {
318+ const wbsNums = [ { carNumber : 9 , projectNumber : 9 , workPackageNumber : 9 } ] ;
319+
320+ vi . spyOn ( prisma . work_Package , 'findMany' ) . mockResolvedValue ( [ ] ) ;
321+
322+ await expect ( async ( ) => await WorkPackageService . getManyWorkPackages ( wbsNums ) ) . rejects . toThrow (
323+ new NotFoundException ( 'Work Package' , '9.9.9' )
324+ ) ;
325+ } ) ;
326+
327+ test ( 'should retrieve an empty array for an empty WBS numbers array' , async ( ) => {
328+ const wbsNums : WbsNumber [ ] = [ ] ;
329+
330+ vi . spyOn ( prisma . work_Package , 'findMany' ) . mockResolvedValue ( [ ] ) ;
331+
332+ const result = await WorkPackageService . getManyWorkPackages ( wbsNums ) ;
333+
334+ expect ( result ) . toStrictEqual ( [ ] ) ;
335+ } ) ;
336+ } ) ;
337+
295338 describe ( 'slackMessageUpcomingDeadlines' , ( ) => {
296339 beforeEach ( ( ) => {
297340 vi . spyOn ( slackUtils , 'sendSlackUpcomingDeadlineNotification' ) . mockImplementation ( async ( ) => { } ) ;
0 commit comments