package rewards.internal.account; import junit.framework.TestCase; import rewards.AccountContribution; import common.money.MonetaryAmount; import common.money.Percentage; /** * Unit tests for the Account class that verify Account behavior works in isolation. */ public class AccountTest extends TestCase { private Account account = new Account("1", "Keith and Keri Donald"); public void testAccountIsValid() { // setup account with a valid set of beneficiaries to prepare for testing account.addBeneficiary("Annabelle", Percentage.valueOf("50%")); account.addBeneficiary("Corgan", Percentage.valueOf("50%")); assertTrue(account.isValid()); } public void testAccountIsInvalidWithNoBeneficiaries() { assertFalse(account.isValid()); } public void testAccountIsInvalidWhenBeneficiaryAllocationsAreOver100() { account.addBeneficiary("Annabelle", Percentage.valueOf("50%")); account.addBeneficiary("Corgan", Percentage.valueOf("100%")); assertFalse(account.isValid()); } public void testAccountIsInvalidWhenBeneficiaryAllocationsAreUnder100() { account.addBeneficiary("Annabelle", Percentage.valueOf("50%")); account.addBeneficiary("Corgan", Percentage.valueOf("25%")); assertFalse(account.isValid()); } public void testMakeContribution() { account.addBeneficiary("Annabelle", Percentage.valueOf("50%")); account.addBeneficiary("Corgan", Percentage.valueOf("50%")); AccountContribution contribution = account.makeContribution(MonetaryAmount.valueOf("100.00")); assertEquals(contribution.getAmount(), MonetaryAmount.valueOf("100.00")); assertEquals(MonetaryAmount.valueOf("50.00"), contribution.getDistribution("Annabelle").getAmount()); assertEquals(MonetaryAmount.valueOf("50.00"), contribution.getDistribution("Corgan").getAmount()); } }