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

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


            _bookRepository
            .Setup(x =>
                   x.Relate <Person, InLibrary>(It.IsAny <Expression <Func <Book, bool> > >(), It.IsAny <Expression <Func <Person, bool> > >(), It.IsAny <InLibrary>()))
            .ReturnsAsync(true)
            .Callback <Expression <Func <Book, bool> >, Expression <Func <Person, bool> >, InLibrary>(
                (exp1, exp2, inLibrary) => { library.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, inLibrary) => { bookGenres.Add(genre1); }
                );

            SetupMockBookRepo(CreateBook());

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

            // Act
            var result = await bookController.AddBookToLibrary(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(library.Count == 1);
            Assert.True(library.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);
        }