public void For_WithCode_When_ThereAre2ValidationTasks_Then_CodeIsChangedInLastValidationTask()
        {
            // Arrange:
            var memberInfo      = CreateTestMemberInfo();
            var validator       = new PropertyValidatorBaseTestImpl <string>(memberInfo);
            var validationTasks = new List <ValidationTask>
            {
                new ValidationTask(Mock.Of <IValidator>(), false),
                new ValidationTask(Mock.Of <IValidator>(), false)
            };

            validator.AddValidationTasksTestMethod(validationTasks);
            const string code = "SOME CODE";

            // Act:
            validator.WithCode(code);

            // Assert:
            var resultValidationTasks = validator.GetValidationTasksTestMethod();

            resultValidationTasks.Count.Should().Be(2);
            resultValidationTasks.First().ErrorTransformation.OverriddenCode.Should().BeNull();
            resultValidationTasks.Skip(1).First().ErrorTransformation
            .OverriddenCode.Should().Be(code);
        }
        public void For_SetValidator_When_OtherValidatorIsAlreadySet_Then_ExceptionIsThrown()
        {
            // Arrange:
            var memberInfo     = CreateTestMemberInfo();
            var validator      = new PropertyValidatorBaseTestImpl <string>(memberInfo);
            var validationTask = new ValidationTask(Mock.Of <IValidator>(), true);

            validator.AddValidationTasksTestMethod(new List <ValidationTask> {
                validationTask
            });

            // Act:
            var exception = Assert.Throws <InvalidOperationException>(() =>
                                                                      validator.SetValidator(Mock.Of <ISyncValidator <string> >()));

            exception.Message.Should().Contain("There is already set other validator");
        }
        public void For_StopValidationAfterFailure_When_ThereAre2ValidationTasks_Then_ConstraintIsAppliedToLastValidationTask()
        {
            // Arrange:
            var memberInfo      = CreateTestMemberInfo();
            var validator       = new PropertyValidatorBaseTestImpl <string>(memberInfo);
            var validationTasks = new List <ValidationTask>
            {
                new ValidationTask(Mock.Of <IValidator>(), false),
                new ValidationTask(Mock.Of <IValidator>(), false)
            };

            validator.AddValidationTasksTestMethod(validationTasks);

            // Act:
            validator.StopValidationAfterFailure();

            // Assert:
            var resultValidationTasks = validator.GetValidationTasksTestMethod();

            resultValidationTasks.Count.Should().Be(2);
            resultValidationTasks.First().StopValidationAfterFailure.Should().BeFalse();
            resultValidationTasks.Skip(1).First().StopValidationAfterFailure.Should().BeTrue();
        }