public async Task GetBookForAuthorAsync_Test()
        {
            // Arrange
            var authorId = Guid.Parse("a1da1d8e-1988-4634-b538-a01709477b77");
            var bookId   = Guid.Parse("1325360c-8253-473a-a20f-55c269c20407");
            var mockRepo = new Mock <ILibraryRepository>();

            mockRepo.Setup(repo => repo.AuthorExistsAsync(authorId))
            .Returns(Task.FromResult(true));
            mockRepo.Setup(repo => repo.GetBookForAuthorAsync(authorId, bookId))
            .ReturnsAsync(
                GetTestAuthorsData().FirstOrDefault(a => a.Id == authorId)
                .Books.FirstOrDefault(b => b.Id == bookId)
                );

            var mapper     = new MapperConfiguration(cfg => cfg.AddProfile(new BookProfile())).CreateMapper();
            var controller = new BooksController(mockRepo.Object, mapper);

            // Act
            var result = await controller.GetBookForAuthorAsync(authorId, bookId);

            // Assert
            var actionResult  = Assert.IsType <ActionResult <BookDto> >(result);
            var okResult      = Assert.IsType <OkObjectResult>(actionResult.Result);
            var returnBookDto = Assert.IsType <BookDto>(okResult.Value);

            Assert.Equal(new Guid("1325360c-8253-473a-a20f-55c269c20407"), returnBookDto.Id);
            Assert.Equal("Easy Money", returnBookDto.Title);
            Assert.Equal("Easy Money or Snabba cash is a novel from 2006 by Jens Lapidus.", returnBookDto.Description);
        }
        public async Task GetBookForAuthorAsync_AuthorNotExist_Test()
        {
            // Arrange
            var authorId = Guid.NewGuid();
            var bookId   = Guid.NewGuid();
            var mockRepo = new Mock <ILibraryRepository>();

            mockRepo.Setup(repo => repo.AuthorExistsAsync(authorId))
            .ReturnsAsync(false);
            var mapper     = new MapperConfiguration(cfg => cfg.AddProfile(new BookProfile())).CreateMapper();
            var controller = new BooksController(mockRepo.Object, mapper);

            // Act
            var result = await controller.GetBookForAuthorAsync(authorId, bookId);

            // Assert
            var actionResult = Assert.IsType <ActionResult <BookDto> >(result);

            Assert.IsType <NotFoundResult>(actionResult.Result);
        }