コード例 #1
0
        public void TestOrderBy()
        {
            E.Test t = Assert.Single(Assert.ScriptCalled(_databaseFixture, Query.Select, () => _queryable.ToList().Where(x => x.Id == 1)));

            Assert.ScriptCalled(_databaseFixture, Query.OrderBy, () =>
                                Assert.Collection(_subQueryable.Where(x => x.Test == t).OrderBy(x => x.Second),
                                                  x => Assert.Equal(10, x.Id),
                                                  x => Assert.Equal(9, x.Id),
                                                  x => Assert.Equal(8, x.Id),
                                                  x => Assert.Equal(7, x.Id),
                                                  x => Assert.Equal(6, x.Id),
                                                  x => Assert.Equal(5, x.Id),
                                                  x => Assert.Equal(4, x.Id),
                                                  x => Assert.Equal(3, x.Id),
                                                  x => Assert.Equal(2, x.Id),
                                                  x => Assert.Equal(1, x.Id)));

            Assert.ScriptCalled(_databaseFixture, Query.OrderByDescending, () =>
                                Assert.Collection(_subQueryable.Where(x => x.Test == t).OrderByDescending(x => x.Second),
                                                  x => Assert.Equal(1, x.Id),
                                                  x => Assert.Equal(2, x.Id),
                                                  x => Assert.Equal(3, x.Id),
                                                  x => Assert.Equal(4, x.Id),
                                                  x => Assert.Equal(5, x.Id),
                                                  x => Assert.Equal(6, x.Id),
                                                  x => Assert.Equal(7, x.Id),
                                                  x => Assert.Equal(8, x.Id),
                                                  x => Assert.Equal(9, x.Id),
                                                  x => Assert.Equal(10, x.Id)));
        }
コード例 #2
0
        public void TestDeleteForeignObjectKeyEntities()
        {
            E.Test testKey = Assert.ScriptCalled(_databaseFixture, Query.Select, () => _databaseFixture.ObjectProvider.GetQueryable <E.Test>().ForceLoad().ToList()).Where(x => x.Id == 1).First();

            E.ForeignObjectKey entity = _databaseFixture.ObjectProvider.GetQueryable <E.ForeignObjectKey>().Where(x => x.Test == testKey).FirstOrDefault();
            Assert.NotNull(entity);
            _databaseFixture.ObjectProvider.GetQueryable <E.ForeignObjectKey>().Where(x => x == entity).Delete();

            Assert.ScriptCalled(_databaseFixture, Query.DeleteForeignObjectKeyEntity, () => _databaseFixture.ObjectProvider.GetQueryable <E.ForeignObjectKey>().Where(x => x == entity).Save());
        }
コード例 #3
0
        public void TestForeignObjectExpression(Query query, Func <IQueryable <E.SubTest>, E.Test, IQueryable <E.SubTest> > function, string queryPattern, IEnumerable <object[]> values)
        {
            _output.WriteLine($"Test {query} expression");

            E.Test t = Assert.Single(Assert.ScriptCalled(_databaseFixture, Query.Select, () => _queryable.ToList().Where(x => x.Id == 1)));

            List <E.SubTest> subResult = Assert.ScriptCalled(_databaseFixture, query, () => function(_subQueryable, t).ToList());

            Assert.Equal(values.Count(), subResult.Count);
            _output.WriteLine("... Done");
        }
コード例 #4
0
        public void TestUpdateForeignObjectKeyEntities()
        {
            E.Test testKey = Assert.ScriptCalled(_databaseFixture, Query.Select, () => _databaseFixture.ObjectProvider.GetQueryable <E.Test>().ForceLoad().ToList()).Where(x => x.Id == 1).First();
            string text    = FirstRandomText;

            _databaseFixture.SetResult(Query.UpdateForeignObjectKeyEntity, new[] { new object[] { testKey.Id, text } });

            E.ForeignObjectKey entity = _databaseFixture.ObjectProvider.GetQueryable <E.ForeignObjectKey>().Where(x => x.Test == testKey).ForceLoad().FirstOrDefault();
            Assert.NotNull(entity);
            entity.Value = text;

            Assert.ScriptCalled(_databaseFixture, Query.UpdateForeignObjectKeyEntity, () => _databaseFixture.ObjectProvider.GetQueryable <E.ForeignObjectKey>().Where(x => x == entity).Save());
        }
コード例 #5
0
        public void TestDeleteSingle()
        {
            E.Test entity = Assert.ScriptCalled(_databaseFixture, Query.Select, () => Assert.Single(_queryable.ToList().Where(x => x.Id == 1)));

            // Quick fix to prevent the test to run in to issue #14 problem, needs to be removed in the future.
            entity.SubTests.ToList().Select(x => x.Test).ToList();

            IQueryable <E.Test> queryable = _databaseFixture.ObjectProvider.GetQueryable <E.Test>().Where(x => x == entity);

            queryable.Delete();

            Assert.ScriptCalled(_databaseFixture, Query.Delete, () => queryable.Save());
        }
コード例 #6
0
        public void TestUpdate()
        {
            E.Test entity = Assert.ScriptCalled(_databaseFixture, Query.Select, () => _queryable.ToList().First());

            string oldString = entity.Description;
            string newString = oldString == FirstRandomText ? SecondRandomText : FirstRandomText;

            _databaseFixture.SetResult(Query.Update, new[] { new object[] { entity.Id, entity.Name, newString } });

            Assert.PropertyChanged((INotifyPropertyChanged)entity, nameof(E.Test.Description),
                                   () => entity.Description = newString);

            Assert.ScriptCalled(_databaseFixture, Query.Update, () => _databaseFixture.ObjectProvider.GetQueryable <E.Test>().Where(x => x == entity).Save());
        }
