From 83f2f590b44b1c3ec6f0afa3ddc4a9a426c6adf0 Mon Sep 17 00:00:00 2001 From: cabbage556 Date: Fri, 31 Mar 2023 12:55:46 +0900 Subject: [PATCH] =?UTF-8?q?test:=20createDog,=20updateDog,=20deleteDog=20A?= =?UTF-8?q?PI=20=ED=85=8C=EC=8A=A4=ED=8A=B8=EC=BD=94=EB=93=9C=20=EC=9E=91?= =?UTF-8?q?=EC=84=B1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit test-#145 --- src/apis/dogs/__test__/dogs.resolver.spec.ts | 102 ++++++++++++++++++- 1 file changed, 97 insertions(+), 5 deletions(-) diff --git a/src/apis/dogs/__test__/dogs.resolver.spec.ts b/src/apis/dogs/__test__/dogs.resolver.spec.ts index 6a3fea4..f38bf54 100644 --- a/src/apis/dogs/__test__/dogs.resolver.spec.ts +++ b/src/apis/dogs/__test__/dogs.resolver.spec.ts @@ -5,8 +5,10 @@ import { DogsService } from '../dogs.service'; import { DOG_TYPE } from '../enum/dog-type.enum'; import { GqlAuthGuard } from '../../auth/guards/gql-auth.guard'; import * as httpMocks from 'node-mocks-http'; -import { IAuthUser, IContext } from 'src/commons/interface/context'; +import { IContext } from 'src/commons/interface/context'; import { User } from 'src/apis/users/entities/user.entity'; +import { CreateDogInput } from '../dto/create-dog.input'; +import { UpdateDogInput } from '../dto/update-dog.input'; const MOCK_USER = { id: 'c84fa63e-7a05-4cd5-b015-d4db9a262b18', @@ -35,9 +37,24 @@ const MOCK_DOG = { userId: 'c84fa63e-7a05-4cd5-b015-d4db9a262b18', }; +const UPDATED_MOCK_DOG = { + id: '3ce6246c-f37a-426e-b95a-b38ec6d55f4e', + name: '댕댕이', + age: 5, + weight: 10.5, + breed: DOG_TYPE.LARGE, + specifics: '성격이 착해요', + image: + 'https://storage.cloud.google.com/groomeong-storage/origin/dog/a6c16f50-2946-4dfb-9785-a782cea6c570/%03b%EF%BF%BD2.jpeg', + createdAt: '2023-03-21 12:13:02.011088', + deletedAt: null, + userId: 'c84fa63e-7a05-4cd5-b015-d4db9a262b18', +}; + describe('DogsResolver', () => { let dogsResolver: DogsResolver; + // Guard 통과 가정 const mockAuthGuard: CanActivate = { canActivate: jest.fn().mockImplementation(() => true), }; @@ -50,8 +67,25 @@ describe('DogsResolver', () => { context.req.user.id = MOCK_USER.id; const mockDogsService = { - findOneById: jest.fn().mockImplementation((id: string) => MOCK_DOG), - findByUserId: jest.fn().mockImplementation((userId: string) => [MOCK_DOG]), + findOneById: jest + .fn() // + .mockImplementation((id: string) => MOCK_DOG), + findByUserId: jest + .fn() // + .mockImplementation((userId: string) => [MOCK_DOG]), + create: jest + .fn() // + .mockImplementation( + (createDogInput: CreateDogInput, userId: string) => MOCK_DOG, + ), + updateOneById: jest + .fn() // + .mockImplementation( + (id: string, updateDogInput: UpdateDogInput) => UPDATED_MOCK_DOG, + ), + deleteOneById: jest + .fn() // + .mockImplementation((id: string, userId: string) => true), }; beforeEach(async () => { @@ -84,9 +118,9 @@ describe('DogsResolver', () => { }); it('NotFoundException을 던져야 함', () => { - const nonValidMockId = '3ce6246c-f37a-426e-b95a-b38ec6d55f4f'; + const inValidMockId = '3ce6246c-f37a-426e-b95a-b38ec6d55f4f'; try { - dogsResolver.fetchDog(nonValidMockId); + dogsResolver.fetchDog(inValidMockId); } catch (error) { expect(error).toBeInstanceOf(NotFoundException); } @@ -98,4 +132,62 @@ describe('DogsResolver', () => { expect(dogsResolver.fetchUserDogs(context)).toEqual([{ ...MOCK_DOG }]); }); }); + + describe('createDog', () => { + it('생성한 강아지 정보를 리턴해야 함', () => { + const createDogInput: CreateDogInput = { + name: MOCK_DOG.name, + age: MOCK_DOG.age, + weight: MOCK_DOG.weight, + breed: MOCK_DOG.breed, + specifics: MOCK_DOG.specifics, + image: MOCK_DOG.image, + }; + + expect(dogsResolver.createDog(createDogInput, context)).toEqual({ + ...MOCK_DOG, + }); + }); + }); + + describe('updateDog', () => { + it('업데이트한 강아지 정보를 리턴해야 함', () => { + const updateDogInput: UpdateDogInput = { + weight: UPDATED_MOCK_DOG.weight, + breed: UPDATED_MOCK_DOG.breed, + }; + + expect(dogsResolver.updateDog(MOCK_DOG.id, updateDogInput)).toEqual({ + ...UPDATED_MOCK_DOG, + }); + }); + + it('NotFoundException을 던져야 함', () => { + const inValidMockId = '3ce6246c-f37a-426e-b95a-b38ec6d55f4f'; + const updateDogInput: UpdateDogInput = { + weight: UPDATED_MOCK_DOG.weight, + breed: UPDATED_MOCK_DOG.breed, + }; + try { + dogsResolver.updateDog(inValidMockId, updateDogInput); + } catch (error) { + expect(error).toBeInstanceOf(NotFoundException); + } + }); + }); + + describe('deleteDog', () => { + it('삭제 여부 true를 반환해야 함', () => { + expect(dogsResolver.deleteDog(MOCK_DOG.id, context)).toBe(true); + }); + + it('NotFoundException을 던져야 함', () => { + const inValidMockId = '3ce6246c-f37a-426e-b95a-b38ec6d55f4f'; + try { + dogsResolver.deleteDog(inValidMockId, context); + } catch (error) { + expect(error).toBeInstanceOf(NotFoundException); + } + }); + }); });