Пример #1
0
        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)}. Оно позволит диалогу удаления назвать группу объектов.");
            }
        }
Пример #2
0
        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("Для этой зависимости удаления нет необходимости тестировать типы.");
        }
Пример #3
0
        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. Что не позволяет при удалении красиво вывести пользователю информациию об удаляемом объекте.");
        }
Пример #4
0
        /// <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);
        }
Пример #5
0
        /// <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);
        }
Пример #6
0
 public override void CascadeDependenceRuleExisitForNHMappedEntityRelationTest(PersistentClass mapping, Property property, IDeleteRule related)
 {
     base.CascadeDependenceRuleExisitForNHMappedEntityRelationTest(mapping, property, related);
 }
Пример #7
0
 public override void ClearItemsTypesTest(IDeleteRule info, ClearDependenceInfo dependence)
 {
     base.ClearItemsTypesTest(info, dependence);
 }
Пример #8
0
 public override void DeleteItemsTypesTest(IDeleteRule info, DeleteDependenceInfo dependence)
 {
     base.DeleteItemsTypesTest(info, dependence);
 }
Пример #9
0
        /// <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);
        }
Пример #10
0
 public override void DeleteRules_ExistAppellativeAttribute_Test(IDeleteRule info)
 {
     base.DeleteRules_ExistAppellativeAttribute_Test(info);
 }
Пример #11
0
 public override void DeleteRules_ExistTitle_Test(IDeleteRule info)
 {
     base.DeleteRules_ExistTitle_Test(info);
 }