Ejemplo n.º 1
0
        public void DeleteAggregatorWithManyDetailsTest()
        {
            foreach (IDataService dataService in DataServices)
            {
                // Arrange.
                SQLDataService ds = dataService as SQLDataService;

                //TODO: Fix OracleDataService error.
                if (dataService is OracleDataService)
                {
                    continue;
                }

                var masterCl = new Пользователь {
                    ФИО = "фио"
                };
                var aggregator = new Конкурс {
                    Название = "название", Организатор = masterCl
                };

                var detailOne = new КритерийОценки {
                    ПорядковыйНомер = 4
                };
                var detailTwo = new ДокументацияККонкурсу {
                    Файл = new WebFile()
                };
                aggregator.КритерииОценки.Add(detailOne);
                aggregator.Документы.Add(detailTwo);

                ds.UpdateObject(aggregator);

                // Act
                LoadingCustomizationStruct lcsAggregator = LoadingCustomizationStruct.GetSimpleStruct(typeof(Конкурс), Конкурс.Views.КонкурсE);
                LoadingCustomizationStruct lcsDetailOne  = LoadingCustomizationStruct.GetSimpleStruct(typeof(КритерийОценки), КритерийОценки.Views.КритерийОценкиE);
                LoadingCustomizationStruct lcsDetailTwo  = LoadingCustomizationStruct.GetSimpleStruct(typeof(ДокументацияККонкурсу), ДокументацияККонкурсу.Views.ДокументацияККонкурсуE);

                DataObject[] dataObjectsAggregator = ds.LoadObjects(lcsAggregator);
                DataObject[] dataObjectsDetailOne  = ds.LoadObjects(lcsDetailOne);
                DataObject[] dataObjectsDetailTwo  = ds.LoadObjects(lcsDetailTwo);

                int countAggregatorBefore = ds.GetObjectsCount(lcsAggregator);
                int countDetailOneBefore  = ds.GetObjectsCount(lcsDetailOne);
                int countDetailTwoBefore  = ds.GetObjectsCount(lcsDetailTwo);

                List <DataObject> objectsForUpdateList = new List <DataObject>();

                foreach (Конкурс конкурс in dataObjectsAggregator)
                {
                    конкурс.SetStatus(ObjectStatus.Deleted);
                    objectsForUpdateList.Add(конкурс);
                }

                foreach (КритерийОценки критерий in dataObjectsDetailOne)
                {
                    критерий.SetStatus(ObjectStatus.Deleted);
                    objectsForUpdateList.Add(критерий);
                }

                foreach (ДокументацияККонкурсу документ in dataObjectsDetailTwo)
                {
                    документ.SetStatus(ObjectStatus.Deleted);
                    objectsForUpdateList.Add(документ);
                }

                DataObject[] objectsForUpdate = objectsForUpdateList.ToArray();

                ds.UpdateObjects(ref objectsForUpdate);

                int countAggregatorAfter = ds.GetObjectsCount(lcsAggregator);
                int countDetailOneAfter  = ds.GetObjectsCount(lcsDetailOne);
                int countDetailTwoAfter  = ds.GetObjectsCount(lcsDetailTwo);

                // Assert
                Assert.Equal(1, countAggregatorBefore);
                Assert.Equal(1, countDetailOneBefore);
                Assert.Equal(1, countDetailTwoBefore);

                Assert.Equal(0, countAggregatorAfter);
                Assert.Equal(0, countDetailOneAfter);
                Assert.Equal(0, countDetailTwoAfter);
            }
        }
