https://agilemanifesto.org/iso/ko/manifesto.html
// RateDiscountPolicy 클래스 선언
public class RateDiscountPolicy implements DiscountPolicy {
// 할인율을 나타내는 변수 선언 및 초기화
private int discountPercent = 10;
// DiscountPolicy 인터페이스의 discount 메서드 구현
@Override
public int discount(Member member, int price) {
// 만약 회원 등급이 VIP일 경우
if(member.getGrade() == Grade.VIP) {
// 할인된 가격을 계산하여 반환
return price * discountPercent / 100;
} else {
// VIP가 아닌 경우 할인 없음을 반환
return 0;
}
}
}
// RateDiscountPolicyTest 클래스 선언
class RateDiscountPolicyTest {
// 테스트 대상인 RateDiscountPolicy 객체 생성
RateDiscountPolicy discountPolicy = new RateDiscountPolicy();
// VIP 회원에게 할인이 올바르게 적용되는지 테스트하는 메서드
@Test
@DisplayName("VIP는 10% 할인이 적용되어야 한다.")
void vip_o(){
//given
// VIP 회원 객체 생성
Member member = new Member(1L, "memberVIP", Grade.VIP);
//when
// 할인 계산
int discount = discountPolicy.discount(member, 10000);
//then
// 할인이 올바르게 적용되었는지 검증
assertThat(discount).isEqualTo(1000);
}
// VIP가 아닌 회원에게 할인이 적용되지 않는지 테스트하는 메서드
@Test
@DisplayName("VIP가 아니면 할인이 적용되지 않아야 한다.")
void vip_x(){
//given
// 일반 회원 객체 생성
Member member = new Member(2L, "memberBASIC", Grade.BASIC);
//when
// 할인 계산
int discount = discountPolicy.discount(member, 10000);
//then
// 할인이 적용되지 않았는지 검증
assertThat(discount).isEqualTo(0);
}
}
'SPRING > Spring' 카테고리의 다른 글
[스프링| 스프링 핵심 원리 | 기본편 | 스프링 핵심 원리 이해2 - 객체 지향 원리 적용]관심사의 분리 (0) | 2024.05.07 |
---|---|
[스프링| 스프링 핵심 원리 | 기본편 | 스프링 핵심 원리 이해2 - 객체 지향 원리 적용]새로운 할인 정책 적용과 문제점 (0) | 2024.05.06 |
[스프링| 스프링 핵심 원리 | 기본편 | 스프링 핵심 원리 이해1 - 예제 만들기]주문과 할인 도메인 실행과 테스트 (1) | 2024.05.02 |
[스프링| 스프링 핵심 원리 | 기본편 | 스프링 핵심 원리 이해1 - 예제 만들기]주문과 할인 도메인 개발 (0) | 2024.05.02 |
[스프링| 스프링 핵심 원리 | 기본편 | 스프링 핵심 원리 이해1 - 예제 만들기] 주문과 할인 도메인 설계 (0) | 2024.05.02 |