RateDiscountPolicy 코드 추가
import hello.core.member.Grade;
import hello.core.member.Member;
public class RateDiscountPolicy implements DiscountPolicy {
private int discountPercent = 10;
@Override
public int discount(Member member, int price) {
if (member.getGrade() == Grade.VIP) {
return price * discountPercent / 100;
} else {
return 0;
}
}
}
(RateDiscountPolicy.java)
테스트 작성
import hello.core.member.Grade;
import hello.core.member.Member;
import org.junit.jupiter.api.DisplayName;
import org.junit.jupiter.api.Test;
import static org.assertj.core.api.Assertions.assertThat;
class RateDiscountPolicyTest {
RateDiscountPolicy discountPolicy = new RateDiscountPolicy();
@Test
@DisplayName("VIP는 10% 할인이 적용되어야 한다")
void vip_o() {
// given
Member member = new Member(1L, "memberVIP", Grade.VIP);
// when
int discount = discountPolicy.discount(member, 10000);
// then
assertThat(discount).isEqualTo(1000);
}
@Test
@DisplayName("VIP가 아니면 할인이 적용되지 않아야 한다")
void vip_x() {
// given
Member member = new Member(2L, "memberVIP", Grade.BASIC);
// when
int discount = discountPolicy.discount(member, 10000);
// then
assertThat(discount).isEqualTo(0);
}
}
(RateDiscountPolicyTest.java)
참조
'Spring' 카테고리의 다른 글
[스프링 핵심 원리 - 기본편] 관심사의 분리 (0) | 2021.09.09 |
---|---|
[스프링 핵심 원리 - 기본편] 새로운 할인 정책 적용과 문제점 (0) | 2021.09.09 |
[스프링 핵심 원리 - 기본편] 주문과 할인 도메인 실행과 테스트 (0) | 2021.09.08 |
[스프링 핵심 원리 - 기본편] 주문과 할인 도메인 개발 (0) | 2021.09.08 |
[스프링 핵심 원리 - 기본편] 주문과 할인 도메인 설계 (0) | 2021.09.08 |
댓글