Ejemplo n.º 2
0
        public void DeleteAggregatorWithDetailAndHierarhiTest()
        {
            foreach (IDataService dataService in DataServices)
            {
                // Arrange.
                SQLDataService ds = dataService as SQLDataService;

                //TODO: Fix OracleDataService error.
                if (dataService is OracleDataService)
                {
                    continue;
                }

                var masterForest = new Лес {
                    Название = "лес1"
                };
                var detailDen = new Берлога {
                    Наименование = "берлога1", ЛесРасположения = masterForest
                };
                var aggregatorBear = new Медведь {
                    ПорядковыйНомер = 2, ЛесОбитания = masterForest
                };
                aggregatorBear.Берлога.Add(detailDen);

                ds.UpdateObject(aggregatorBear);

                var aggregatorBearMother = new Медведь {
                    ПорядковыйНомер = 2
                };
                aggregatorBear.Мама = aggregatorBearMother;

                ds.UpdateObject(aggregatorBear);

                // Act & Assert.
                LoadingCustomizationStruct lcsBear   = LoadingCustomizationStruct.GetSimpleStruct(typeof(Медведь), Медведь.Views.МедведьE);
                LoadingCustomizationStruct lcsForest = LoadingCustomizationStruct.GetSimpleStruct(typeof(Лес), Лес.Views.ЛесE);

                DataObject[] dataObjectsBear   = ds.LoadObjects(lcsBear);
                DataObject[] dataObjectsForest = ds.LoadObjects(lcsForest);

                // Act
                int countBearBefore   = ds.GetObjectsCount(lcsBear);
                int countForestBefore = ds.GetObjectsCount(lcsForest);

                List <DataObject> objectsForUpdateList = new List <DataObject>();

                foreach (Медведь медведь in dataObjectsBear)
                {
                    медведь.SetStatus(ObjectStatus.Deleted);
                    objectsForUpdateList.Add(медведь);
                }

                foreach (Лес лес in dataObjectsForest)
                {
                    лес.SetStatus(ObjectStatus.Deleted);
                    objectsForUpdateList.Add(лес);
                }

                DataObject[] objectsForUpdate = objectsForUpdateList.ToArray();

                ds.UpdateObjects(ref objectsForUpdate);

                int countBearAfter   = ds.GetObjectsCount(lcsBear);
                int countForestAfter = ds.GetObjectsCount(lcsForest);

                // Assert
                Assert.Equal(2, countBearBefore);
                Assert.Equal(1, countForestBefore);

                Assert.Equal(0, countBearAfter);
                Assert.Equal(0, countForestAfter);
            }
        }
Ejemplo n.º 3
0
        public void DeleteUpdateAssociationTest()
        {
            foreach (IDataService dataService in DataServices)
            {
                // Arrange.
                SQLDataService ds = dataService as SQLDataService;

                //TODO: Fix OracleDataService error.
                if (dataService is OracleDataService)
                {
                    continue;
                }
                var masterBreedType = new ТипПороды {
                    Название = "тип породы1", ДатаРегистрации = DateTime.Now
                };
                var innerMasterBreed = new Порода {
                    Название = "порода1", ТипПороды = masterBreedType
                };
                var innerMasterCat = new Кошка
                {
                    Кличка       = "кошка",
                    ДатаРождения = (NullableDateTime)DateTime.Now,
                    Тип          = ТипКошки.Дикая,
                    Порода       = innerMasterBreed
                };
                var innerKitten = new Котенок {
                    КличкаКотенка = "котеночек", Кошка = innerMasterCat
                };

                // Act
                ds.UpdateObject(innerKitten);

                LoadingCustomizationStruct lcsKitten    = LoadingCustomizationStruct.GetSimpleStruct(typeof(Котенок), Котенок.Views.КотенокE);
                LoadingCustomizationStruct lcsCat       = LoadingCustomizationStruct.GetSimpleStruct(typeof(Кошка), Кошка.Views.КошкаE);
                LoadingCustomizationStruct lcsBreed     = LoadingCustomizationStruct.GetSimpleStruct(typeof(Порода), Порода.Views.ПородаE);
                LoadingCustomizationStruct lcsBreedType = LoadingCustomizationStruct.GetSimpleStruct(typeof(ТипПороды), ТипПороды.Views.ТипПородыE);

                DataObject[] dataObjectsKitten     = ds.LoadObjects(lcsKitten);
                DataObject[] dataObjectsCats       = ds.LoadObjects(lcsCat);
                DataObject[] dataObjectsBreed      = ds.LoadObjects(lcsBreed);
                DataObject[] dataObjectsBreedTypes = ds.LoadObjects(lcsBreedType);

                int countKittenBefore    = ds.GetObjectsCount(lcsKitten);
                int countCatBefore       = ds.GetObjectsCount(lcsCat);
                int countBreedBefore     = ds.GetObjectsCount(lcsBreed);
                int countBreedTypeBefore = ds.GetObjectsCount(lcsBreed);

                List <DataObject> objectsForUpdateList = new List <DataObject>();

                foreach (Котенок котенок in dataObjectsKitten)
                {
                    котенок.SetStatus(ObjectStatus.Deleted);
                    objectsForUpdateList.Add(котенок);
                }

                foreach (Кошка кошка in dataObjectsCats)
                {
                    кошка.SetStatus(ObjectStatus.Deleted);
                    objectsForUpdateList.Add(кошка);
                }

                foreach (Порода порода in dataObjectsBreed)
                {
                    порода.SetStatus(ObjectStatus.Deleted);
                    objectsForUpdateList.Add(порода);
                }

                foreach (ТипПороды типПороды in dataObjectsBreedTypes)
                {
                    типПороды.SetStatus(ObjectStatus.Deleted);
                    objectsForUpdateList.Add(типПороды);
                }

                DataObject[] objectsForUpdate = objectsForUpdateList.ToArray();

                ds.UpdateObjects(ref objectsForUpdate);

                int countKittenAfter    = ds.GetObjectsCount(lcsKitten);
                int countCatAfter       = ds.GetObjectsCount(lcsCat);
                int countBreedAfter     = ds.GetObjectsCount(lcsBreed);
                int countBreedTypeAfter = ds.GetObjectsCount(lcsBreedType);

                // Assert
                Assert.Equal(1, countKittenBefore);
                Assert.Equal(1, countCatBefore);
                Assert.Equal(1, countBreedBefore);
                Assert.Equal(1, countBreedTypeBefore);

                Assert.Equal(0, countKittenAfter);
                Assert.Equal(0, countCatAfter);
                Assert.Equal(0, countBreedAfter);
                Assert.Equal(0, countBreedTypeAfter);
            }
        }
