public void RepairSetsBookStateToAvailable()
        {
            var book = new Book("author", "title", "call number", 1);

            // Must be set to Damaged to be repaired.
            book.State = BookState.DAMAGED;

            book.Repair();

            Assert.Equal(BookState.AVAILABLE, book.State);
        }
        public void RepairThrowsExceptionIfBookIsNotDamaged()
        {
            var book = new Book("author", "title", "call number", 1);

            book.State = BookState.ON_LOAN;

            var ex = Assert.Throws<InvalidOperationException>(() => book.Repair());

            Assert.Equal("Book is not damaged so cannot be repaired", ex.Message);
        }
        public void WhenBookIsDamagedAndRepairedShouldBeAvailable()
        {
            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.ReturnBook(true);

            book.Repair();

            Assert.Equal(BookState.AVAILABLE, book.State);
        }