public void start_not_running_service_during_service_check()
        {
            var service = Substitute.For<IApplicationService, IGuardedService>();
            var locator = Substitute.For<IContainer>();
            locator.ResolveAll<IApplicationService>().Returns(new[] { service });
            var settingsRepos = Substitute.For<ISettingsRepository>();
            settingsRepos.IsEnabled(Arg.Any<Type>()).Returns(true);

            var sut = new ApplicationServiceManager(locator);
            sut.Settings = settingsRepos;
            sut.CheckServices();

            service.Received().Start();
        }
        public void stop_running_service_if_its_been_disabled()
        {
            var service = Substitute.For<IApplicationService, IGuardedService>();
            var locator = Substitute.For<IContainer>();
            locator.ResolveAll<IApplicationService>().Returns(new[] { service });
            var settingsRepos = Substitute.For<ISettingsRepository>();
            settingsRepos.IsEnabled(Arg.Any<Type>()).Returns(false);
            ((IGuardedService)service).IsRunning.Returns(true);

            var sut = new ApplicationServiceManager(locator);
            sut.Settings = settingsRepos;
            sut.CheckServices();

            service.Received().Stop();
        }
        public void do_not_call_stop_on_closed_services_during_check()
        {
            var service = Substitute.For<IApplicationService, IGuardedService>();
            var okService = Substitute.For<IApplicationService, IGuardedService>();
            var locator = Substitute.For<IContainer>();
            var settingsRepos = Substitute.For<ISettingsRepository>();
            ((IGuardedService)service).IsRunning.Returns(false);
            locator.ResolveAll<IApplicationService>().Returns(new[] { service, okService });
            settingsRepos.IsEnabled(Arg.Any<Type>()).Returns(true);

            var sut = new ApplicationServiceManager(locator);
            sut.Settings = settingsRepos;
            sut.CheckServices();

            okService.DidNotReceive().Stop();
        }