Ejemplo n.º 4
0
        public void DetailsDeleteTest()
        {
            foreach (IDataService dataService in DataServices)
            {
                // Arrange
                SQLDataService ds = (SQLDataService)dataService;

                const string First  = "Первый";
                const string Second = "Второй";
                const string Third  = "Третий";
                const string Fourth = "Четвертый";

                ТипЛапы передняяЛапа = new ТипЛапы {
                    Актуально = true, Название = "Передняя"
                };
                ТипЛапы задняяЛапа = new ТипЛапы {
                    Актуально = true, Название = "Задняя"
                };


                Кошка aggregator = new Кошка
                {
                    ДатаРождения = (NullableDateTime)DateTime.Now,
                    Тип          = ТипКошки.Дикая,
                    Порода       = new Порода {
                        Название = "Чеширская"
                    },
                    Кличка = "Мурка"
                };
                aggregator.Лапа.AddRange(
                    new Лапа {
                    Цвет = First, ТипЛапы = передняяЛапа
                },
                    new Лапа {
                    Цвет = Second, ТипЛапы = передняяЛапа
                },
                    new Лапа {
                    Цвет = Third, ТипЛапы = задняяЛапа
                },
                    new Лапа {
                    Цвет = Fourth, ТипЛапы = задняяЛапа
                });

                ds.UpdateObject(aggregator);

                LoadingCustomizationStruct lcsCat      = LoadingCustomizationStruct.GetSimpleStruct(typeof(Кошка), Кошка.Views.КошкаE);
                LoadingCustomizationStruct lcsPaws     = LoadingCustomizationStruct.GetSimpleStruct(typeof(Лапа), Лапа.Views.ЛапаFull);
                LoadingCustomizationStruct lcsPawsType = LoadingCustomizationStruct.GetSimpleStruct(typeof(ТипЛапы), ТипЛапы.Views.ТипЛапыE);

                DataObject[] dataObjectsCats      = ds.LoadObjects(lcsCat);
                DataObject[] dataObjectsPawsTypes = ds.LoadObjects(lcsPawsType);

                // Act
                int countCatBefore      = ds.GetObjectsCount(lcsCat);
                int countPawsBefore     = ds.GetObjectsCount(lcsPaws);
                int countPawsTypeBefore = ds.GetObjectsCount(lcsPawsType);

                List <DataObject> objectsForUpdateList = new List <DataObject>();

                foreach (Кошка кошка in dataObjectsCats)
                {
                    кошка.SetStatus(ObjectStatus.Deleted);
                    objectsForUpdateList.Add(кошка);
                }

                foreach (ТипЛапы типЛапы in dataObjectsPawsTypes)
                {
                    типЛапы.SetStatus(ObjectStatus.Deleted);
                    objectsForUpdateList.Add(типЛапы);
                }

                DataObject[] objectsForUpdate = objectsForUpdateList.ToArray();

                ds.UpdateObjects(ref objectsForUpdate);

                int countCatAfter      = ds.GetObjectsCount(lcsCat);
                int countPawsAfter     = ds.GetObjectsCount(lcsPaws);
                int countPawsTypeAfter = ds.GetObjectsCount(lcsPawsType);

                // Assert
                Assert.Equal(1, countCatBefore);
                Assert.Equal(4, countPawsBefore);
                Assert.Equal(2, countPawsTypeBefore);

                Assert.Equal(0, countCatAfter);
                Assert.Equal(0, countPawsAfter);
                Assert.Equal(0, countPawsTypeAfter);
            }
        }
