From 5a503af00fe649ed58ad5d5a65ab8f2b065f0f46 Mon Sep 17 00:00:00 2001 From: Jjoobob123 <273hur4747@gmail.com> Date: Wed, 29 Mar 2023 18:30:01 +0900 Subject: [PATCH] =?UTF-8?q?refactor:=20=EC=A0=84=EC=B2=B4=EC=A0=81?= =?UTF-8?q?=EC=9D=B8=20=EC=BD=94=EB=93=9C=20=EB=A6=AC=ED=8C=A9=ED=86=A0?= =?UTF-8?q?=EB=A7=81=20=EB=B0=8F=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 코드 리팩토링 및 수정 --- src/apis/reservations/reservation.service.ts | 7 +++- src/apis/shops/__test__/shops.resolver.ts | 0 src/apis/shops/shops.module.ts | 20 +++++------ .../users/__test__/users.resolver.spec.ts | 0 src/apis/users/__test__/users.service.spec.ts | 34 +++++++++++++------ src/apis/users/interface/users.interface.ts | 5 +++ src/apis/users/user.service.ts | 8 +++-- src/app.controller.ts | 5 ++- src/app.module.ts | 2 +- src/commons/filter/http-exception.filter.ts | 21 ++++++------ 10 files changed, 65 insertions(+), 37 deletions(-) create mode 100644 src/apis/shops/__test__/shops.resolver.ts create mode 100644 src/apis/users/__test__/users.resolver.spec.ts diff --git a/src/apis/reservations/reservation.service.ts b/src/apis/reservations/reservation.service.ts index c19548d..055dcac 100644 --- a/src/apis/reservations/reservation.service.ts +++ b/src/apis/reservations/reservation.service.ts @@ -56,7 +56,7 @@ export class ReservationsService { await this.dogsService.findOneById({ id: dogId }); - return await this.reservationsRepository.save({ + const result = await this.reservationsRepository.save({ ...createReservationInput, shop: { id: shopId, @@ -68,6 +68,11 @@ export class ReservationsService { id: dogId, }, }); + + return this.reservationsRepository.findOne({ + where: { id: result.id }, + relations: ['dog', 'shop', 'user'], + }); } // 예약 가능 여부 확인하기 diff --git a/src/apis/shops/__test__/shops.resolver.ts b/src/apis/shops/__test__/shops.resolver.ts new file mode 100644 index 0000000..e69de29 diff --git a/src/apis/shops/shops.module.ts b/src/apis/shops/shops.module.ts index 37e4fc7..7380899 100644 --- a/src/apis/shops/shops.module.ts +++ b/src/apis/shops/shops.module.ts @@ -11,18 +11,18 @@ import { ShopsService } from './shops.service'; Shop, // ]), ElasticsearchModule.register({ - // node: 'http://elasticsearch:9200', // 로컬 + node: 'http://elasticsearch:9200', // 로컬 // 배포 - node: 'https://search-groomeong-elasticsearch-7mvk7xnf5m2a6tcx6p5ro5qste.ap-southeast-2.es.amazonaws.com:443', - auth: { - username: process.env.OPENSEARCH_ID, - password: process.env.OPENSEARCH_PWD, - }, - headers: { - Accept: 'application/json', - 'Content-Type': 'application/json', - }, + // node: 'https://search-groomeong-elasticsearch-7mvk7xnf5m2a6tcx6p5ro5qste.ap-southeast-2.es.amazonaws.com:443', + // auth: { + // username: process.env.OPENSEARCH_ID, + // password: process.env.OPENSEARCH_PWD, + // }, + // headers: { + // Accept: 'application/json', + // 'Content-Type': 'application/json', + // }, }), ], providers: [ diff --git a/src/apis/users/__test__/users.resolver.spec.ts b/src/apis/users/__test__/users.resolver.spec.ts new file mode 100644 index 0000000..e69de29 diff --git a/src/apis/users/__test__/users.service.spec.ts b/src/apis/users/__test__/users.service.spec.ts index 6792b78..6423855 100644 --- a/src/apis/users/__test__/users.service.spec.ts +++ b/src/apis/users/__test__/users.service.spec.ts @@ -41,6 +41,7 @@ describe('UsersService', () => { let usersService: UsersService; let mailerService: MailerService; let cacheManager: Cache; + let mockUsersRepository: Repository; beforeEach(async () => { const usersModule = await Test.createTestingModule({ @@ -88,6 +89,10 @@ describe('UsersService', () => { mailerService = usersModule.get(MailerService); usersService = usersModule.get(UsersService); + + mockUsersRepository = usersModule.get>( + getRepositoryToken(User), + ); }); describe('create', () => { @@ -129,21 +134,11 @@ describe('UsersService', () => { }); describe('mailerService', () => { - // it('send mail', async () => { - // const shoot = await mailerService.sendMail({ - // to: '273hur4747@gmail.com', - // from: 'Test email', - // subject: '테스트코드 너무 어렵다..', - // text: 'Welcome to Hell', - // }); - // expect(shoot).(); - // }); - it('sendTokenEmail', async () => { const myData = { name: '철수', email: 'bbb@bbb.com', - password: '1234', + hasedPassword: '1234', phone: '01012341234', }; @@ -195,4 +190,21 @@ describe('UsersService', () => { } }); }); + + describe('update', () => { + it('업데이트가 잘 되었는지 확인', async () => { + const myData = { + id: '1', + email: 'a@a.com', + password: '1111', + name: '짱구2', + phone: '01022221237', + }; + + const user = await usersService.findOne({ userId: myData.id }); + const result = await mockUsersRepository.save({ ...myData }); + + expect(myData).toEqual(result); + }); + }); }); diff --git a/src/apis/users/interface/users.interface.ts b/src/apis/users/interface/users.interface.ts index adec9e2..c41bb81 100644 --- a/src/apis/users/interface/users.interface.ts +++ b/src/apis/users/interface/users.interface.ts @@ -51,3 +51,8 @@ export interface IUsersServiceCheckToken { export interface IUsersServiceDuplicationEmail { email: string; } + +export interface IUsersServiceUpdatePwd { + userId: string; + updateUserInput: UpdateUserInput; +} diff --git a/src/apis/users/user.service.ts b/src/apis/users/user.service.ts index 3e5fc83..628c9ed 100644 --- a/src/apis/users/user.service.ts +++ b/src/apis/users/user.service.ts @@ -23,6 +23,7 @@ import { IUsersServiceSendEmail, IUsersServiceSendTokenEmail, IUsersServiceUpdate, + IUsersServiceUpdatePwd, } from './interface/users.interface'; import { MailerService } from '@nestjs-modules/mailer'; import { sendTokenTemplate, welcomeTemplate } from 'src/commons/utils/utils'; @@ -178,16 +179,17 @@ export class UsersService { updateUserInput, }: IUsersServiceUpdate): Promise { const user = await this.findOne({ userId }); + + const hasedPassword = await bcrypt.hash(updateUserInput.password, 10); + const result = await this.userRepository.save({ ...user, ...updateUserInput, + password: hasedPassword, }); return result; } - // 이메일 인증 후 비밀번호 수정 - // updatePwdSendToken({ email, password }) {} - // 유저 삭제하기(삭제는 나중에) async delete({ userId, // diff --git a/src/app.controller.ts b/src/app.controller.ts index 3df57b8..cd020d3 100644 --- a/src/app.controller.ts +++ b/src/app.controller.ts @@ -1,9 +1,12 @@ -import { Controller, Get } from '@nestjs/common'; +import { Controller, Get, HttpException, UseFilters } from '@nestjs/common'; +import { HttpExceptionFilter } from './commons/filter/http-exception.filter'; @Controller() +// @UseFilters() export class AppController { @Get('/') getHello() { + // throw new HttpException('Bad Request', 400); return '안녕하세요!'; } } diff --git a/src/app.module.ts b/src/app.module.ts index e53f4c6..0bfd0c9 100644 --- a/src/app.module.ts +++ b/src/app.module.ts @@ -76,7 +76,7 @@ import { HttpExceptionFilter } from './commons/filter/http-exception.filter'; }), CacheModule.register({ store: redisStore, - url: `redis://${process.env.REDIS_URL}:6379`, + url: `redis://${process.env.REDIS_HOST}:6379`, isGlobal: true, }), ], diff --git a/src/commons/filter/http-exception.filter.ts b/src/commons/filter/http-exception.filter.ts index 0e0e1e4..647d7cf 100644 --- a/src/commons/filter/http-exception.filter.ts +++ b/src/commons/filter/http-exception.filter.ts @@ -4,16 +4,17 @@ import { ExceptionFilter, HttpException, } from '@nestjs/common'; -import { Response } from 'express'; +import { HttpArgumentsHost } from '@nestjs/common/interfaces'; +import { Request, Response } from 'express'; @Catch(HttpException) export class HttpExceptionFilter implements ExceptionFilter { catch(exception: HttpException, host: ArgumentsHost) { const ctx = host.switchToHttp(); - const response = ctx.getResponse(); - const request = ctx.getRequest(); + const httpCtx = ctx as HttpArgumentsHost; + const response = httpCtx.getResponse(); + const request = httpCtx.getRequest(); const status = exception.getStatus(); - // const message = exception.message; const message = exception.message || 'Unexpected error occurred'; const timestamp = new Date().toLocaleString('en-US', { timeZone: 'Asia/Seoul', @@ -25,11 +26,11 @@ export class HttpExceptionFilter implements ExceptionFilter { console.log('예외코드:', status); console.log('============'); - response.status(status).json({ - status, - timestamp, - message, - path: request.url, - }); + // response.status(status).json({ + // status, + // timestamp, + // message, + // path: request.url, + // }); } }