public void CanRemoveLoanFromMember() { var book = new Book("author", "title", "call number", 1); var member = new Member("first", "last", "phone", "email", 1); var loan = new Loan(book, member, DateTime.Today, DateTime.Today.AddDays(14)) { State = LoanState.CURRENT }; member.AddLoan(loan); // Make sure Member has Loan. Assert.Contains(loan, member.Loans); member.RemoveLoan(loan); // Make sure Loan has been removed from Member. Assert.DoesNotContain(loan, member.Loans); }
public void WhenBorrowingDisallowedAndLoanRemovedButHasOverdueLoanBorrowingDisallowed() { var member = new Member("firstName", "lastName", "contactPhone", "emailAddress", 1); var overdue = Substitute.For<ILoan>(); member.AddLoan(overdue); overdue.IsOverDue.Returns(true); while (!member.HasReachedLoanLimit) { var loan = Substitute.For<ILoan>(); member.AddLoan(loan); } // Borrowing state disallowed. Assert.Equal(MemberState.BORROWING_DISALLOWED, member.State); // Remove the first one that isn't the overdue mock. member.RemoveLoan(member.Loans.First(l => l != overdue)); Assert.Equal(MemberState.BORROWING_DISALLOWED, member.State); }
public void WhenBorrowingDisallowedAndLoanRemovedButHasFinesBorrowingDisallowed() { var member = new Member("firstName", "lastName", "contactPhone", "emailAddress", 1); while (!member.HasReachedLoanLimit) { var loan = Substitute.For<ILoan>(); member.AddLoan(loan); } member.AddFine(BookConstants.FINE_LIMIT + 1.00f); // Borrowing state disallowed. Assert.Equal(MemberState.BORROWING_DISALLOWED, member.State); // Remove the first one that isn't the overdue mock. member.RemoveLoan(member.Loans[0]); Assert.Equal(MemberState.BORROWING_DISALLOWED, member.State); }
public void WhenBorrowingDisallowedAndLoanRemovedBorrowingAllowed() { var member = new Member("firstName", "lastName", "contactPhone", "emailAddress", 1); while (!member.HasReachedLoanLimit) { var loan = Substitute.For<ILoan>(); member.AddLoan(loan); } // Borrowing state disallowed. Assert.Equal(MemberState.BORROWING_DISALLOWED, member.State); member.RemoveLoan(member.Loans[0]); Assert.Equal(MemberState.BORROWING_ALLOWED, member.State); }
public void WhenBorrowingAllowedAndRemovingLoanBorrowingAllowed() { var member = new Member("firstName", "lastName", "contactPhone", "emailAddress", 1); var loan = Substitute.For<ILoan>(); member.AddLoan(loan); Assert.False(member.HasReachedLoanLimit); Assert.Equal(MemberState.BORROWING_ALLOWED, member.State); member.RemoveLoan(loan); Assert.Equal(MemberState.BORROWING_ALLOWED, member.State); }
public void WhenBorrowingDisallowedAndLoanRemovedButHasOverdueLoanBorrowingDisallowed() { var book = new Book("author", "title", "call number", 1); var member = new Member("first", "last", "phone", "email", 1); var overdue = new Loan(book, member, DateTime.Today, DateTime.Today.AddDays(7)) { State = LoanState.CURRENT }; member.AddLoan(overdue); // Set it to overdue overdue.CheckOverDue(DateTime.Today.AddMonths(1)); while (!member.HasReachedLoanLimit) { var loan = new Loan(book, member, DateTime.Today, DateTime.Today.AddDays(7)) { State = LoanState.CURRENT }; member.AddLoan(loan); } // Borrowing state disallowed. Assert.Equal(MemberState.BORROWING_DISALLOWED, member.State); // Remove the first one that isn't the overdue mock. member.RemoveLoan(member.Loans.First(l => l != overdue)); Assert.Equal(MemberState.BORROWING_DISALLOWED, member.State); }
public void WhenBorrowingDisallowedAndLoanRemovedBorrowingAllowed() { var book = new Book("author", "title", "call number", 1); var member = new Member("first", "last", "phone", "email", 1); while (!member.HasReachedLoanLimit) { var loan = new Loan(book, member, DateTime.Today, DateTime.Today.AddDays(7)) { State = LoanState.CURRENT }; member.AddLoan(loan); } // Borrowing state disallowed. Assert.Equal(MemberState.BORROWING_DISALLOWED, member.State); member.RemoveLoan(member.Loans[0]); Assert.Equal(MemberState.BORROWING_ALLOWED, member.State); }
public void WhenBorrowingDisallowedAndLoanRemovedButHasFinesBorrowingDisallowed() { var book = new Book("author", "title", "call number", 1); var member = new Member("first", "last", "phone", "email", 1); while (!member.HasReachedLoanLimit) { var loan = new Loan(book, member, DateTime.Today, DateTime.Today.AddDays(7)) { State = LoanState.CURRENT }; member.AddLoan(loan); } member.AddFine(BookConstants.FINE_LIMIT + 1.00f); // Borrowing state disallowed. Assert.Equal(MemberState.BORROWING_DISALLOWED, member.State); // Remove the first one that isn't the overdue mock. member.RemoveLoan(member.Loans[0]); Assert.Equal(MemberState.BORROWING_DISALLOWED, member.State); }
public void WhenBorrowingAllowedAndRemovingLoanBorrowingAllowed() { var book = new Book("author", "title", "call number", 1); var member = new Member("first", "last", "phone", "email", 1); var loan = new Loan(book, member, DateTime.Today, DateTime.Today.AddDays(14)) { State = LoanState.CURRENT }; member.AddLoan(loan); Assert.False(member.HasReachedLoanLimit); Assert.Equal(MemberState.BORROWING_ALLOWED, member.State); member.RemoveLoan(loan); Assert.Equal(MemberState.BORROWING_ALLOWED, member.State); }
public void RemoveLoanThrowsArgumentExceptionIfLoanIsNotInCollection() { var book = new Book("author", "title", "call number", 1); var member = new Member("first", "last", "phone", "email", 1); var loan1 = new Loan(book, member, DateTime.Today, DateTime.Today.AddDays(14)) { State = LoanState.CURRENT }; var loan2 = new Loan(book, member, DateTime.Today, DateTime.Today.AddDays(14)) { State = LoanState.CURRENT }; member.AddLoan(loan1); var ex = Assert.Throws<ArgumentException>(() => member.RemoveLoan(loan2)); Assert.Equal("Loan was not found in member's loans", ex.Message); }
public void RemoveLoanThrowsArgumentNullExceptionIfLoanIsNull() { var member = new Member("test", "member", "phone", "email", 1); ILoan loan = null; var ex = Assert.Throws<ArgumentException>(() => member.RemoveLoan(loan)); Assert.Equal("Loan cannot be null", ex.Message); }
public void RemoveLoanThrowsArgumentExceptionIfLoanIsNotInCollection() { var member = new Member("test", "member", "phone", "email", 1); var loan1 = Substitute.For<ILoan>(); var loan2 = Substitute.For<ILoan>(); member.AddLoan(loan1); var ex = Assert.Throws<ArgumentException>(() => member.RemoveLoan(loan2)); Assert.Equal("Loan was not found in member's loans", ex.Message); }
public void CanRemoveLoanFromMember() { var member = new Member("test", "member", "phone", "email", 1); var loan = Substitute.For<ILoan>(); member.AddLoan(loan); // Make sure Member has Loan. Assert.Contains(loan, member.Loans); member.RemoveLoan(loan); // Make sure Loan has been removed from Member. Assert.DoesNotContain(loan, member.Loans); }