public async Task DeleteWithIdAsyncTest_ValidId_HappyPath()
        {
            //arrange
            _access.WithDeleteWithIdResult(true);

            _sut = new WishlistRepository(_access.Object, _mapper.Object);

            //act
            var result = await _sut.DeleteAsync(WishlistBookTestUtils.GenerateValidWishlistBook().Id);

            //assert
            Assert.IsTrue(result);
            _access.Verify(m => m.DeleteWithIdAsync(It.IsAny <int>()), Times.Once);
        }
        public async Task InsertOneAsyncTest_NullWishlistBookMap_ThrowsNullReferenceException()
        {
            //arrange
            _mapper.WithMap(null);
            _access.WithInsertResult(true);

            _sut = new WishlistRepository(_access.Object, _mapper.Object);

            //act
            var result = await _sut.InsertAsync(WishlistBookTestUtils.GenerateInvalidWishlistBook());

            //assert
            Assert.IsFalse(result);
            _access.Verify(m => m.InsertOneAsync(It.IsAny <WishlistMap>()), Times.Never);
        }
        public async Task InsertOneAsyncTest_ValidWishlistBook_Passes()
        {
            //arrange
            _mapper.WithMap(WishlistMapTestUtils.GenerateValidWishlistBookMap());
            _access.WithInsertResult(true);

            _sut = new WishlistRepository(_access.Object, _mapper.Object);

            //act
            var result = await _sut.InsertAsync(WishlistBookTestUtils.GenerateValidWishlistBook());

            //assert
            Assert.IsTrue(result);
            _access.Verify(m => m.InsertOneAsync(It.IsAny <WishlistMap>()), Times.Once);
        }
        public async Task DeleteAsyncTest_NegativeIdWishlistBook_ThrowsException()
        {
            //arrange
            var book = WishlistBookTestUtils.GenerateValidWishlistBook();

            book.Id = -4;

            _access.WithDeleteWithIdResult(true);
            _sut = new WishlistRepository(_access.Object, _mapper.Object);

            //act
            var result = await _sut.DeleteAsync(book);

            //assert
            Assert.IsFalse(result);
            _access.Verify(m => m.DeleteWithIdAsync(It.IsAny <int>()), Times.Never);
        }