• Post Reply Bookmark Topic Watch Topic
  • New Topic
programming forums Java Mobile Certification Databases Caching Books Engineering Micro Controllers OS Languages Paradigms IDEs Build Tools Frameworks Application Servers Open Source This Site Careers Other Pie Elite all forums
this forum made possible by our volunteer staff, including ...
Marshals:
  • Tim Cooke
  • Campbell Ritchie
  • paul wheaton
  • Ron McLeod
  • Devaka Cooray
Sheriffs:
  • Jeanne Boyarsky
  • Liutauras Vilda
  • Paul Clapham
Saloon Keepers:
  • Tim Holloway
  • Carey Brown
  • Piet Souris
Bartenders:

JUnit Testing Problem

 
Greenhorn
Posts: 3
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator
I am new to spring!!

I have got the source code of spring recipes book by gary mark.

In an application of bank I am trying to alter the Account class, AccountService interface and the AccountServiceImpl class to allow the setting of a credit limit on accounts and for withdrawals to be allowed up to that credit limit.

Plus I have to Alter the JUnit test in AccountServiceTests to test this new functionality.

How can I do this?

The original files are as under:

Account.java

package com.apress.springrecipes.bank;

public class Account {

private String accountNo;
private double balance;

public Account() {}

public Account(String accountNo, double balance) {
this.accountNo = accountNo;
this.balance = balance;
}

public String getAccountNo() {
return accountNo;
}

public double getBalance() {
return balance;
}

public void setAccountNo(String accountNo) {
this.accountNo = accountNo;
}

public void setBalance(double balance) {
this.balance = balance;
}

public boolean equals(Object obj) {
if (!(obj instanceof Account)) {
return false;
}
Account account = (Account) obj;
return account.accountNo.equals(accountNo) && account.balance == balance;
}
}






AccountService

package com.apress.springrecipes.bank;

public interface AccountService {

public void createAccount(String accountNo);
public void removeAccount(String accountNo);
public void deposit(String accountNo, double amount);
public void withdraw(String accountNo, double amount);
public double getBalance(String accountNo);
}



AccountServiceImpl

package com.apress.springrecipes.bank;

public class AccountServiceImpl implements AccountService {

private AccountDao accountDao;

public AccountServiceImpl(AccountDao accountDao) {
this.accountDao = accountDao;
}

public void createAccount(String accountNo) {
accountDao.createAccount(new Account(accountNo, 0));
}

public void removeAccount(String accountNo) {
Account account = accountDao.findAccount(accountNo);
accountDao.removeAccount(account);
}

public void deposit(String accountNo, double amount) {
Account account = accountDao.findAccount(accountNo);
account.setBalance(account.getBalance() + amount);
accountDao.updateAccount(account);
}

public void withdraw(String accountNo, double amount) {
Account account = accountDao.findAccount(accountNo);
if (account.getBalance() < amount) {
throw new InsufficientBalanceException();
}
account.setBalance(account.getBalance() - amount);
accountDao.updateAccount(account);
}

public double getBalance(String accountNo) {
return accountDao.findAccount(accountNo).getBalance();
}
}



AccountServiceTests

package com.apress.springrecipes.bank;

import static org.junit.Assert.*;

import org.junit.After;
import org.junit.Before;
import org.junit.Test;

public class AccountServiceTests {

private static final String TEST_ACCOUNT_NO = "1234";
private AccountService accountService;

@Before
public void init() {
accountService = new AccountServiceImpl(new InMemoryAccountDao());
accountService.createAccount(TEST_ACCOUNT_NO);
accountService.deposit(TEST_ACCOUNT_NO, 100);
}

@Test
public void deposit() {
accountService.deposit(TEST_ACCOUNT_NO, 50);
assertEquals(accountService.getBalance(TEST_ACCOUNT_NO), 150, 0);
}

@Test
public void withDraw() {
accountService.withdraw(TEST_ACCOUNT_NO, 50);
assertEquals(accountService.getBalance(TEST_ACCOUNT_NO), 50, 0);
}

@After
public void cleanup() {
accountService.removeAccount(TEST_ACCOUNT_NO);
}
}




Thanks!
 
Author
Posts: 12617
IntelliJ IDE Ruby
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator
Please UseCodeTags when posting code or configuration. Unformatted code and configuration is unnecessarily difficult to read. You can edit your post by using the button.
 
David Newton
Author
Posts: 12617
IntelliJ IDE Ruby
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator
I guess I'm not sure what the question is--how to check to see if they can withdraw a certain amount? How to write the tests (which should be written first)?

What precisely are you having problems with?
 
reply
    Bookmark Topic Watch Topic
  • New Topic