public async void AddNewBooktoWishListRoute_Test()
        {
            // Arrange
            var genre1  = CreateGenre();
            var newBook = CreateBook(new List <Genre>()
            {
                genre1
            });
            var person = CreatePerson();

            var wishList   = new List <Book>();
            var bookGenres = new List <Genre>();


            _bookRepository
            .Setup(x =>
                   x.Relate <Person, WishList>(It.IsAny <Expression <Func <Book, bool> > >(), It.IsAny <Expression <Func <Person, bool> > >(), It.IsAny <WishList>()))
            .ReturnsAsync(true)
            .Callback <Expression <Func <Book, bool> >, Expression <Func <Person, bool> >, WishList>(
                (exp1, exp2, WishList) => { wishList.Add(newBook); }
                );

            _genreRepository
            .Setup(x =>
                   x.GetRelated <Book, InGenre>(It.IsAny <Expression <Func <Genre, bool> > >(), It.IsAny <Expression <Func <Book, bool> > >(), It.IsAny <InGenre>()))
            .ReturnsAsync(new List <Book>());

            _genreRepository
            .Setup(x =>
                   x.Relate <Book, InGenre>(It.IsAny <Expression <Func <Genre, bool> > >(), It.IsAny <Expression <Func <Book, bool> > >(), It.IsAny <InGenre>()))
            .ReturnsAsync(true)
            .Callback <Expression <Func <Genre, bool> >, Expression <Func <Book, bool> >, InGenre>(
                (exp1, exp2, WishList) => { bookGenres.Add(genre1); }
                );

            SetupMockBookRepo(CreateBook());

            var bookController = new BookController(_bookRepository.Object, _genreRepository.Object, _mapper);

            // Act
            var result = await bookController.AddBooksToWishList(person.Name, newBook);

            var okResult = result as OkResult;

            // Assert
            Assert.True(okResult != null);
            Assert.Equal(200, okResult.StatusCode);

            // Verify Correct functions were called / correct callbacks were performed
            Assert.True(wishList.Count == 1);
            Assert.True(wishList.Where(b => b.Title == newBook.Title).ToList().Count == 1);

            Assert.True(bookGenres.Count == 1);
            Assert.True(bookGenres.Where(b => b.Description == genre1.Description).ToList().Count == 1);
        }