public void Execute_WhenCalledWithoutMethodName_AddsErrorResult()
        {
            // arrange
            var rule =
                new ESyncSchedulesShouldHaveUniqueNamesRule(SchedulerDescriptorEdit.ScheduleListProperty);

            var context = Mock.Create<RuleContext>(Constructor.Mocked, Behavior.CallOriginal);
            Mock.Arrange(() => context.InputPropertyValues)
                .Returns(new Dictionary<IPropertyInfo, object>
                {
                    {
                        SchedulerDescriptorEdit.ScheduleListProperty, new SchedulerDescriptorEdit()
                    },
                });

            var scheduler = Mock.Create<SchedulerDescriptorEdit>();
            var scheduleListMock = Mock.Create<ScheduleEditList>(Behavior.CallOriginal);
            var scheduleEditMock1 = Mock.Create<ScheduleEdit>();
            Mock.Arrange(() => scheduleEditMock1.IsChild).Returns(true);
            Mock.Arrange(() => scheduleEditMock1.Name).Returns("1");   
            
            var scheduleEditMock2 = Mock.Create<ScheduleEdit>();
            Mock.Arrange(() => scheduleEditMock2.IsChild).Returns(true);
            Mock.Arrange(() => scheduleEditMock2.Name).Returns("1");
            scheduleListMock.Add(scheduleEditMock1);
            scheduleListMock.Add(scheduleEditMock2);
            Mock.Arrange(() => scheduler.ScheduleList).Returns(scheduleListMock);

            Mock.Arrange(() => scheduler.GetParent<ESyncProcessEdit>()).Returns(new ESyncProcessEdit());
            Mock.Arrange(() => context.Target).Returns(scheduler);
            var ruleWasThrown = false;
            Mock.Arrange(() => context.AddErrorResult(Arg.AnyString)).DoInstead(() => ruleWasThrown = true);

            //Act
            var privateAccessor = new PrivateAccessor(rule);
            privateAccessor.CallMethod("Execute", new object[] { context });

            // assert
            Assert.IsTrue(ruleWasThrown);
        }
        public void Execute_WhenCalledWithMethodName_DoNotAddErrorResult()
        {
            // arrange
            var rule =
                new ESyncSchedulesShouldHaveUniqueNamesRule(SchedulerDescriptorEdit.ScheduleListProperty);

            var context = Mock.Create<RuleContext>(Constructor.Mocked, Behavior.CallOriginal);
            Mock.Arrange(() => context.InputPropertyValues)
                .Returns(new Dictionary<IPropertyInfo, object>
                {
                    {
                        SchedulerDescriptorEdit.ScheduleListProperty, Guid.NewGuid().ToString()
                    },
                });
            var ruleWasThrown = false;
            Mock.Arrange(() => context.AddErrorResult(Arg.AnyString)).DoInstead(() => ruleWasThrown = true);

            //Act
            var privateAccessor = new PrivateAccessor(rule);
            privateAccessor.CallMethod("Execute", new object[] { context });

            // assert
            Assert.IsFalse(ruleWasThrown);
        }