public void UserService_Delete_Throws_When_Id_Empty()
        {
            CollectionMock
            .Setup(s => s.DeleteOne(It.IsAny <FilterDefinition <User> >(), CancellationToken.None))
            .Returns(new DeleteResult.Acknowledged(1));

            var target = CreateTarget(CollectionMock);

            Assert.Throws <ArgumentException>(() => target.Delete(""));
        }
        public void UserService_Delete_Is_Silent_When_Id_Not_Found()
        {
            var expectedId = "filip";

            CollectionMock
            .Setup(s => s.DeleteOne(It.IsAny <FilterDefinition <User> >(), CancellationToken.None))
            .Returns(new DeleteResult.Acknowledged(0));

            var target = CreateTarget(CollectionMock);

            Assert.False(target.Delete(expectedId));

            CollectionMock.Verify(s => s.DeleteOne(It.IsAny <FilterDefinition <User> >(), CancellationToken.None), Times.Once);
        }
        public void UserService_Delete()
        {
            var expectedId = "filip";

            CollectionMock
            .Setup(s => s.DeleteOne(It.IsAny <FilterDefinition <User> >(), CancellationToken.None))
            .Returns(new DeleteResult.Acknowledged(1));

            var target = CreateTarget(CollectionMock);

            target.Delete(expectedId);

            CollectionMock.Verify(s => s.DeleteOne(It.IsAny <FilterDefinition <User> >(), CancellationToken.None), Times.Once);
        }
        protected override void ConfigureMocks(ServiceCollection services)
        {
            // Override [Setup] above.
            FailingClientMock = new Mock <IMongoClient>();
            FailingClientMock
            .Setup(s => s.GetDatabase(It.IsAny <string>(), null))
            .Throws(new MongoClientException("Something bad happened"));

            LoggerMock       = new Mock <ILogger <ConfigureMongoDbIndexesService> >();
            IndexManagerMock = new Mock <IMongoIndexManager <User> >();

            CollectionMock
            .SetupGet(s => s.Indexes)
            .Returns(IndexManagerMock.Object);

            IndexManagerMock
            .Setup(s => s.CreateOneAsync(It.IsAny <CreateIndexModel <User> >(), null, CancellationToken.None))
            .Returns(Task.FromResult("OK"));
        }
        public async Task ConfigureMongoDbIndexesService_Executes_Task()
        {
            var   target = CreateTarget();
            var   task   = target.StartAsync(CancellationToken.None);
            await task;

            await Task.Delay(1000);

            Assert.IsTrue(task.IsCompleted);

            await target.StopAsync(CancellationToken.None);

            VerifyInformationWasLogged(LoggerMock);

            ClientMock.Verify(s => s.GetDatabase(It.IsAny <string>(), null), Times.Once);
            DatabaseMock.Verify(
                s => s.GetCollection <User>(nameof(User), null), Times.Once);
            CollectionMock.VerifyGet(s => s.Indexes, Times.Once);
            IndexManagerMock.Verify(
                s => s.CreateOneAsync(It.IsAny <CreateIndexModel <User> >(), null, CancellationToken.None),
                Times.Once);
        }