Ejemplo n.º 1
0
        public void GetLcsSecondLevelTest()
        {
            var breedType = new ТипПороды()
            {
                Название = "Чеширский Улыбчивый"
            };
            var testProvider = new TestLcsQueryProvider <Кошка>();

            new Query <Кошка>(testProvider).Where(o => o.Порода.ТипПороды == breedType).ToArray();
            Expression queryExpression = testProvider.InnerExpression;

            var expected = new LoadingCustomizationStruct(null)
            {
                LimitFunction =
                    ldef.GetFunction(
                        ldef.funcEQ,
                        new VariableDef(ldef.DataObjectType, Information.ExtractPropertyPath <Кошка>(x => x.Порода.ТипПороды)),
                        breedType)
            };

            LoadingCustomizationStruct actual = LinqToLcs.GetLcs(queryExpression, Utils.GetDefaultView(typeof(Кошка)));

            Assert.True(Equals(expected, actual));
        }
Ejemplo n.º 2
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);
            }
        }
        public void TestСhainWhere()
        {
            foreach (IDataService dataService in DataServices)
            {
                // Arrange.
                var ds = (SQLDataService)dataService;

                ТипПороды типПороды = new ТипПороды()
                {
                    Название = "Простая", ДатаРегистрации = DateTime.Now
                };

                Порода породаДикая = new Порода()
                {
                    Название = "Дикая"
                };
                Порода породаПерсидская = new Порода()
                {
                    Название = "Персидская", ТипПороды = типПороды
                };
                Порода породаБезПороды = new Порода()
                {
                    Название = "БезПороды", Иерархия = породаДикая
                };

                ds.UpdateObject(породаДикая);
                ds.UpdateObject(породаПерсидская);
                ds.UpdateObject(породаБезПороды);

                var вася = new Кошка
                {
                    Кличка       = "Вася",
                    ДатаРождения = (NullableDateTime)DateTime.Now,
                    Порода       = породаПерсидская,
                    Тип          = ТипКошки.Домашняя,
                    Агрессивная  = false
                };
                var кузя = new Кошка
                {
                    Кличка       = "Кузя",
                    ДатаРождения = (NullableDateTime)DateTime.Now,
                    Порода       = породаПерсидская,
                    Тип          = ТипКошки.Дикая,
                    Агрессивная  = false
                };

                ds.UpdateObject(вася);
                ds.UpdateObject(кузя);

                // Act.
                var iqueryable =
                    ds.Query <Кошка>(Кошка.Views.КошкаE)
                    .Where(к => к.Агрессивная)
                    .Where(cat => cat.Порода.__PrimaryKey.Equals(породаПерсидская.__PrimaryKey));
                Кошка агрессивнаяКошка = iqueryable.FirstOrDefault();

                // Assert.
                // В тестовом наборе нет агрессивных кошек, следовательно FirstOrDefault должен вернуть null.
                Assert.Equal(null, агрессивнаяКошка);
            }
        }