public virtual void DeleteRules_ExistAppellativeAttribute_Test(IDeleteRule info) { var names = info.ObjectClass.GetAttribute <AppellativeAttribute>(true); if (names == null) { Assert.Fail($"У класса {info.ObjectClass} нет атрибута AppellativeAttribute. Он позволит диалогу удаления назвать группу объектов."); } if (String.IsNullOrWhiteSpace(names.NominativePlural)) { Assert.Fail($"У класса {info.ObjectClass} в атрибуте {nameof(AppellativeAttribute)} не заполнено поле {nameof(AppellativeAttribute.NominativePlural)}. Оно позволит диалогу удаления назвать группу объектов."); } }
public virtual void DeleteItemsTypesTest(IDeleteRule info, DeleteDependenceInfo dependence) { if (!String.IsNullOrEmpty(dependence.PropertyName)) { Assert.That(info.ObjectClass, Is.EqualTo(dependence.ObjectClass.GetProperty(dependence.PropertyName).PropertyType), "Свойство {0}.{1} определенное в зависимости удаления для класса {2}, имеет другой тип.", dependence.ObjectClass.Name, dependence.PropertyName, info.ObjectClass ); Assert.Pass(); } Assert.Ignore("Для этой зависимости удаления нет необходимости тестировать типы."); }
public virtual void DeleteRules_ExistTitle_Test(IDeleteRule info) { var prop = info.ObjectClass.GetProperty("Title"); if (prop != null) { Assert.Pass("Найдено свойство Title"); } prop = info.ObjectClass.GetProperty("Name"); if (prop != null) { Assert.Pass("Найдено свойство Name"); } if (info.ObjectClass.GetMethod("ToString", new Type[] { }).DeclaringType == info.ObjectClass) { Assert.Pass("В классе переопределено свойство ToString"); } Assert.Fail($"В классе {info.ObjectClass}, нет свойств Title или Name. Что не позволяет при удалении красиво вывести пользователю информациию об удаляемом объекте."); }
/// <summary> /// Тест наличия каскадной зависимости для ссылок на другие сущьности в класе. /// </summary> public virtual void CascadeDependenceRuleExisitForNHMappedEntityRelationTest(PersistentClass mapping, Property prop, IDeleteRule related) { if (IgnoreProperties.ContainsKey(mapping.MappedClass) && IgnoreProperties[mapping.MappedClass].Any(x => x.PropertyName == prop.Name)) { Assert.Ignore(IgnoreProperties[mapping.MappedClass].First(x => x.PropertyName == prop.Name).ReasonForIgnoring); } var info = DeleteConfig.GetDeleteRule(mapping.MappedClass); Assert.That(info.DeleteItems.Any(x => x.ParentPropertyName == prop.Name && x.IsCascade), "Cвойство {0}.{1} не имеет каскадного правила удаления, хотя класс {2} помечен как требующий каскадного удаления.", info.ObjectClass.Name, prop.Name, related.ObjectClass.Name); }
/// <summary> /// Тест наличия зависимости для ссылок на другие сущьности в класе. /// </summary> public virtual void DependenceRuleExisitForNHMappedEntityRelationTest(PersistentClass mapping, Property prop, IDeleteRule related) { if (IgnoreProperties.ContainsKey(mapping.MappedClass) && IgnoreProperties[mapping.MappedClass].Any(x => x.PropertyName == prop.Name)) { Assert.Ignore(IgnoreProperties[mapping.MappedClass].First(x => x.PropertyName == prop.Name).ReasonForIgnoring); } Assert.That(related.DeleteItems.Exists(r => r.ObjectClass == mapping.MappedClass && r.PropertyName == prop.Name) || related.ClearItems.Exists(r => r.ObjectClass == mapping.MappedClass && r.PropertyName == prop.Name), "Для свойства {0}.{1} не определены зависимости удаления в классе {2}", mapping.MappedClass, prop.Name, related.ObjectClass.Name); }
public override void CascadeDependenceRuleExisitForNHMappedEntityRelationTest(PersistentClass mapping, Property property, IDeleteRule related) { base.CascadeDependenceRuleExisitForNHMappedEntityRelationTest(mapping, property, related); }
public override void ClearItemsTypesTest(IDeleteRule info, ClearDependenceInfo dependence) { base.ClearItemsTypesTest(info, dependence); }
public override void DeleteItemsTypesTest(IDeleteRule info, DeleteDependenceInfo dependence) { base.DeleteItemsTypesTest(info, dependence); }
/// <summary> /// Тест наличия зависимости для ссылок на другие сущьности в класе. /// </summary> public virtual void DependenceRuleExisitForNHMappedEntityRelationTest(PersistentClass mapping, Property prop, IDeleteRule related) { if (IgnoreProperties.ContainsKey(mapping.MappedClass) && IgnoreProperties[mapping.MappedClass].Any(x => x.PropertyName == prop.Name)) { Assert.Ignore(IgnoreProperties[mapping.MappedClass].First(x => x.PropertyName == prop.Name).ReasonForIgnoring); } if (!prop.IsUpdateable) { Assert.Ignore($"Свойство {mapping.MappedClass}.{prop.Name} пропущено так как не записываемое, скорей всего это OneToOne связь которая будет удаляться основной ссылкой."); } Assert.That(related.DeleteItems.Exists(r => r.ObjectClass == mapping.MappedClass && r.PropertyName == prop.Name) || related.ClearItems.Exists(r => r.ObjectClass == mapping.MappedClass && r.PropertyName == prop.Name), "Для свойства {0}.{1} не определены зависимости удаления в классе {2}", mapping.MappedClass, prop.Name, related.ObjectClass.Name); }
public override void DeleteRules_ExistAppellativeAttribute_Test(IDeleteRule info) { base.DeleteRules_ExistAppellativeAttribute_Test(info); }
public override void DeleteRules_ExistTitle_Test(IDeleteRule info) { base.DeleteRules_ExistTitle_Test(info); }