From 672bb429006731bef2bd06874ea33cd522909d5b Mon Sep 17 00:00:00 2001 From: milk717 Date: Mon, 13 Nov 2023 18:03:40 +0900 Subject: [PATCH 1/3] =?UTF-8?q?test:=20video=20api=20mocking=20=EC=B6=94?= =?UTF-8?q?=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 일단 명세대로 만들었으나 의문이 드는 부분과 변경 요청을 드리고 싶은 부분이 있어서 2023.11.14일에 대면으로 만나서 의논할 예정 --- FE/src/constants/api.ts | 3 ++ FE/src/mocks/handlers/video.ts | 79 ++++++++++++++++++++++++++++++++++ 2 files changed, 82 insertions(+) diff --git a/FE/src/constants/api.ts b/FE/src/constants/api.ts index 10a7126..75d1305 100644 --- a/FE/src/constants/api.ts +++ b/FE/src/constants/api.ts @@ -1,12 +1,15 @@ export const BASE_URL = ''; type Id = number; +type Hash = string; export const API = { MEMBER: '/member', VIDEO: '/video', + VIDEO_PRE_SIGNED: '/video/pre-signed', VIDEO_ALL: '/video/all', VIDEO_ID: (id?: Id) => `/video/${id ?? ':id'}`, + VIDEO_HASH: (hash?: Hash) => `/video/${hash ?? ':hash'}`, QUESTION: '/question', QUESTION_ID: (id?: Id) => `/question/${id ?? ':id'}`, ANSWER: '/answer', diff --git a/FE/src/mocks/handlers/video.ts b/FE/src/mocks/handlers/video.ts index e69de29..d276284 100644 --- a/FE/src/mocks/handlers/video.ts +++ b/FE/src/mocks/handlers/video.ts @@ -0,0 +1,79 @@ +import { API } from '@/constants/api'; +import { http, HttpResponse } from 'msw'; + +const videoHandlers = [ + http.post(API.VIDEO, ({ request }) => { + return HttpResponse.json({}, { status: 201 }); + }), + http.post(API.VIDEO_PRE_SIGNED, ({ request }) => { + return HttpResponse.json({}, { status: 201 }); + }), + http.get(API.VIDEO_ALL, () => { + return HttpResponse.json( + [ + { + id: 1, + questionId: 1, + name: 'CSS 선택자의 종류에 대해 설명해주세요.', + url: 'http://commondatastorage.googleapis.com/gtv-videos-bucket/sample/ElephantsDream.mp4', + thumbnail: + 'http://commondatastorage.googleapis.com/gtv-videos-bucket/sample/images/ElephantsDream.jpg', + videoLength: '00:10:53', + isPublic: false, + createdAt: '2023-11-12 08:22:12', + }, + { + id: 2, + questionId: 1, + name: 'Big Buck Bunny', + url: 'http://commondatastorage.googleapis.com/gtv-videos-bucket/sample/BigBuckBunny.mp4', + thumbnail: + 'http://commondatastorage.googleapis.com/gtv-videos-bucket/sample/images/BigBuckBunny.jpg', + videoLength: '', + isPublic: true, + createdAt: '2001-07-17 08:22:12', + }, + { + id: 3, + questionId: 1, + name: 'Elephant Dream', + url: 'http://commondatastorage.googleapis.com/gtv-videos-bucket/sample/ForBiggerBlazes.mp4', + thumbnail: + 'http://commondatastorage.googleapis.com/gtv-videos-bucket/sample/images/ForBiggerBlazes.jpg', + videoLength: '', + isPublic: false, + createdAt: '2023-11-11 08:22:12', + }, + ], + { status: 200 } + ); + }), + http.get(API.VIDEO_ID(), () => { + return HttpResponse.json( + [ + { + id: 1, + questionId: 1, + name: 'CSS 선택자의 종류에 대해 설명해주세요.', + url: 'http://commondatastorage.googleapis.com/gtv-videos-bucket/sample/ElephantsDream.mp4', + createdAt: '2023-11-12 08:22:12', + }, + ], + { status: 200 } + ); + }), + http.get(API.VIDEO_HASH(), () => { + return HttpResponse.json( + { hash: 'hashstringstringsrting' }, + { status: 200 } + ); + }), + http.patch(API.VIDEO_ID(), () => { + return HttpResponse.json(null, { status: 204 }); + }), + http.delete(API.VIDEO_ID(), ({ request }) => { + return HttpResponse.json(null, { status: 204 }); + }), +]; + +export default videoHandlers; From 242e683b62201cd4fb93221a0724c98cfbab5956 Mon Sep 17 00:00:00 2001 From: milk717 Date: Tue, 14 Nov 2023 15:24:33 +0900 Subject: [PATCH 2/3] =?UTF-8?q?test:=20video=20api=20mocking=20=EC=99=84?= =?UTF-8?q?=EB=A3=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- FE/src/constants/api.ts | 2 +- FE/src/mocks/handlers.ts | 3 ++- FE/src/mocks/handlers/video.ts | 39 +++++++++++++++++----------------- 3 files changed, 23 insertions(+), 21 deletions(-) diff --git a/FE/src/constants/api.ts b/FE/src/constants/api.ts index 75d1305..51c07ac 100644 --- a/FE/src/constants/api.ts +++ b/FE/src/constants/api.ts @@ -9,7 +9,7 @@ export const API = { VIDEO_PRE_SIGNED: '/video/pre-signed', VIDEO_ALL: '/video/all', VIDEO_ID: (id?: Id) => `/video/${id ?? ':id'}`, - VIDEO_HASH: (hash?: Hash) => `/video/${hash ?? ':hash'}`, + VIDEO_HASH: (hash?: Hash) => `/video/hash/${hash ?? ':hash'}`, QUESTION: '/question', QUESTION_ID: (id?: Id) => `/question/${id ?? ':id'}`, ANSWER: '/answer', diff --git a/FE/src/mocks/handlers.ts b/FE/src/mocks/handlers.ts index 69072d6..e104e57 100644 --- a/FE/src/mocks/handlers.ts +++ b/FE/src/mocks/handlers.ts @@ -1,10 +1,11 @@ -import { http, HttpResponse } from 'msw'; import memberHandlers from './handlers/member'; import questionHandlers from './handlers/question'; import answerHandlers from './handlers/answer'; +import videoHandlers from '@/mocks/handlers/video'; export const handlers = [ ...memberHandlers, ...questionHandlers, ...answerHandlers, + ...videoHandlers, ]; diff --git a/FE/src/mocks/handlers/video.ts b/FE/src/mocks/handlers/video.ts index d276284..3d4fa34 100644 --- a/FE/src/mocks/handlers/video.ts +++ b/FE/src/mocks/handlers/video.ts @@ -6,43 +6,44 @@ const videoHandlers = [ return HttpResponse.json({}, { status: 201 }); }), http.post(API.VIDEO_PRE_SIGNED, ({ request }) => { - return HttpResponse.json({}, { status: 201 }); + return HttpResponse.json( + { + preSignedUrl: + 'https://videos.k4i7.la.idrivee2-20.com/%EB%A3%A8%EC%9D%B4%EB%B7%94%ED%86%B5%ED%86%B5%ED%8A%80%EA%B8%B0%EB%84%A4_%EC%82%AD%EC%A0%9C%EB%90%9C%20%EC%A7%88%EB%AC%B8_754ad469-a5e7-48a2-b6bd-61430219c831.mp4?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=9li5IlcqRaLakjxoO16x%2F20231114%2Fe2%2Fs3%2Faws4_request&X-Amz-Date=20231114T060953Z&X-Amz-Expires=100&X-Amz-Signature=48691d27634299f2ad74ae7812b49e2bd88a0f8ab677b6b19ba0fc3921b08d24&X-Amz-SignedHeaders=host', + key: 'Idrive에 등록될 파일 이름입니다.', + }, + { status: 201 } + ); }), http.get(API.VIDEO_ALL, () => { return HttpResponse.json( [ { id: 1, - questionId: 1, - name: 'CSS 선택자의 종류에 대해 설명해주세요.', - url: 'http://commondatastorage.googleapis.com/gtv-videos-bucket/sample/ElephantsDream.mp4', + videoName: 'CSS 선택자의 종류에 대해 설명해주세요.', thumbnail: 'http://commondatastorage.googleapis.com/gtv-videos-bucket/sample/images/ElephantsDream.jpg', - videoLength: '00:10:53', + videoLength: '10:53', isPublic: false, - createdAt: '2023-11-12 08:22:12', + createdAt: '1699941626145', }, { id: 2, - questionId: 1, - name: 'Big Buck Bunny', - url: 'http://commondatastorage.googleapis.com/gtv-videos-bucket/sample/BigBuckBunny.mp4', + videoName: 'Big Buck Bunny', thumbnail: 'http://commondatastorage.googleapis.com/gtv-videos-bucket/sample/images/BigBuckBunny.jpg', - videoLength: '', + videoLength: '07:17', isPublic: true, - createdAt: '2001-07-17 08:22:12', + createdAt: '1699941626145', }, { id: 3, - questionId: 1, - name: 'Elephant Dream', - url: 'http://commondatastorage.googleapis.com/gtv-videos-bucket/sample/ForBiggerBlazes.mp4', + videoName: 'Elephant Dream', thumbnail: 'http://commondatastorage.googleapis.com/gtv-videos-bucket/sample/images/ForBiggerBlazes.jpg', - videoLength: '', + videoLength: '03:00', isPublic: false, - createdAt: '2023-11-11 08:22:12', + createdAt: '1699941626145', }, ], { status: 200 } @@ -53,10 +54,10 @@ const videoHandlers = [ [ { id: 1, - questionId: 1, - name: 'CSS 선택자의 종류에 대해 설명해주세요.', url: 'http://commondatastorage.googleapis.com/gtv-videos-bucket/sample/ElephantsDream.mp4', - createdAt: '2023-11-12 08:22:12', + hash: 'asdfasdfasdfsfasdfasf', + name: 'CSS 선택자의 종류에 대해 설명해주세요.', + createdAt: '1699941626145', }, ], { status: 200 } From c359e29dd8c92f53714eec03dbb385cc7ffcf2c5 Mon Sep 17 00:00:00 2001 From: milk717 Date: Tue, 14 Nov 2023 15:28:38 +0900 Subject: [PATCH 3/3] =?UTF-8?q?test:=20video=20api=20name=20=ED=95=84?= =?UTF-8?q?=EB=93=9C=EC=9D=98=20=EC=9D=B4=EB=A6=84=EC=9D=84=20videoName?= =?UTF-8?q?=EC=9C=BC=EB=A1=9C=20=EB=B3=80=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- FE/src/mocks/handlers/video.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/FE/src/mocks/handlers/video.ts b/FE/src/mocks/handlers/video.ts index 3d4fa34..ac9f9ba 100644 --- a/FE/src/mocks/handlers/video.ts +++ b/FE/src/mocks/handlers/video.ts @@ -56,7 +56,7 @@ const videoHandlers = [ id: 1, url: 'http://commondatastorage.googleapis.com/gtv-videos-bucket/sample/ElephantsDream.mp4', hash: 'asdfasdfasdfsfasdfasf', - name: 'CSS 선택자의 종류에 대해 설명해주세요.', + videoName: 'CSS 선택자의 종류에 대해 설명해주세요.', createdAt: '1699941626145', }, ],