public void Return_Unborrowed_Throws_Exception()
        {
            // Arrange
            Book newBook = new Book()
            {
                Id = 0
            };

            System.Action returnUnborrowed = () => repo.Return(newBook, userAlice);

            // Asert
            returnUnborrowed.ShouldThrow <System.InvalidOperationException>()
            .WithMessage("You cannot return a book that has not been borrowed");
        }
        public void Borrow_Borrowed_Throws_Exception()
        {
            // Arrange
            Book newBook = new Book()
            {
                Id = 0
            };

            System.Action borrowBorrowed = () => repo.Borrow(newBook, userAlice);

            // Act
            repo.Borrow(newBook, userAlice);

            // Asert
            borrowBorrowed.ShouldThrow <System.InvalidOperationException>();
        }
        public void Return_Borrowed_By_Other_Throws_Exception()
        {
            // Arrange
            Book newBook = new Book()
            {
                Id = 0
            };
            User userBob = new User()
            {
                Name = "Bob"
            };

            System.Action returnBorrowedByOther = () => repo.Return(newBook, userBob);

            // Act
            repo.Borrow(newBook, userAlice);

            // Asert
            returnBorrowedByOther.ShouldThrow <System.InvalidOperationException>()
            .WithMessage("You cannot return a book that someone else borrowed");
        }