feat(channel-donation-calculate): 채널 후원 정산 조회 기능을 추가한다
This commit is contained in:
+43
@@ -0,0 +1,43 @@
|
||||
package kr.co.vividnext.sodalive.calculate.channelDonation
|
||||
|
||||
import org.junit.jupiter.api.Assertions.assertEquals
|
||||
import org.junit.jupiter.api.DisplayName
|
||||
import org.junit.jupiter.api.Test
|
||||
|
||||
class ChannelDonationSettlementCalculatorTest {
|
||||
@Test
|
||||
@DisplayName("정산 공식에 따라 금액을 계산한다")
|
||||
fun shouldCalculateSettlementAmountsWithExpectedFormula() {
|
||||
val result = ChannelDonationSettlementCalculator.calculate(totalCan = 100)
|
||||
|
||||
assertEquals(10_000, result.krw)
|
||||
assertEquals(660, result.fee)
|
||||
assertEquals(7_939, result.settlementAmount)
|
||||
assertEquals(262, result.withholdingTax)
|
||||
assertEquals(7_677, result.depositAmount)
|
||||
}
|
||||
|
||||
@Test
|
||||
@DisplayName("소수 계산은 단계별 반올림 규칙을 따른다")
|
||||
fun shouldRoundHalfUpOnDecimalResults() {
|
||||
val result = ChannelDonationSettlementCalculator.calculate(totalCan = 1)
|
||||
|
||||
assertEquals(100, result.krw)
|
||||
assertEquals(7, result.fee)
|
||||
assertEquals(79, result.settlementAmount)
|
||||
assertEquals(3, result.withholdingTax)
|
||||
assertEquals(76, result.depositAmount)
|
||||
}
|
||||
|
||||
@Test
|
||||
@DisplayName("총 캔 수가 0이면 모든 금액은 0이다")
|
||||
fun shouldReturnZeroWhenTotalCanIsZero() {
|
||||
val result = ChannelDonationSettlementCalculator.calculate(totalCan = 0)
|
||||
|
||||
assertEquals(0, result.krw)
|
||||
assertEquals(0, result.fee)
|
||||
assertEquals(0, result.settlementAmount)
|
||||
assertEquals(0, result.withholdingTax)
|
||||
assertEquals(0, result.depositAmount)
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user