public void IntegrationHandlesExceptionDuringIntegration() { var triggered = false; var trigger = GenerateRunOnceTrigger(() => triggered = true); var executionFactoryMock = new Mock <ITaskExecutionFactory>(MockBehavior.Strict); InitialiseExecutionContext(executionFactoryMock); var project = new ProjectStub("Test") { TaskExecutionFactory = executionFactoryMock.Object, OnLoadState = () => { }, OnSaveState = () => { }, Clock = new SystemClock(), OnIntegrate = ir => { throw new Exception(); } }; project.Triggers.Add(trigger); project.Start(); // Give the project time to start Thread.Sleep(100); project.Stop(); // Give the project time to stop Thread.Sleep(1000); Assert.IsTrue(triggered); Assert.IsNull(project.MainThreadException); Assert.AreEqual(IntegrationStatus.Error, project.PersistedState.LastIntegration.Status); }
public void StopCleansUpTriggers() { var cleaned = false; var trigger = new TriggerStub { OnCleanUp = () => cleaned = true, OnCheckAction = () => null }; var project = new ProjectStub("Test") { OnLoadState = () => { } }; project.Triggers.Add(trigger); project.Start(); // Give the project time to start Thread.Sleep(100); project.Stop(); // Give the project time to stop Thread.Sleep(1000); Assert.IsTrue(cleaned); Assert.IsNull(project.MainThreadException); }
public void StartFailsIfAlreadyStarted() { var project = new ProjectStub("Test") { OnLoadState = () => { } }; project.Start(); // Give the project time to start Thread.Sleep(100); Assert.Throws <InvalidOperationException>(project.Start); }
public void StartMessageStartsProject() { var started = false; var project = new ProjectStub { Name = "Test", OnLoadState = () => { }, OnStart = () => started = true }; var request = new Messages.Blank(); project.Start(request); Thread.Sleep(100); Assert.IsTrue(started); }
public void StartStartsTheProject() { var stateLoaded = false; var project = new ProjectStub("Test") { OnLoadState = () => stateLoaded = true }; project.Start(); // Give the project time to start Thread.Sleep(100); Assert.AreEqual(ProjectState.Running, project.State); Assert.IsTrue(stateLoaded); }
public void StopStopsAStartedProject() { var project = new ProjectStub("Test") { OnLoadState = () => { } }; project.Start(); // Give the project time to start Thread.Sleep(100); project.Stop(); // Give the project time to stop Thread.Sleep(1000); Assert.AreEqual(ProjectState.Stopped, project.State); Assert.IsNull(project.MainThreadException); }
public void StartInitialisesTriggers() { var initialised = false; var trigger = new TriggerStub { OnInitialise = () => initialised = true }; var project = new ProjectStub("Test") { OnLoadState = () => { } }; project.Triggers.Add(trigger); project.Start(); // Give the project time to start Thread.Sleep(100); Assert.IsTrue(initialised); }
public void IntegrationAsksHostAndContinuesOnAllowed() { var triggered = false; var trigger = GenerateRunOnceTrigger(() => triggered = true); var ran = false; var task = new TaskStub { OnRunAction = tc => { ran = true; return(null); } }; var hostMock = new Mock <ServerItem>(MockBehavior.Strict); hostMock.Setup(h => h.AskToIntegrate(It.IsAny <IntegrationContext>())); var executionFactoryMock = new Mock <ITaskExecutionFactory>(MockBehavior.Strict); InitialiseExecutionContext(executionFactoryMock); var project = new ProjectStub("Test", task) { Host = hostMock.Object, TaskExecutionFactory = executionFactoryMock.Object, OnLoadState = () => { }, OnSaveState = () => { }, Clock = new SystemClock() }; project.Triggers.Add(trigger); project.Start(); // Give the project time to start Thread.Sleep(100); project.Stop(); // Give the project time to stop Thread.Sleep(1000); Assert.IsTrue(triggered); Assert.IsTrue(ran); Assert.IsNull(project.MainThreadException); }
public void IntegrationStartsFromTrigger() { var triggered = false; var trigger = GenerateRunOnceTrigger(() => triggered = true); var ran = false; var task = new TaskStub { OnRunAction = tc => { ran = true; return(null); } }; var executionFactoryMock = new Mock <ITaskExecutionFactory>(MockBehavior.Strict); InitialiseExecutionContext(executionFactoryMock); var project = new ProjectStub("Test", task) { TaskExecutionFactory = executionFactoryMock.Object, OnLoadState = () => { }, OnSaveState = () => { }, Clock = new SystemClock() }; project.Triggers.Add(trigger); project.Start(); // Give the project time to start Thread.Sleep(100); project.Stop(); // Give the project time to stop Thread.Sleep(1000); Assert.IsTrue(triggered); Assert.IsTrue(ran); Assert.IsNull(project.MainThreadException); }