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

[7팀 김영우] [Chapter 2-2] 디자인 패턴과 함수형 프로그래밍 #15

Open
wants to merge 43 commits into
base: main
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from 1 commit
Commits
Show all changes
43 commits
Select commit Hold shift + click to select a range
ae412d9
🎉리팩토링 시작
ywkim95 Jan 13, 2025
c27334e
➕eslint, prettier 의존성 설치
ywkim95 Jan 13, 2025
9216225
🔨prettier 스크립트 추가
ywkim95 Jan 13, 2025
11b42a5
🎨prettier 적용
ywkim95 Jan 13, 2025
9a91912
🔨eslint 스크립트 업데이트
ywkim95 Jan 13, 2025
ec81fda
➕테스트를 위한 jsdom 추가
ywkim95 Jan 13, 2025
0a32e6f
♻️useCoupon 리팩토링
ywkim95 Jan 13, 2025
e89c5ee
♻️ useCart, cart 리팩토링
ywkim95 Jan 13, 2025
791e703
♻️ CartItemCard로 분리
ywkim95 Jan 13, 2025
bd62825
♻️ ProductCard로 분리
ywkim95 Jan 13, 2025
b42785e
♻️ 계산과 UI로직 분리
ywkim95 Jan 13, 2025
c15de48
🚚 interface 이름 변경
ywkim95 Jan 13, 2025
38c860c
♻️ 계산과 UI로직 분리
ywkim95 Jan 13, 2025
ffacfab
🚧 useAdmin 분리 작업 진행
ywkim95 Jan 13, 2025
b4d7226
♻️ useAdmin 훅 리팩토링
ywkim95 Jan 14, 2025
47e805a
♻️ AdminPage 컴포넌트 리팩토링
ywkim95 Jan 14, 2025
120b25f
♻️ AdminPage 컴포넌트 리팩토링
ywkim95 Jan 14, 2025
8d2a6b8
♻️ AdminPage 컴포넌트 리팩토링
ywkim95 Jan 14, 2025
7d364ba
♻️ AdminPage 컴포넌트 리팩토링
ywkim95 Jan 14, 2025
a0440ce
♻️ AdminCoupon 컴포넌트 리팩토링
ywkim95 Jan 14, 2025
533f50b
♻️ AdminProductContent 컴포넌트 리팩토링
ywkim95 Jan 14, 2025
0decf96
♻️ AdminPage 리팩토링
ywkim95 Jan 14, 2025
d86aba3
🎨 변수 및 함수명 컨벤션 수정
ywkim95 Jan 16, 2025
166daff
👷 CI 테스트 경로 에러 수정
ywkim95 Jan 16, 2025
83e0e7a
🚚 컴포넌트 폴더 경로 분리
ywkim95 Jan 16, 2025
94bc7b0
♻️ 커스텀 훅을 통한 관심사 분리
ywkim95 Jan 16, 2025
b1f32b0
♻️ 관리자 커스텀 훅 계산 함수 분리
ywkim95 Jan 16, 2025
1ecb760
🌱 constant 파일 추가 및 적용
ywkim95 Jan 16, 2025
4d5d330
♻️ 초기값 업데이트
ywkim95 Jan 16, 2025
634ecf7
♻️ 계산 함수 분리
ywkim95 Jan 16, 2025
a577dd5
♻️ 내부 로직 분리를 통한 가독성 향상
ywkim95 Jan 16, 2025
1f84d5f
🚚 커스텀 훅 명칭 변경
ywkim95 Jan 16, 2025
002d609
fixup! 🚚 커스텀 훅 명칭 변경
ywkim95 Jan 16, 2025
cb3055a
✅ 커스텀 훅 테스트 완료
ywkim95 Jan 16, 2025
1eead59
✅ 계산 함수 테스트 완료
ywkim95 Jan 16, 2025
9e72888
✅ 로컬스토리지 적용
ywkim95 Jan 16, 2025
f3ea06e
🔥 의미없는 주석 제거
ywkim95 Jan 16, 2025
6f33dfc
➕ msw 설치 및 initialize 진행
ywkim95 Jan 16, 2025
20f289f
✨ api 테스트를 위한 셋업 및 mock api 추가
ywkim95 Jan 16, 2025
83a9bcd
✅ api-mock 테스트 코드 작성 및 통과
ywkim95 Jan 16, 2025
adf5c53
🔨 api-mock 테스트 스크립트 추가
ywkim95 Jan 16, 2025
a411c92
👷 ci에서 api-mock까지 테스트하도록 변경
ywkim95 Jan 17, 2025
cafdd13
Merge branch 'main' into main
ywkim95 Jan 17, 2025
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
Prev Previous commit
Next Next commit
🎨prettier 적용
  • Loading branch information
ywkim95 committed Jan 13, 2025
commit 11b42a54454211299bbe9495513299f40a266649
1 change: 0 additions & 1 deletion .github/pull_request_template.md
Original file line number Diff line number Diff line change
Expand Up @@ -53,4 +53,3 @@
- MVC 패턴을 따르려고 했는데, 제가 구현한 구조가 MVC 원칙에 맞게 잘 구성되었는지 검토해주시고, 보완할 부분을 제안해주실 수 있을까요?
- 컴포넌트 간의 의존성이 높아져서 테스트하기 어려운 상황입니다. 의존성을 낮추고 테스트 가능성을 높이는 구조 개선 방안이 있을까요?
-->

