Ejemplo n.º 1
0
        public void DisposeSetsBookStateToDisposed()
        {
            var book = new Book("author", "title", "call number", 1);

            book.State = BookState.AVAILABLE;

            book.Dispose();

            Assert.Equal(BookState.DISPOSED, book.State);
        }
Ejemplo n.º 2
0
        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);
        }