diff --git a/src/test/com/bank/service/internal/DefaultDepositServiceTests.java b/src/test/com/bank/service/internal/DefaultDepositServiceTests.java index 2426f7b..84b2b6a 100644 --- a/src/test/com/bank/service/internal/DefaultDepositServiceTests.java +++ b/src/test/com/bank/service/internal/DefaultDepositServiceTests.java @@ -38,7 +38,7 @@ public void setUp() { } @Test - public void testDeposit() { + public void testDepositAddsAmountToInitialBalance() { double depositAmount = 100.00; depositService.setMinimumDepositAmount(5.00); try { @@ -49,7 +49,7 @@ public void testDeposit() { } @Test - public void testDepositBelowMinimumAmount() throws InvalidDepositAmountException { + public void testDepositBelowMinimumAmountThrowsExceptionAndLeaveCurrentBalance() throws InvalidDepositAmountException { double depositAmount = 4.99; depositService.setMinimumDepositAmount(5.00); try { diff --git a/src/test/com/bank/service/internal/DefaultTransferServiceTests.java b/src/test/com/bank/service/internal/DefaultTransferServiceTests.java index 846befc..cecb15d 100644 --- a/src/test/com/bank/service/internal/DefaultTransferServiceTests.java +++ b/src/test/com/bank/service/internal/DefaultTransferServiceTests.java @@ -35,21 +35,28 @@ public void setUp() { } @Test - public void testTransfer() throws InsufficientFundsException { + public void testTransferMoveMoneyFromOneAccountToAnother() throws InsufficientFundsException { double transferAmount = 100.00; - TransferReceipt receipt = transferService.transfer(transferAmount, A123_ID, C456_ID); - - assertThat(receipt.getTransferAmount(), equalTo(transferAmount)); - assertThat(receipt.getFinalSourceAccount().getBalance(), equalTo(A123_INITIAL_BAL - transferAmount)); - assertThat(receipt.getFinalDestinationAccount().getBalance(), equalTo(C456_INITIAL_BAL + transferAmount)); + transferService.transfer(transferAmount, A123_ID, C456_ID); assertThat(accountRepository.findById(A123_ID).getBalance(), equalTo(A123_INITIAL_BAL - transferAmount)); assertThat(accountRepository.findById(C456_ID).getBalance(), equalTo(C456_INITIAL_BAL + transferAmount)); } + + @Test + public void testTransferProduceCorrectReciept() throws InsufficientFundsException { + double transferAmount = 100.00; + + TransferReceipt receipt = transferService.transfer(transferAmount, A123_ID, C456_ID); + + assertThat(receipt.getTransferAmount(), equalTo(transferAmount)); + assertThat(receipt.getFinalSourceAccount().getBalance(), equalTo(A123_INITIAL_BAL - transferAmount)); + assertThat(receipt.getFinalDestinationAccount().getBalance(), equalTo(C456_INITIAL_BAL + transferAmount)); + } @Test - public void testInsufficientFunds() { + public void testTransferInsufficientFundsThrowsException() { double overage = 9.00; double transferAmount = A123_INITIAL_BAL + overage; @@ -60,7 +67,18 @@ public void testInsufficientFunds() { assertThat(ex.getTargetAccountId(), equalTo(A123_ID)); assertThat(ex.getOverage(), equalTo(overage)); } + } + + @Test + public void testTransferInsufficientFundsLeaveAmountOnBothAccountUnchanged() { + double overage = 9.00; + double transferAmount = A123_INITIAL_BAL + overage; + try { + transferService.transfer(transferAmount, A123_ID, C456_ID); + } catch (InsufficientFundsException ex) { + } + assertThat(accountRepository.findById(A123_ID).getBalance(), equalTo(A123_INITIAL_BAL)); assertThat(accountRepository.findById(C456_ID).getBalance(), equalTo(C456_INITIAL_BAL)); } diff --git a/src/test/com/bank/service/internal/VariableFeePolicyTests.java b/src/test/com/bank/service/internal/VariableFeePolicyTests.java index cf73ae9..ae0fbe2 100644 --- a/src/test/com/bank/service/internal/VariableFeePolicyTests.java +++ b/src/test/com/bank/service/internal/VariableFeePolicyTests.java @@ -3,20 +3,34 @@ import static org.hamcrest.CoreMatchers.equalTo; import static org.junit.Assert.assertThat; +import org.junit.Before; import org.junit.Test; import com.bank.service.internal.VariableFeePolicy; public class VariableFeePolicyTests { + private VariableFeePolicy feePolicy; + + @Before + public void before() { + feePolicy = new VariableFeePolicy(); + } + @Test - public void testVariableFee() { - VariableFeePolicy feePolicy = new VariableFeePolicy(); + public void testVariableFeeCalculateByPercentage() { feePolicy.setFeePercentage(1.00); // 1% fee feePolicy.setMinimumFee(1.00); // $1.00 assertThat(feePolicy.calculateFee(1000.00), equalTo(10.00)); assertThat(feePolicy.calculateFee(100.00), equalTo(1.00)); + } + + @Test + public void testVariableFeeCalculateRespectMinimumFee() { + feePolicy.setFeePercentage(1.00); // 1% fee + feePolicy.setMinimumFee(1.00); // $1.00 + assertThat(feePolicy.calculateFee(10.00), equalTo(1.00)); } }