コード例 #7
0
        public void TestInsertForeignObjectKeyChainEntity()
        {
            E.Test             testKey          = Assert.ScriptCalled(_databaseFixture, Query.Select, () => _databaseFixture.ObjectProvider.GetQueryable <E.Test>().ForceLoad().ToList()).Where(x => x.Id == 1).First();
            E.SubTest          subTestKey       = _subQueryable.Where(x => x.Test == testKey).ToList().FirstOrDefault();
            E.ForeignObjectKey foreignObjectKey = Assert.ScriptCalled(_databaseFixture, Query.SelectForeignObjectKeyEntity, () => _databaseFixture.ObjectProvider.GetQueryable <E.ForeignObjectKey>().Where(x => x.Test == testKey).ForceLoad().ToList()).First();
            string             text             = FirstRandomText;

            _databaseFixture.SetResult(Query.InsertForeignObjectKeyChainEntity, new[] { new object[] { foreignObjectKey.Test.Id, subTestKey.Id, text } });

            E.ForeignObjectKeyChain entity = _databaseFixture.ObjectProvider.CreateObject <E.ForeignObjectKeyChain>();
            Assert.NotNull(entity);
            entity.ForeignObjectKey = foreignObjectKey;
            entity.SubTest          = subTestKey;
            entity.Value            = text;

            Assert.ScriptCalled(_databaseFixture, Query.InsertForeignObjectKeyChainEntity, () => _databaseFixture.ObjectProvider.GetQueryable <E.ForeignObjectKeyChain>().Where(x => x == entity).Save());
        }
コード例 #8
0
        public void TestInsert()
        {
            List <E.Test> cachedItems = Assert.ScriptCalled(_databaseFixture, Query.Select, () => _databaseFixture.ObjectProvider.GetQueryable <E.Test>().ForceLoad().ToList());
            int           newId       = cachedItems.Count == 0 ? 1 : cachedItems.Max(x => x.Id) + 1;
            string        name        = $"Testname {DateTime.Now:g}";
            string        description = FirstRandomText;

            _databaseFixture.SetResult(Query.Insert, new[] { new object[] { newId, name, description } });

            E.Test entity = _databaseFixture.ObjectProvider.CreateObject <E.Test>();
            Assert.NotNull(entity);
            entity.Name        = name;
            entity.Description = description;

            _output.WriteLine($"Entity created, Name: {entity.Name}");

            Assert.PropertyChanged((INotifyPropertyChanged)entity, nameof(E.Test.Id),
                                   () => Assert.ScriptCalled(_databaseFixture, Query.Insert, () => _databaseFixture.ObjectProvider.GetQueryable <E.Test>().Where(x => x == entity).Save()));

            Assert.Equal(entity.Id, newId);
            _output.WriteLine($"First entity saved, new Id: {entity.Id} -> passed");
        }
コード例 #9
0
        public void TestSelect()
        {
            List <E.Test> result = Assert.ScriptCalled(_databaseFixture, Query.Select, () => _queryable.ToList()).OrderBy(x => x.Id).ToList();

            E.Test t = result.First();

            IQueryable <E.SubTest> queryable       = _subQueryable.Where(x => x.Test == t);
            IQueryable <string>    selectQueryable = queryable.Select(x => x.Name);

            List <string>    selectResult = selectQueryable.ToList();
            List <E.SubTest> subResult    = queryable.ToList();

            selectResult.Sort();

            Assert.Collection(selectResult,
                              x => Assert.Equal("SubEntity0", x),
                              x => Assert.Equal("SubEntity10", x),
                              x => Assert.Equal("SubEntity12", x),
                              x => Assert.Equal("SubEntity14", x),
                              x => Assert.Equal("SubEntity16", x),
                              x => Assert.Equal("SubEntity18", x),
                              x => Assert.Equal("SubEntity2", x),
                              x => Assert.Equal("SubEntity4", x),
                              x => Assert.Equal("SubEntity6", x),
                              x => Assert.Equal("SubEntity8", x));

            int removeCount = 0;

            NotifyCollectionChangedEventHandler collectionChangedHandler = (s, e) =>
            {
                if (e.Action == NotifyCollectionChangedAction.Remove)
                {
                    removeCount++;
                }
            };

            try
            {
                ((INotifyCollectionChanged)selectQueryable).CollectionChanged += collectionChangedHandler;

                subResult.First().Test = result[1];

                Assert.Equal(1, removeCount);

                selectResult = selectQueryable.ToList();
                selectResult.Sort();

                Assert.Collection(selectResult,
                                  x => Assert.Equal("SubEntity10", x),
                                  x => Assert.Equal("SubEntity12", x),
                                  x => Assert.Equal("SubEntity14", x),
                                  x => Assert.Equal("SubEntity16", x),
                                  x => Assert.Equal("SubEntity18", x),
                                  x => Assert.Equal("SubEntity2", x),
                                  x => Assert.Equal("SubEntity4", x),
                                  x => Assert.Equal("SubEntity6", x),
                                  x => Assert.Equal("SubEntity8", x));

                _subQueryable.DropChanges();
            }
            finally
            {
                ((INotifyCollectionChanged)selectQueryable).CollectionChanged -= collectionChangedHandler;
            }
        }