@Test
  public void testCreateReward() throws SQLException {
    Dining dining = Dining.createDining("100.00", "1234123412341234", "0123456789");

    Account account = new Account("1", "Keith and Keri Donald");
    account.setEntityId(0L);
    account.addBeneficiary("Annabelle", Percentage.valueOf("50%"));
    account.addBeneficiary("Corgan", Percentage.valueOf("50%"));

    AccountContribution contribution = account.makeContribution(MonetaryAmount.valueOf("8.00"));
    RewardConfirmation confirmation = repository.confirmReward(contribution, dining);
    assertNotNull("confirmation should not be null", confirmation);
    assertNotNull("confirmation number should not be null", confirmation.getConfirmationNumber());
    assertEquals("wrong contribution object", contribution, confirmation.getAccountContribution());
    verifyRewardInserted(confirmation, dining);
  }
 /**
  * Maps the beneficiary columns in a single row to an AllocatedBeneficiary object.
  *
  * @param rs the result set with its cursor positioned at the current row
  * @return an allocated beneficiary
  * @throws SQLException an exception occurred extracting data from the result set
  */
 private Beneficiary mapBeneficiary(ResultSet rs) throws SQLException {
   String name = rs.getString("BENEFICIARY_NAME");
   MonetaryAmount savings = MonetaryAmount.valueOf(rs.getString("BENEFICIARY_SAVINGS"));
   Percentage allocationPercentage =
       Percentage.valueOf(rs.getString("BENEFICIARY_ALLOCATION_PERCENTAGE"));
   return new Beneficiary(name, allocationPercentage, savings);
 }
  public void testFindByCreditCard() {
    Account account = repository.findByCreditCard("1234123412341234");
    // assert the returned account contains what you expect given the state of the database
    // and the Account Hibernate mapping configuration
    assertNotNull("account should never be null", account);
    assertEquals("wrong entity id", Long.valueOf(0), account.getEntityId());
    assertEquals("wrong account number", "123456789", account.getNumber());
    assertEquals("wrong name", "Keith and Keri Donald", account.getName());
    assertEquals("wrong beneficiary collection size", 2, account.getBeneficiaries().size());

    Beneficiary b1 = account.getBeneficiary("Annabelle");
    assertNotNull("Annabelle should be a beneficiary", b1);
    assertEquals("wrong savings", MonetaryAmount.valueOf("0.00"), b1.getSavings());
    assertEquals(
        "wrong allocation percentage", Percentage.valueOf("50%"), b1.getAllocationPercentage());

    Beneficiary b2 = account.getBeneficiary("Corgan");
    assertNotNull("Corgan should be a beneficiary", b2);
    assertEquals("wrong savings", MonetaryAmount.valueOf("0.00"), b2.getSavings());
    assertEquals(
        "wrong allocation percentage", Percentage.valueOf("50%"), b2.getAllocationPercentage());
  }
 public StubRestaurantRepository() {
   Restaurant restaurant = new Restaurant("1234567890", "Apple Bees");
   restaurant.setBenefitPercentage(Percentage.valueOf("8%"));
   restaurant.setBenefitAvailabilityPolicy(new AlwaysReturnsTrue());
   restaurantsByMerchantNumber.put(restaurant.getNumber(), restaurant);
 }