public void For_SetValidator_When_OtherValidatorIsNull_Then_ExceptionIsThrown()
        {
            // Arrange:
            var memberInfo = CreateTestMemberInfo();
            var validator  = new PropertyValidatorBaseTestImpl <string>(memberInfo);

            // Act:
            Assert.Throws <ArgumentNullException>(() => validator.SetValidator(null));
        }
        public void For_SetValidator_When_PassedValidatorReferenceConcernsTargetValidator_Then_ExceptionIsThrown()
        {
            // Arrange:
            var memberInfo = CreateTestMemberInfo();
            var validator  = new PropertyValidatorBaseTestImpl <string>(memberInfo);

            // Act & Assert:
            var exception = Assert.Throws <ArgumentException>(() => validator.SetValidator(validator));

            exception.Message.Should().Contain("Detected circular reference");
        }
        public void For_SetValidator_When_ValidatorCanBeSet_Then_ItIsAddedToValidationTasksList()
        {
            // Arrange:
            var memberInfo = CreateTestMemberInfo();
            var validator  = new PropertyValidatorBaseTestImpl <string>(memberInfo);

            // Act:
            validator.SetValidator(Mock.Of <ISyncValidator <string> >());

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

            validationTasks.Count.Should().Be(1);
        }
        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");
        }