public void MongoGenericRepository_AddAllFindDelete_ShouldWork()
        {
            string databaseName = DatabaseName;
            var    provider     = new RealMongoDatabaseProvider(databaseName);
            var    repository   = new MongoGenericRepository <Book>(provider);

            var author = new Author("Patrick", "Rothfuss");
            var book   = new Book("How Old Holly Came To Be", "978-0-9847136-3-9", author);

            Console.WriteLine(book);

            repository.Add(book).Wait();

            var books = repository.Find(b => true).Result.ToList();

            Assert.IsNotNull(books, "Books should not be null.");
            Assert.AreEqual(1, books.Count, "Number of books in db should be 1.");

            var bookFromDb = books.FirstOrDefault();

            Assert.IsNotNull(bookFromDb, "First book in db should not be null.");
            Console.WriteLine(bookFromDb);
            Console.WriteLine(bookFromDb.Id);

            Assert.AreEqual(book.Title, bookFromDb.Title, "Title should match.");
            Assert.AreEqual(book.Isbn, bookFromDb.Isbn, "Isbn should match.");
            Assert.AreEqual(book.Author.FirstName, bookFromDb.Author.FirstName, "Author.FirstName should match.");
            Assert.AreEqual(book.Author.LastName, bookFromDb.Author.LastName, "Author.LastName should match.");

            repository.Delete(bookFromDb).Wait();

            var booksAfterDeletion = repository.Query?.ToList();

            Assert.IsFalse(booksAfterDeletion?.Count > 0, "Number of books after deletion should be 0.");
        }