public async Task should_fail_when_command_null()
        {
            var mockDbContext = new Mock <IDbContext>();
            var mockMediator  = new Mock <IMediator>();
            var mockValidator = new Mock <IValidator <RefreshServicesStatus> >();

            var sut = new RefreshServicesStatusHandler(mockDbContext.Object, mockMediator.Object, mockValidator.Object);
            await Assert.ThrowsAsync <ArgumentNullException>(() => sut.Handle(null));
        }
        public async Task should_publish_RefreshServiceStatus_command_for_each_service()
        {
            var services = new[] {
                new Mongo.Infrastructure.Entities.Service()
                {
                    Id        = System.Guid.NewGuid(),
                    Active    = true,
                    Name      = "lorem",
                    Endpoints = Enumerable.Empty <Mongo.Infrastructure.Entities.ServiceEndpoint>()
                },
                new Mongo.Infrastructure.Entities.Service()
                {
                    Id        = System.Guid.NewGuid(),
                    Active    = true,
                    Name      = "ipsum",
                    Endpoints = Enumerable.Empty <Mongo.Infrastructure.Entities.ServiceEndpoint>()
                }
            };
            var mockRepo = RepositoryUtils.MockRepository <Mongo.Infrastructure.Entities.Service>(services);

            var mockDbContext = new Mock <IDbContext>();

            mockDbContext.Setup(db => db.Services).Returns(mockRepo.Object);

            var mockMediator = new Mock <IMediator>();

            var validator = new NullValidator <RefreshServicesStatus>();

            var sut = new RefreshServicesStatusHandler(mockDbContext.Object, mockMediator.Object, validator);
            await sut.Handle(new RefreshServicesStatus(10));

            foreach (var service in services)
            {
                mockMediator.Verify(m => m.Publish(It.Is <RefreshServiceStatus>(r => r.ServiceId == service.Id), It.IsAny <System.Threading.CancellationToken>()), Times.Once());
            }
        }