Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- LoanTest.java
- ----------------------------------------------------------------------------
- @ExtendWith(MockitoExtension.class)
- class LoanTest {
- /* commit
- * CheckOverdueDate*
- */
- ILoan loan;
- int loanId;
- Date dueDate;
- @Test
- void CommitANonPendingLoan() {
- //Arrange
- //Act
- RuntimeException exception = loan.commit(loanId, dueDate);
- //Assert
- assertThrows(RuntimeException.class, exception);
- }
- ------------------------------------------------------------------------------------------------------------------------------------
- Loan.java
- ------------------------------------------------------------------------------------------------------------------------------------
- public class Loan implements Serializable, ILoan {
- private int loanId;
- private IBook book;
- private IPatron patron;
- private Date dueDate;
- private LoanState state;
- public Loan(IBook book, IPatron patron) {
- this.book = book;
- this.patron = patron;
- this.state = LoanState.PENDING;
- }
- @Override
- public void commit(int loanId, Date dueDate) {
- if (state != LoanState.PENDING) {
- throw new RuntimeException("Cannot commit a non PENDING loan");
- }
- this.loanId = loanId;
- this.dueDate = dueDate;
- this.state = LoanState.CURRENT;
- patron.takeOutLoan(this);
- book.borrowFromLibrary();
- }
- ---------------------------------------------------------------------------------------------------------------------
- ILoan.java
- ---------------------------------------------------------------------------------------------------------------------
- package library.entities;
- import java.util.Date;
- public interface ILoan {
- enum LoanState {
- PENDING, CURRENT, OVER_DUE, DISCHARGED
- };
- int getId();
- boolean checkOverDue(Date currentDate);
- boolean isOverDue();
- Date getDueDate();
- IPatron getPatron();
- IBook getBook();
- void commit(int loanId, Date dueDate);
- void discharge(boolean isDamaged);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement