diff --git a/src/apis/reviews/__test__/reviews.resolver.spec.ts b/src/apis/reviews/__test__/reviews.resolver.spec.ts index 9cdbbd3..57458bb 100644 --- a/src/apis/reviews/__test__/reviews.resolver.spec.ts +++ b/src/apis/reviews/__test__/reviews.resolver.spec.ts @@ -1,58 +1,31 @@ import { Test, TestingModule } from '@nestjs/testing'; -import { Reservation } from 'src/apis/reservations/entities/reservation.entity'; -import { Shop } from 'src/apis/shops/entities/shop.entity'; -import { Review } from '../entities/review.entity'; import { ReviewsResolver } from '../reviews.resolver'; import { ReviewsService } from '../reviews.service'; +import * as httpMocks from 'node-mocks-http'; +import { IContext } from 'src/commons/interface/context'; +import { CreateReviewInput } from '../dto/create-review.input'; jest.mock('../reviews.resolver'); - -const EXAMPLE_RESERVATION: Reservation = { - "id" : "33bcbf41-884b-46f2-96a2-f3947a1ca906", - "date" : new Date(2023-04-30), - "time" : "13:00", - "shopId" : "500d75e0-0223-4046-be13-55887bfbf6f0", - "userId" : "222070da-c5ab-43f0-802c-bdb4a73ccc0f", - "dogId" : "7790ffa7-0be3-44ff-94dc-54c59fe696ed", - "createdAt" : new Date(2023-03-30), - "deletedAt" : null -} -const EXAMPLE_SHOP: Shop = { - "id" : "500d75e0-0223-4046-be13-55887bfbf6f0", - "name" : "테스트1", - "phone" : "01000000000", - "openHour" : "13:00", - "closeHour" : "15:00", - "address" : "서울시 구로구", - "code" : 11170, - "lat" : "37.4944134", - "lng" : "126.8563336", - "averageStar" : 3, - "reservation": null, - "image": null, - "review": null, - "updatedAt" : null, - "deletedAt" : null -} -const EXAMPLE_REVIEW: Review = { +const EXAMPLE_REVIEW = { id: 'EXAMPLE_REVIEW_ID', contents: 'EXAMPLE_REVIEW_CONTENTS', createdAt: new Date(), star: 5, - reservation: EXAMPLE_RESERVATION, - shop: EXAMPLE_SHOP, -}; -const reviewId = EXAMPLE_REVIEW.id; - -let mockReviewsService = { - find: jest.fn(({ reviewId }) => EXAMPLE_REVIEW), - findByShopIdWithPage: jest.fn(({ page, count, reviewId }) => EXAMPLE_REVIEW), - create: jest.fn(() => EXAMPLE_REVIEW), + reservation: { id: '33bcbf41-884b-46f2-96a2-f3947a1ca906' }, + shop: { id: '500d75e0-0223-4046-be13-55887bfbf6f0' }, }; describe('ReviewResolver', () => { + let mockReviewsService = { + find: jest.fn(({ reviewId }) => EXAMPLE_REVIEW), + findByShopIdWithPage: jest.fn( + ({ page, count, reviewId }) => EXAMPLE_REVIEW, + ), + create: jest.fn(({ userId, createReviewInput }) => EXAMPLE_REVIEW), + }; let reviewsResolver: ReviewsResolver; + let context: IContext; beforeEach(async () => { const reviewsModule: TestingModule = await Test.createTestingModule({ @@ -66,8 +39,16 @@ describe('ReviewResolver', () => { }).compile(); mockReviewsService = reviewsModule.get(ReviewsService); reviewsResolver = reviewsModule.get(ReviewsResolver); + context = { + req: httpMocks.createRequest(), + res: httpMocks.createResponse(), + }; }); + const reviewId = EXAMPLE_REVIEW.id; + const shopId = EXAMPLE_REVIEW.shop.id; + const userId = 'exampleUserId'; + describe('fetchReview', () => { it('reivewService의 find 메서드 실행', async () => { const result = await reviewsResolver.fetchReview(reviewId); @@ -80,7 +61,8 @@ describe('ReviewResolver', () => { describe('fetchReviewsByShopId', () => { it('reivewService의 findByShopIdWithPage 메서드 실행', async () => { - const { page, count, shopID } = { 1, 100, } + const page = 1; + const count = 100; const result = await reviewsResolver.fetchReviewsByShopId( page, count, @@ -94,4 +76,28 @@ describe('ReviewResolver', () => { ).toBeCalled(); }); }); + + describe('createReview', () => { + it('reivewService의 create 메서드 실행', async () => { + const createReviewInput: CreateReviewInput = { + contents: EXAMPLE_REVIEW.contents, + star: EXAMPLE_REVIEW.star, + reservationId: EXAMPLE_REVIEW.reservation.id, + shopId: EXAMPLE_REVIEW.shop.id, + }; + const result = await reviewsResolver.createReview( + createReviewInput, + context, + ); + return result; + + expect(result).toEqual(EXAMPLE_REVIEW); + expect( + mockReviewsService.create({ + userId, + createReviewInput, + }), + ).toBeCalled(); + }); + }); }); diff --git a/src/main.ts b/src/main.ts index ddc2cbc..7dd069f 100644 --- a/src/main.ts +++ b/src/main.ts @@ -9,6 +9,15 @@ async function bootstrap() { app.useGlobalPipes(new ValidationPipe()); app.useGlobalFilters(new HttpExceptionFilter()); app.use(graphqlUploadExpress()); + app.enableCors({ + origin: [ + 'http://localhost:3000', + 'http://127.0.0.1:3000', + 'http://34.64.53.80:3000', + 'https://www.groomeong.shop', + ], + credentials: true, + }); await app.listen(3000); } bootstrap();