@@ -2,13 +2,14 @@ import prisma from '../src/prisma/prisma';
22import { getHighestProjectNumber } from '../src/utils/projects.utils' ;
33import * as changeRequestUtils from '../src/utils/change-requests.utils' ;
44import { aquaman , batman , wonderwoman } from './test-data/users.test-data' ;
5- import { prismaProject1 , sharedProject1 } from './test-data/projects.test-data' ;
5+ import { prismaManufacturer1 , prismaProject1 , sharedProject1 } from './test-data/projects.test-data' ;
66import { prismaChangeRequest1 } from './test-data/change-requests.test-data' ;
77import { prismaTeam1 } from './test-data/teams.test-data' ;
88import * as projectTransformer from '../src/transformers/projects.transformer' ;
99import ProjectsService from '../src/services/projects.services' ;
1010import {
1111 AccessDeniedAdminOnlyException ,
12+ AccessDeniedGuestException ,
1213 DeletedException ,
1314 HttpException ,
1415 NotFoundException
@@ -254,4 +255,30 @@ describe('Projects', () => {
254255 expect ( prisma . user . update ) . toBeCalledTimes ( 1 ) ;
255256 } ) ;
256257 } ) ;
258+
259+ describe ( 'Manufacturer Tests' , ( ) => {
260+ test ( 'createManufacturer throws an error if user is a guest' , async ( ) => {
261+ await expect ( ProjectsService . createManufacturer ( wonderwoman , 'NAME' ) ) . rejects . toThrow (
262+ new AccessDeniedGuestException ( 'create manufacturers' )
263+ ) ;
264+ } ) ;
265+
266+ test ( 'createManufacturer throws an error if manufacturer already exists' , async ( ) => {
267+ vi . spyOn ( prisma . manufacturer , 'findUnique' ) . mockResolvedValue ( prismaManufacturer1 ) ;
268+
269+ await expect ( ProjectsService . createManufacturer ( batman , 'Manufacturer1' ) ) . rejects . toThrow (
270+ new HttpException ( 400 , 'Manufacturer1 already exists as a manufacturer!' )
271+ ) ;
272+ } ) ;
273+
274+ test ( 'createManufacturer works as intended and successfully returns correct name and creator ID' , async ( ) => {
275+ vi . spyOn ( prisma . manufacturer , 'findUnique' ) . mockResolvedValue ( null ) ;
276+ vi . spyOn ( prisma . manufacturer , 'create' ) . mockResolvedValue ( prismaManufacturer1 ) ;
277+
278+ const manufacturer = await ProjectsService . createManufacturer ( batman , 'Manufacturer1' ) ;
279+
280+ expect ( manufacturer . name ) . toBe ( prismaManufacturer1 . name ) ;
281+ expect ( manufacturer . creatorId ) . toBe ( prismaManufacturer1 . creatorId ) ;
282+ } ) ;
283+ } ) ;
257284} ) ;
0 commit comments