public void CanExecuteTest()
        {
            const string TriggerName = "Test Trigger";
            var triggerGuid = Guid.Parse("{A7B2AF5F-5444-479D-A700-29123F8748A9}");
            const string DestinationProcess = "TestProcess";
            const string FilterDefinition = "Test Filter";
            const DataTriggerModificationType ModificationType = DataTriggerModificationType.Insert;
            var map = new DataTriggerMap(Enumerable.Empty<DataTriggerFieldMapping>(), Enumerable.Empty<DataTriggerListFieldMapping>());

            var item = Mock.Create<IEditableRoot>();
            var oldItem = Mock.Create<IEditableRoot>();

            var trigger = new DataTriggerDefinition(TriggerName, triggerGuid, DestinationProcess, FilterDefinition, ModificationType, Enumerable.Empty<IActionRule>(), map);

            Assert.IsFalse(trigger.CanExecute(item, oldItem));

            var rule1 = Mock.Create<IActionRule>();
            Mock.Arrange(() => rule1.CanExecute(item, oldItem)).Returns(false);

            var rule2 = Mock.Create<IActionRule>();
            Mock.Arrange(() => rule2.CanExecute(item, oldItem)).Returns(true);

            trigger = new DataTriggerDefinition(TriggerName, triggerGuid, DestinationProcess, FilterDefinition, ModificationType, new[] { rule1 }, map);

            Assert.IsFalse(trigger.CanExecute(item, oldItem));

            trigger = new DataTriggerDefinition(TriggerName, triggerGuid, DestinationProcess, FilterDefinition, ModificationType, new[] { rule1, rule2 }, map);

            Assert.IsTrue(trigger.CanExecute(item, oldItem));
        }
Пример #2
0
        public void InitializeTest()
        {
            // Arrange.
            const string ProcessName = "TestProcess";
            const string TriggerName = "Test Trigger";
            var triggerGuid = new Guid("{A05F4E80-E1C6-4115-8582-0A823081BB19}");
            const string ProcessToModify = "DestinationProcess";
            const string FilterDefinition = "Test Filter";
            const DataTriggerModificationType ModificationType = DataTriggerModificationType.Update;

            var fieldMapping1 = new DataTriggerFieldMapping("Field1", false, (s, d) => null);
            var fieldMapping2 = new DataTriggerFieldMapping("Field2", false, (s, d) => null);

            var listMapping1 = new DataTriggerListFieldMapping(
                Enumerable.Empty<FieldMappingDataSourceDefinition>(),
                "Field3",
                DataTriggerModificationType.Insert,
                Enumerable.Empty<DataTriggerFieldMapping>());

            var listMapping2 = new DataTriggerListFieldMapping(
                Enumerable.Empty<FieldMappingDataSourceDefinition>(),
                "Field4",
                DataTriggerModificationType.Insert,
                Enumerable.Empty<DataTriggerFieldMapping>());

            var triggerMap = new DataTriggerMap(new[] { fieldMapping1, fieldMapping2 }, new[] { listMapping1, listMapping2 });

            var triggerDefinition = new DataTriggerDefinition(TriggerName, triggerGuid, ProcessToModify, FilterDefinition, ModificationType, Enumerable.Empty<IActionRule>(), triggerMap);

            var fieldUpdater1 = Mock.Create<IFieldUpdater>();
            var fieldUpdater2 = Mock.Create<IFieldUpdater>();
            var fieldUpdaterFactory = Mock.Create<IFieldUpdaterFactory>();
            Mock.Arrange(() => fieldUpdaterFactory.CreateFieldUpdater(ProcessToModify, fieldMapping1)).Returns(fieldUpdater1);
            Mock.Arrange(() => fieldUpdaterFactory.CreateFieldUpdater(ProcessToModify, fieldMapping2)).Returns(fieldUpdater2);

            var listUpdater1 = Mock.Create<IListFieldUpdater>();
            var listUpdater2 = Mock.Create<IListFieldUpdater>();
            var listUpdaterFactory = Mock.Create<IListFieldUpdaterFactory>();
            Mock.Arrange(() => listUpdaterFactory.CreateFieldUpdater(ProcessToModify, listMapping1)).Returns(listUpdater1);
            Mock.Arrange(() => listUpdaterFactory.CreateFieldUpdater(ProcessToModify, listMapping2)).Returns(listUpdater2);

            var trigger = new DataTrigger { FieldUpdaterFactory = fieldUpdaterFactory, ListFieldUpdaterFactory = listUpdaterFactory };

            // Act.
            trigger.Initialize(ProcessName, triggerDefinition);

            // Assert.
            Assert.AreEqual(TriggerName, trigger.Name);
            Assert.AreEqual(triggerGuid, trigger.Guid);
            Assert.AreEqual(ModificationType, trigger.ModificationType);
            Assert.AreEqual(ProcessToModify, trigger.DestinationProcess);
            Assert.AreEqual(FilterDefinition, trigger.FilterDefinition);
            Assert.AreEqual(2, trigger.FieldUpdaters.Count);
            Assert.IsTrue(trigger.FieldUpdaters.Contains(fieldUpdater1));
            Assert.IsTrue(trigger.FieldUpdaters.Contains(fieldUpdater2));
            Assert.AreEqual(2, trigger.ListFieldUpdaters.Count);
            Assert.IsTrue(trigger.ListFieldUpdaters.Contains(listUpdater1));
            Assert.IsTrue(trigger.ListFieldUpdaters.Contains(listUpdater2));
        }
        public void CreateProcessTriggerTest()
        {
            const string TriggerName = "Test Trigger";
            var triggerGuid = Guid.Parse("{A7B2AF5F-5444-479D-A700-29123F8748A9}");
            const string DestinationProcess = "TestProcess";
            const string FilterDefinition = "Test Filter";
            const DataTriggerModificationType ModificationType = DataTriggerModificationType.Insert;
            var map = new DataTriggerMap(Enumerable.Empty<DataTriggerFieldMapping>(), Enumerable.Empty<DataTriggerListFieldMapping>());

            var trigger = new DataTriggerDefinition(TriggerName, triggerGuid, DestinationProcess, FilterDefinition, ModificationType, Enumerable.Empty<IActionRule>(), map);

            Assert.AreEqual(TriggerName, trigger.Name);
            Assert.AreEqual(triggerGuid, trigger.Guid);
            Assert.AreEqual(DestinationProcess, trigger.ProcessToModifySystemName);
            Assert.AreEqual(FilterDefinition, trigger.FilterDefinition);
            Assert.AreEqual(ModificationType, trigger.ModificationType);
            Assert.AreSame(map, trigger.Map);
            Assert.AreEqual(DataTriggerTypes.Process, trigger.TriggerType);
        }