public void SettingProjectSetsChildrenProjects()
 {
     var project = new Core.Project();
     var child = new TriggerStub();
     new Multiple(child) { Project = project };
     Assert.AreSame(project, child.Project);
 }
 public void NextTimeReturnsLowestValidTime()
 {
     var child1 = new TriggerStub();
     var child2 = new TriggerStub { NextTimeValue = DateTime.Now };
     var child3 = new TriggerStub { NextTimeValue = DateTime.Now.AddHours(1) };
     var trigger = new Multiple(child1, child2, child3);
     var actual = trigger.NextTime;
     Assert.AreEqual(child2.NextTimeValue, actual);
 }
 public void CleanUpCleansChildren()
 {
     var cleaned = false;
     var child = new TriggerStub
                     {
                         OnCleanUp = () => cleaned = true
                     };
     var trigger = new Multiple(child);
     trigger.CleanUp();
     Assert.IsTrue(cleaned);
 }
 public void ResetResetsChildren()
 {
     var reset = false;
     var child = new TriggerStub
                     {
                         OnResetAction = () => reset = true
                     };
     var trigger = new Multiple(child);
     trigger.Reset();
     Assert.IsTrue(reset);
 }
 public void InitialiseInitialisesChildren()
 {
     var initialised = false;
     var child = new TriggerStub
     {
         OnInitialise = () => initialised = true
     };
     var trigger = new Multiple(child);
     trigger.Initialise();
     Assert.IsTrue(initialised);
 }
 public void ValidateValidatesChildren()
 {
     var validated = false;
     var child = new TriggerStub
                     {
                         OnValidate = vl => validated = true
                     };
     var trigger = new Multiple(child);
     var validationMock = new Mock<IValidationLog>();
     trigger.Validate(validationMock.Object);
     Assert.IsTrue(validated);
 }
示例#7
0
 public void TriggerDoesNotFireInsidePeriod()
 {
     var clockMock = new Mock<IClock>();
     clockMock.Setup(c => c.Now).Returns(() => DateTime.Now);
     var inner = new TriggerStub
                     {
                         OnCheckAction = () => new IntegrationRequest("Test")
                     };
     var trigger = new RollUp(TimeSpan.FromMinutes(5))
                       {
                           InnerTrigger = inner,
                           Clock = clockMock.Object
                       };
     trigger.Reset();
     var request = trigger.Check();
     Assert.IsNull(request);
 }
        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 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);
        }
示例#10
0
 public void CheckReturnsRequestIfAnyChildSetWithOr()
 {
     var child1 = new TriggerStub { OnCheckAction = () => null };
     var child2 = new TriggerStub { OnCheckAction = () => new IntegrationRequest("Dummy") };
     var trigger = new Multiple(child1, child2);
     var actual = trigger.Check();
     Assert.IsNotNull(actual);
     Assert.AreEqual("Multiple", actual.SourceTrigger);
 }
示例#11
0
 public void CheckReturnsNullIfAllChildrenNullWithOr()
 {
     var child1 = new TriggerStub { OnCheckAction = () => null };
     var child2 = new TriggerStub { OnCheckAction = () => null };
     var trigger = new Multiple(child1, child2);
     var actual = trigger.Check();
     Assert.IsNull(actual);
 }
示例#12
0
 public void IntegrateResetsTriggers()
 {
     var reset = false;
     var dummy = new TriggerStub
                     {
                         OnResetAction = () => reset = true
                     };
     var executionFactoryMock = new Mock<ITaskExecutionFactory>(MockBehavior.Strict);
     InitialiseExecutionContext(executionFactoryMock);
     var project = new ProjectStub("test")
                       {
                           TaskExecutionFactory = executionFactoryMock.Object
                       };
     project.Triggers.Add(dummy);
     var request = new IntegrationRequest("Dummy");
     project.Integrate(request);
     Assert.IsTrue(reset);
 }
示例#13
0
 public void IntegrateHandlesErrorDuringTriggerReset()
 {
     var dummy = new TriggerStub
                     {
                         OnResetAction = () =>
                                             {
                                                 throw new Exception("Oops");
                                             }
                     };
     var executionFactoryMock = new Mock<ITaskExecutionFactory>(MockBehavior.Strict);
     InitialiseExecutionContext(executionFactoryMock);
     var project = new Project("test")
                       {
                           TaskExecutionFactory = executionFactoryMock.Object
                       };
     project.Triggers.Add(dummy);
     var request = new IntegrationRequest("Dummy");
     project.Integrate(request);
 }
示例#14
0
        private static Trigger GenerateRunOnceTrigger(Action onRun)
        {
            var triggered = false;
            var trigger = new TriggerStub
                              {
                                  OnCheckAction = () =>
                                                      {
                                                          if (!triggered)
                                                          {
                                                              triggered = true;
                                                              onRun();
                                                              return new IntegrationRequest("Dummy");
                                                          }

                                                          return null;
                                                      }
                              };
            return trigger;
        }
示例#15
0
 public void CheckReturnsNullIfAnyChildNullWithAnd()
 {
     var child1 = new TriggerStub { OnCheckAction = () => null };
     var child2 = new TriggerStub { OnCheckAction = () => new IntegrationRequest("Dummy") };
     var trigger = new Multiple(child1, child2)
                       {
                           Condition = CombinationOperator.And
                       };
     var actual = trigger.Check();
     Assert.IsNull(actual);
 }
示例#16
0
 public void ValidateValidatesTriggers()
 {
     var validateCalled = false;
     var trigger = new TriggerStub
                       {
                           OnValidate = vl => validateCalled = true
                       };
     var project = new Project("Test");
     project.Triggers.Add(trigger);
     var validationMock = new Mock<IValidationLog>();
     project.Validate(validationMock.Object);
     Assert.IsTrue(validateCalled);
 }
示例#17
0
 public void CheckReturnsRequestIfAllChildrenSetWithAnd()
 {
     var child1 = new TriggerStub { OnCheckAction = () => new IntegrationRequest("Dummy") };
     var child2 = new TriggerStub { OnCheckAction = () => new IntegrationRequest("Dummy") };
     var trigger = new Multiple(child1, child2)
                       {
                           Condition = CombinationOperator.And
                       };
     var actual = trigger.Check();
     Assert.IsNotNull(actual);
     Assert.AreEqual("Multiple", actual.SourceTrigger);
 }