public void ValidateTest() { var options = new DbContextOptionsBuilder <ApplicationContextForTest>() .UseInMemoryDatabase(Guid.NewGuid().ToString()) .Options; ApplicationContextForTest context = new ApplicationContextForTest(options); ValidateItemInContext <ObjectMappingForTest> validateItemInContext = new ValidateItemInContext <ObjectMappingForTest>(context); ObjectMappingForTest item = new ObjectMappingForTest(); //Объекта нет в контексте. ValidateContextResult validateContextResult = validateItemInContext.Validate(item); Assert.AreEqual(ResultStatus.Fail, validateContextResult.Status); Assert.AreEqual("Не пройдена проверка записи \"ObjectMappingForTest\":" + Environment.NewLine + "Не заполнено значение \"IntValue\"." + Environment.NewLine + "Не заполнено значение \"Строка\".", validateContextResult.Message); //Добавили в контекст, но с незаполненными обязательными полями validateContextResult = validateItemInContext.Validate(item); Assert.AreEqual(ResultStatus.Fail, validateContextResult.Status); Assert.AreEqual(1, validateContextResult.Count); Assert.AreEqual(2, validateContextResult[0].Fields.Count); Assert.AreEqual("IntValue", validateContextResult[0].Fields[0].Name); Assert.AreEqual("Строка", validateContextResult[0].Fields[1].Name); //Заполнили обязательные поля, чтобы прошла валидация item.IntValue = 1; item.IntValue2 = 2; validateContextResult = validateItemInContext.Validate(item); Assert.AreEqual(ResultStatus.Success, validateContextResult.Status); Assert.AreEqual(0, validateContextResult.Count); }
private void ValidateByContext(TEntity item) { ValidateContextResult validate = ValidateItem(item); if (validate.Status == ResultStatus.Fail) { throw new ArgumentException(validate.Message); } }
public void AddEntityTest() { ValidateContextResult validateContextResult = new ValidateContextResult(); validateContextResult.Status = ResultStatus.Success; Assert.IsTrue(String.IsNullOrWhiteSpace(validateContextResult.Message), "По умолчанию сообщение пусто."); //Добавим одну невалидную сущность ValidateContextResultItem validateContextResultItem = new ValidateContextResultItem(); validateContextResultItem.Name = "Объект1"; validateContextResultItem.Fields.Add(new ValidateContextResultItem() { Name = "Поле1" }); validateContextResultItem.Fields.Add(new ValidateContextResultItem() { Name = "Поле2" }); validateContextResult.AddEntity(validateContextResultItem); string messageError = "Не пройдена проверка записи \"Объект1\":" + Environment.NewLine + "Не заполнено значение \"Поле1\"." + Environment.NewLine + "Не заполнено значение \"Поле2\"."; Assert.AreEqual(ResultStatus.Fail, validateContextResult.Status); Assert.AreEqual(messageError, validateContextResult.Message); ValidateContextResultItem validateContextResultItem2 = new ValidateContextResultItem(); validateContextResultItem2.Name = "Объект2"; validateContextResultItem2.Fields.Add(new ValidateContextResultItem() { Name = "Поле3" }); validateContextResultItem2.Fields.Add(new ValidateContextResultItem() { Name = "Поле4" }); validateContextResult.AddEntity(validateContextResultItem2); messageError = "Не пройдена проверка записи \"Объект1\":" + Environment.NewLine + "Не заполнено значение \"Поле1\"." + Environment.NewLine + "Не заполнено значение \"Поле2\"." + Environment.NewLine + Environment.NewLine + "Не пройдена проверка записи \"Объект2\":" + Environment.NewLine + "Не заполнено значение \"Поле3\"." + Environment.NewLine + "Не заполнено значение \"Поле4\"."; Assert.AreEqual(ResultStatus.Fail, validateContextResult.Status); Assert.AreEqual(messageError, validateContextResult.Message); }