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))); }
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()); }
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"); }
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()); }
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()); }
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()); }
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()); }
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"); }
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; } }