2 changes: 1 addition & 1 deletion .prettierrc
Original file line number Diff line number Diff line change
Expand Up @@ -9,4 +9,4 @@
"arrowParens": "always",
"printWidth": 100,
"endOfLine": "auto"
}
}
47 changes: 27 additions & 20 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,35 +1,40 @@
# 항해플러스 5주차 과제 - 디자인 패턴과 함수형 프로그래밍

## 1. 기본 과제

### 요구사항

1. 장바구니 페이지 요구사항
- 상품 목록
- 상품명, 가격, 재고 수량 등을 표시
- 각 상품의 할인 정보 표시
- 재고가 없는 경우 품절 표시가 되며 장바구니 추가가 불가능
- 상품명, 가격, 재고 수량 등을 표시
- 각 상품의 할인 정보 표시
- 재고가 없는 경우 품절 표시가 되며 장바구니 추가가 불가능
- 장바구니
- 장바구니 내 상품 수량 조절 가능
- 각 상품의 이름, 가격, 수량과 적용된 할인율을 표시
- 적용된 할인율 표시 (예: "10% 할인 적용")
- 장바구니 내 모든 상품의 총액을 계산해야
- 장바구니 내 상품 수량 조절 가능
- 각 상품의 이름, 가격, 수량과 적용된 할인율을 표시
- 적용된 할인율 표시 (예: "10% 할인 적용")
- 장바구니 내 모든 상품의 총액을 계산해야
- 쿠폰 할인
- 할인 쿠폰을 선택하면 적용하면 최종 결제 금액에 할인정보가 반영
- 할인 쿠폰을 선택하면 적용하면 최종 결제 금액에 할인정보가 반영
- 주문요약
- 할인 전 총 금액
- 총 할인 금액
- 최종 결제 금액
- 할인 전 총 금액
- 총 할인 금액
- 최종 결제 금액
2. 관리자 페이지 요구사항
- 상품 관리
- 상품 정보 (상품명, 가격, 재고, 할인율) 수정 가능
- 새로운 상품 추가 가능
- 상품 제거 가능
- 상품 관리
- 상품 정보 (상품명, 가격, 재고, 할인율) 수정 가능
- 새로운 상품 추가 가능
- 상품 제거 가능
- 할인 관리
- 상품별 할인 정보 추가/수정/삭제 가능
- 할인 조건 설정 (구매 수량에 따른 할인율)
- 상품별 할인 정보 추가/수정/삭제 가능
- 할인 조건 설정 (구매 수량에 따른 할인율)
- 쿠폰 관리
- 전체 상품에 적용 가능한 쿠폰 생성
- 쿠폰 정보 입력 (이름, 코드, 할인 유형, 할인 값)
- 할인 유형은 금액 또는 비율로 설정 가능
- 전체 상품에 적용 가능한 쿠폰 생성
- 쿠폰 정보 입력 (이름, 코드, 할인 유형, 할인 값)
- 할인 유형은 금액 또는 비율로 설정 가능

### 코드 개선 요구사항

1. hook 작성
- useCart
- useCoupon
Expand All @@ -39,7 +44,9 @@
- getMaxApplicableDiscount
- calculateCartTotal
- updateCartItemQuantity

### 테스트 코드 통과하기

![img.png](public/img.png)

## 2. 심화 과제
20 changes: 10 additions & 10 deletions index.origin.html
Original file line number Diff line number Diff line change
@@ -1,13 +1,13 @@
<!doctype html>
<html lang="ko">
<head>
<meta charset="UTF-8"/>
<meta name="viewport" content="width=device-width, initial-scale=1.0"/>
<title>장바구니로 학습하는 디자인패턴</title>
<script src="https://cdn.tailwindcss.com"></script>
</head>
<body class="bg-gray-100 p-8">
<div id="root"></div>
<script type="module" src="/src/origin/main.tsx"></script>
</body>
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>장바구니로 학습하는 디자인패턴</title>
<script src="https://cdn.tailwindcss.com"></script>
</head>
<body class="bg-gray-100 p-8">
<div id="root"></div>
<script type="module" src="/src/origin/main.tsx"></script>
</body>
</html>
20 changes: 10 additions & 10 deletions index.refactoring.html
Original file line number Diff line number Diff line change
@@ -1,13 +1,13 @@
<!doctype html>
<html lang="ko">
<head>
<meta charset="UTF-8"/>
<meta name="viewport" content="width=device-width, initial-scale=1.0"/>
<title>장바구니로 학습하는 디자인패턴</title>
<script src="https://cdn.tailwindcss.com"></script>
</head>
<body class="bg-gray-100 p-8">
<div id="root"></div>
<script type="module" src="/src/refactoring/main.tsx"></script>
</body>
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>장바구니로 학습하는 디자인패턴</title>
<script src="https://cdn.tailwindcss.com"></script>
</head>
<body class="bg-gray-100 p-8">
<div id="root"></div>
<script type="module" src="/src/refactoring/main.tsx"></script>
</body>
</html>
Loading