public void DisposeSetsBookStateToDisposed() { var book = new Book("author", "title", "call number", 1); book.State = BookState.AVAILABLE; book.Dispose(); Assert.Equal(BookState.DISPOSED, book.State); }
public void DisposeThrowsException() { var book = new Book("author", "title", "call number", 1); // Set book to Available and should be able to dispose. book.State = BookState.AVAILABLE; book.Dispose(); Assert.Equal(BookState.DISPOSED, book.State); // Set book to Damaged and should be able to dispose. book.State = BookState.DAMAGED; book.Dispose(); Assert.Equal(BookState.DISPOSED, book.State); // Set book to Lost and should be able to dispose. book.State = BookState.LOST; book.Dispose(); Assert.Equal(BookState.DISPOSED, book.State); // Should throw for others. book.State = BookState.ON_LOAN; var ex1 = Assert.Throws<InvalidOperationException>(() => book.Dispose()); book.State = BookState.DISPOSED; var ex2 = Assert.Throws<InvalidOperationException>(() => book.Dispose()); Assert.Equal(ex1.Message, ex2.Message); Assert.Equal("Book cannot be disposed in its current state", ex2.Message); }
public void WhenBookIsLostAndDisposedShouldBeDisposed() { 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(7)); book.Borrow(loan); book.Lose(); book.Dispose(); Assert.Equal(BookState.DISPOSED, book.State); }