@Test(expected = RuntimeException.class) public void testLoansConfirmedWrongState() { // Essentially, loansConfirmed cannot be called before it is in state // CONFIRMING_LOANS so simply call loansConfirmed before anything else. assertTrue(!controlClass_.getState().equals(EBorrowState.CONFIRMING_LOANS)); controlClass_.loansConfirmed(); }
@Test public void testInitialise() { // A quick test of the initialise method. We know that if the method // call worked successfully that the state will be INITIALIZED. controlClass_.initialise(); assertTrue(controlClass_.getState().equals(EBorrowState.INITIALIZED)); }
@Test public void testCardSwipedDoesNotExist() { // Test to see that passing in an ID for a non-existent member does not // lead to a change in state. State should remain INITIALIZED. controlClass_.initialise(); controlClass_.cardSwiped(10); // Member ID = 10, but doesn't exist. assertTrue(memberDao_.getMemberByID(10) == null); assertEquals(EBorrowState.INITIALIZED, controlClass_.getState()); }
@Test public void testCardSwipedUnrestricted() { // We will test swipe card with a member who exists and is not restricted. // This test will be with a 'clean' member (no overdue loans or fines, etc). // The state should then become SCANNING_BOOKS. controlClass_.initialise(); controlClass_.cardSwiped(1); // Member ID = 1. assertEquals(EBorrowState.SCANNING_BOOKS, controlClass_.getState()); }
@Test public void testCardSwipedRestricted3() { // We will test swipe card with a member who exists but is restricted. // This test will be with a member who has reached the fine limit. // The state should still then become BORROWING_RESTRICTED. controlClass_.initialise(); controlClass_.cardSwiped(3); // Member ID = 3. assertTrue(memberDao_.getMemberByID(3).hasReachedFineLimit()); assertEquals(EBorrowState.BORROWING_RESTRICTED, controlClass_.getState()); }
@Test public void testCardSwipedRestricted() { // We will test swipe card with a member who exists but is restricted. // This test will be with a member who has overdue loans. // The state should still then become BORROWING_RESTRICTED. controlClass_.initialise(); controlClass_.cardSwiped(2); // Member ID = 2. assertTrue(memberDao_.getMemberByID(2).hasOverDueLoans()); assertEquals(EBorrowState.BORROWING_RESTRICTED, controlClass_.getState()); }
@Test public void testCardSwipedUnrestricted3() { // We will test swipe card with a member who exists and is not restricted. // This test will be with a member who has loans, but not overdue. // The state should still then become SCANNING_BOOKS. controlClass_.initialise(); controlClass_.cardSwiped(6); // Member ID = 6. assertTrue(loanDao_.findLoansByBorrower(memberDao_.getMemberByID(6)).size() > 0); assertEquals(EBorrowState.SCANNING_BOOKS, controlClass_.getState()); }
@Test public void testCardSwipedUnrestricted2() { // We will test swipe card with a member who exists and is not restricted. // This test will be with a member who has fines payable. // The state should still then become SCANNING_BOOKS. controlClass_.initialise(); controlClass_.cardSwiped(5); // Member ID = 5. assertTrue(memberDao_.getMemberByID(5).hasFinesPayable()); assertEquals(EBorrowState.SCANNING_BOOKS, controlClass_.getState()); }
@Test public void testLoansConfirmedOneBookBorrowed() { // Initialise, swipe card, scan book, scans complete, loansConfirmed, // then it should pass and be in the desired state. For this one test, // we will ensure that it is in the desired states as it moves through. controlClass_.initialise(); controlClass_.cardSwiped(1); // Member ID = 1. assertEquals(EBorrowState.SCANNING_BOOKS, controlClass_.getState()); controlClass_.bookScanned(10); // An available book. assertEquals(EBorrowState.SCANNING_BOOKS, controlClass_.getState()); controlClass_.scansCompleted(); assertEquals(EBorrowState.CONFIRMING_LOANS, controlClass_.getState()); controlClass_.loansConfirmed(); assertEquals(EBorrowState.COMPLETED, controlClass_.getState()); }
@Test public void testLoansConfirmedLoanListCreated() { // We will set up a loan with a member who has no outstanding loans and // then check that the loan was correctly confirmed/committed. controlClass_.initialise(); controlClass_.cardSwiped(1); // Member ID = 1. controlClass_.bookScanned(10); // An available book. controlClass_.scansCompleted(); controlClass_.loansConfirmed(); List<ILoan> loanList = loanDao_.listLoans(); assertEquals(EBorrowState.COMPLETED, controlClass_.getState()); // We know from the setUpTestData method that there are 9 loans, so now // that we have committed this most recent loan, there should be 10. assertEquals(10, loanList.size()); }
@Before public void setUp() throws Exception { bookDao_ = new BookDAO(new BookHelper()); loanDao_ = new LoanDAO(new LoanHelper()); memberDao_ = new MemberDAO(new MemberHelper()); mockReader_ = mock(CardReader.class); mockScanner_ = mock(Scanner.class); mockPrinter_ = mock(Printer.class); mockDisplay_ = mock(Display.class); mockUi_ = mock(BorrowUC_UI.class); controlClass_ = new BorrowUC_CTL( mockReader_, mockScanner_, mockPrinter_, mockDisplay_, bookDao_, loanDao_, memberDao_); controlClass_.injectUi(mockUi_); // Call setupTestData to give us some data to test with in the same // way as it was done in Main.java setupTestData(); }
@Test(expected = RuntimeException.class) public void testCardSwipedWrongState() { // If we call cardSwiped before initialise, an exception should be thrown. controlClass_.cardSwiped(1); }