Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[FE] 리뷰 목록 페이지에서 msw를 사용하여 모킹 #124

Merged
merged 2 commits into from
Jul 25, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions frontend/src/apis/endpoints.ts
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
const endPoint = {
postingReview: `${process.env.API_BASE_URL}/reviews`,
gettingDetailedReview: (reviewId: number, memberId: number) =>
`${process.env.API_BASE_URL}reviews/${reviewId}?memberId=${memberId}`,
gettingDataToWriteReview: (reviewerGroupId: number) => `${process.env.API_BASE_URL}reviews/write/${reviewerGroupId}`,
`${process.env.API_BASE_URL}/reviews/${reviewId}?memberId=${memberId}`,
gettingDataToWriteReview: (reviewerGroupId: number) => `${process.env.API_BASE_URL}/reviews/write/${reviewerGroupId}`,
gettingReviewList: (revieweeId: number, lastReviewId: number, memberId: number) =>
`${process.env.API_BASE_URL}/reviews?revieweeId=${revieweeId}&lastReviewId=${lastReviewId}&memberId=${memberId}`,
};
Expand Down
15 changes: 6 additions & 9 deletions frontend/src/apis/review.ts
Original file line number Diff line number Diff line change
Expand Up @@ -60,20 +60,17 @@ export const getReviewListApi = async ({
lastReviewId: number;
memberId: number;
}) => {
const response = await fetch(
`/api/reviews?revieweeId=${revieweeId}&lastReviewId=${lastReviewId}&memberId=${memberId}`,
{
method: 'GET',
headers: {
'Content-Type': 'application/json',
},
const response = await fetch(endPoint.gettingReviewList(revieweeId, lastReviewId, memberId), {
method: 'GET',
headers: {
'Content-Type': 'application/json',
},
);
});

if (!response.ok) {
throw new Error('리뷰 리스트를 불러오는 데 실패했습니다.');
}

console.log(response);
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

이 console.log는 뭔갸요?

const data = await response.json();
return data;
};
8 changes: 7 additions & 1 deletion frontend/src/mocks/handlers/review.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ import { http, HttpResponse } from 'msw';
import endPoint from '@/apis/endpoints';

import { DETAILED_REVIEW_MOCK_DATA } from '../mockData/detailedReviewMockData';
import { REVIEW_PREVIEW_LIST } from '../mockData/reviewPreviewList';
import { REVIEW_WRITING_DATA } from '../mockData/reviewWritingData';

const getDetailedReview = () =>
Expand All @@ -15,6 +16,11 @@ const getDataToWriteReview = () =>
return HttpResponse.json(REVIEW_WRITING_DATA);
});

const reviewHandler = [getDetailedReview(), getDataToWriteReview()];
const getReviewPreviewList = () =>
http.get(endPoint.gettingReviewList(1, 3, 1), async ({ request }) => {
return HttpResponse.json(REVIEW_PREVIEW_LIST);
});

const reviewHandler = [getDetailedReview(), getReviewPreviewList(), getDataToWriteReview()];

export default reviewHandler;
54 changes: 54 additions & 0 deletions frontend/src/mocks/mockData/reviewPreviewList.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,54 @@
import { ReviewPreview } from '@/types';

export const REVIEW_PREVIEW_LIST: { reviews: ReviewPreview[] } = {
reviews: [
{
id: 1,
isPublic: true,
reviewerGroup: {
id: 1,
name: '2024-review-me',
thumbnailUrl: '',
},
createdAt: '2024-07-24',
contentPreview: `물론 시중에 출간되어 있는 책들로 공부하는 것도 큰 장점이지만 더 깊은 공부를 하고 싶을 때 공식 문서를 확인해보는 것이 좋기 때문에, 저 개인적인 생각으로는 언어 공부를 아예 처음 입문하시는 분들은 한국에서 출간된 개발 서적으로 공부를 시작하시다가 모르는 부분이.....`,
keywords: [
{ id: 1, content: '친절해요' },
{ id: 2, content: '호감이에요' },
{ id: 3, content: '잘 먹어요' },
],
},
{
id: 2,
isPublic: false,
reviewerGroup: {
id: 2,
name: '2023-haru-study',
thumbnailUrl: '',
},
createdAt: '2023-08-29',
contentPreview: `하루스터디는 효율적인 공부 방법을 제공하는 학습 진행 도구 서비스입니다. 하루스터디는 목표 설정 단계, 학습 단계, 회고 단계 를 반복하는 학습 사이클을 통해 학습 효율을 끌어올립니다. 하루스터디를 사용하게 되면 '학습을 잘 하는 방법'에 대해서...
`,
keywords: [
{ id: 4, content: '시간 약속을 잘 지켜요' },
{ id: 5, content: '열정 넘쳐요' },
],
},
{
id: 3,
isPublic: true,
reviewerGroup: {
id: 3,
name: '2021-zzimkkong',
thumbnailUrl: '',
},
createdAt: '2021-08-01',
contentPreview: `공간을 한 눈에, 예약은 한 번에! 맞춤형 공간예약 서비스 제작 플랫폼 찜꽁입니다! 공간 제공자(관리자)는 에디터를 통해 공간을 생성할 수 있습니다! 생성한 공간은 링크를 통해 사용자에게 제공할 수 있으며, 사용자는 링크를 통해 간편하게 공간을 확인하고 예약을...`,
keywords: [
{ id: 6, content: '업무에 헌신적이에요' },
{ id: 7, content: '협업에 능숙해요' },
],
},
],
};
69 changes: 3 additions & 66 deletions frontend/src/pages/ReviewPreviewListPage/index.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -11,57 +11,6 @@ import * as S from './styles';
const USER_SEARCH_PLACE_HOLDER = '레포지토리명을 검색하세요.';
const options = ['최신순', '오래된순'];

const mockReviewPreviews: ReviewPreview[] = [
{
id: 1,
isPublic: true,
reviewerGroup: {
id: 1,
name: '2024-review-me',
thumbnailUrl: '',
},
createdAt: '2024-07-24',
contentPreview: `물론 시중에 출간되어 있는 책들로 공부하는 것도 큰 장점이지만 더 깊은 공부를 하고 싶을 때 공식 문서를 확인해보는 것이 좋기 때문에, 저 개인적인 생각으로는 언어 공부를 아예 처음 입문하시는 분들은 한국에서 출간된 개발 서적으로 공부를 시작하시다가 모르는 부분이.....`,
keywords: [
{ id: 1, content: '친절해요' },
{ id: 2, content: '호감이에요' },
{ id: 3, content: '잘 먹어요' },
],
},
{
id: 2,
isPublic: false,
reviewerGroup: {
id: 2,
name: '2023-haru-study',
thumbnailUrl: '',
},
createdAt: '2023-08-29',
contentPreview: `하루스터디는 효율적인 공부 방법을 제공하는 학습 진행 도구 서비스입니다. 하루스터디는 목표 설정 단계, 학습 단계, 회고 단계 를 반복하는 학습 사이클을 통해 학습 효율을 끌어올립니다. 하루스터디를 사용하게 되면 '학습을 잘 하는 방법'에 대해서...
`,
keywords: [
{ id: 4, content: '시간 약속을 잘 지켜요' },
{ id: 5, content: '열정 넘쳐요' },
],
},
{
id: 3,
isPublic: true,
reviewerGroup: {
id: 3,
name: '2021-zzimkkong',
thumbnailUrl: '',
},
createdAt: '2021-08-01',
contentPreview: `공간을 한 눈에, 예약은 한 번에! 맞춤형 공간예약 서비스 제작 플랫폼 찜꽁입니다! 공간 제공자(관리자)는 에디터를 통해 공간을 생성할 수 있습니다! 생성한 공간은 링크를 통해 사용자에게 제공할 수 있으며, 사용자는 링크를 통해 간편하게 공간을 확인하고 예약을...`,
keywords: [
{ id: 6, content: '업무에 헌신적이에요' },
{ id: 7, content: '협업에 능숙해요' },
],
},
];

const ReviewPreviewListPage = () => {
const [reviews, setReviews] = useState<ReviewPreview[]>([]);
const [loading, setLoading] = useState(true);
Expand All @@ -72,7 +21,7 @@ const ReviewPreviewListPage = () => {
useEffect(() => {
const fetchReviews = async () => {
try {
const data = await getReviewListApi({ revieweeId: 1, lastReviewId: 4, memberId: 4 });
const data = await getReviewListApi({ revieweeId: 1, lastReviewId: 3, memberId: 1 });
setReviews(data.reviews);
setLoading(false);
} catch (error) {
Expand All @@ -93,19 +42,7 @@ const ReviewPreviewListPage = () => {
<S.Layout>
<SearchSection onChange={() => {}} options={options} placeholder={USER_SEARCH_PLACE_HOLDER} />
<S.ReviewSection>
{mockReviewPreviews.map((item) => (
<div key={item.id} onClick={() => handleReviewClick(item.id)}>
<ReviewPreviewCard
key={item.id}
reviewerGroup={item.reviewerGroup}
createdAt={item.createdAt}
contentPreview={item.contentPreview}
keywords={item.keywords}
isPublic={item.isPublic}
/>
</div>
))}
{/* {loading && <p>로딩 중...</p>}
{loading && <p>로딩 중...</p>}
{error && <p>{error}</p>}
{!loading &&
!error &&
Expand All @@ -120,7 +57,7 @@ const ReviewPreviewListPage = () => {
isPublic={item.isPublic}
/>
</div>
))} */}
))}
</S.ReviewSection>
</S.Layout>
</>
Expand Down