public void NestedValidatorLevel2Works()
 {
     var mock = new Mock<SelpValidator>();
     mock.SetupGet(d => d.EntityName).Returns("Mock");
     var nestedLevel1 = new FailedValidator();
     mock.Object.AddNestedValidator(nestedLevel1);
     nestedLevel1.AddNestedValidator(new FailedValidatorLevel2());
     mock.Object.Validate();
     Assert.AreEqual(1, mock.Object.NestedValidators.Count, "Validator hasn't been added to the collection");
     Assert.AreEqual(false, mock.Object.IsValid, "Validator hasn't recognized an error");
     Assert.AreEqual(2, mock.Object.Errors.Count, "Both nested validators should raise an error. They actually didn't.");
     Assert.AreEqual("Text", mock.Object.Errors[0].Text, "Level1 validator text failed");
     Assert.AreEqual("FieldName", mock.Object.Errors[0].FieldName, "Level1 validator fieldname failed");
     Assert.AreEqual(1, mock.Object.Errors[0].ParentEntities.Count, "Parent entities level 1 should contain 1 element");
     Assert.AreEqual("Mock", mock.Object.Errors[0].ParentEntities[0],
         "Parent entities level 1 should contain 1 element: Mock");
     Assert.AreEqual("Text level 2", mock.Object.Errors[1].Text, "Level2 validator text failed");
     Assert.IsNull(mock.Object.Errors[1].FieldName, "Level2 validator fieldname failed (should contains nothing)");
     Assert.AreEqual(2, mock.Object.Errors[1].ParentEntities.Count, "Parent entities level 2 should contain 2 elements");
     Assert.AreEqual("Mock", mock.Object.Errors[1].ParentEntities[0],
         "Parent entities level 2 should contain element Mock on 1st position");
     Assert.AreEqual("Failed", mock.Object.Errors[1].ParentEntities[1],
         "Parent entities level 2 should contain element Failed on 2nd position");
 }
 public void ValidatorWorksOnFails()
 {
     var mock = new FailedValidator();
     mock.Validate();
     Assert.AreEqual(false, mock.IsValid, "Validator hasn't recognized an error");
     Assert.AreEqual(1, mock.Errors.Count, "Validator didn't add error to the list");
     Assert.AreEqual("Text", mock.Errors[0].Text, "Validator didn't add content to the error");
     Assert.AreEqual("FieldName", mock.Errors[0].FieldName, "Validator didn't save fieldname");
     Assert.AreEqual(0, mock.Errors[0].ParentEntities.Count, "Parent entities should be empty");
 }