Ejemplo n.º 5
0
        public void GetObjectIndexesWithPksOrderingTest()
        {
            foreach (IDataService dataService in DataServices)
            {
                //TODO: Fix OracleDataService error.
                if (dataService is OracleDataService)
                {
                    continue;
                }
                // Arrange.
                SQLDataService      ds      = dataService as SQLDataService;
                SQLWhereLanguageDef langDef = SQLWhereLanguageDef.LanguageDef;

                List <DataObject> dataObjects = new List <DataObject>();
                bool isMssql = dataService.GetType() == typeof(MSSQLDataService) || dataService.GetType().IsSubclassOf(typeof(MSSQLDataService));

                // MSSQL в отличие от других хранилищ имеет свой формат сортировки гуидов. Для его поддержки приходится пользоваться специальным типом SqlGuid.
                List <SqlGuid> keysMssqlList    = new List <SqlGuid>();
                List <Guid>    keysPostgresList = new List <Guid>();

                // Создадим 1000 медведей.
                int objectsCount = 1000;
                for (int i = 0; i < objectsCount; i++)
                {
                    // Для простоты анализа проблем с данными, если они возникнут, выдадим ненастоящие последовательные гуиды.
                    byte[] bytes = new byte[16];
                    BitConverter.GetBytes(i).CopyTo(bytes, 0);
                    var pk = new Guid(bytes);
                    if (isMssql)
                    {
                        keysMssqlList.Add(pk);
                    }
                    else
                    {
                        keysPostgresList.Add(pk);
                    }

                    var createdBear = new Медведь
                    {
                        __PrimaryKey = pk,
                        ЦветГлаз     = "Косолапый Мишка " + i,
                        Вес          = i
                    };
                    dataObjects.Add(createdBear);
                }

                DataObject[] dataObjectsForUpdate = dataObjects.ToArray();
                ds.UpdateObjects(ref dataObjectsForUpdate);

                LoadingCustomizationStruct lcs = LoadingCustomizationStruct.GetSimpleStruct(typeof(Медведь), Медведь.Views.МедведьL);

                Function findFunction = langDef.GetFunction(langDef.funcL, new VariableDef(langDef.StringType, Information.ExtractPropertyPath <Медведь>(m => m.Вес)), objectsCount);
                if (isMssql)
                {
                    keysMssqlList.Sort();
                }
                else
                {
                    keysPostgresList.Sort();
                }

                // Act.
                IDictionary <int, string> result = ds.GetObjectIndexesWithPks(lcs, findFunction, null);

                // Assert.
                var values = result.Values.GetEnumerator();
                var keys   = result.Keys.GetEnumerator();

                for (int i = 0; i < objectsCount; i++)
                {
                    Assert.Equal(objectsCount, result.Count);

                    values.MoveNext();
                    keys.MoveNext();
                    string key = isMssql ? ((Guid)keysMssqlList[i]).ToString("B") : keysPostgresList[i].ToString("B");
                    Assert.Equal(key, values.Current);
                    Assert.Equal(i + 1, keys.Current);
                }
            }
        }
Ejemplo n.º 6
0
 /// <summary>
 /// The execute.
 /// </summary>
 /// <param name="ds">
 /// The ds.
 /// </param>
 /// <param name="viewName">
 /// The view name.
 /// </param>
 /// <param name="t">
 /// The t.
 /// </param>
 /// <param name="expr">
 /// The expr.
 /// </param>
 /// <returns>
 /// The <see cref="object"/>.
 /// </returns>
 public static object Execute(this SQLDataService ds, string viewName, Type t, Expression expr)
 {
     return(ds.Execute(viewName, t, expr, null));
 }