private static QueryDataSourceCommandResult ExecuteCommand(QueryDataSourceCommandInfo commandInfo, RhetosTestContainer container) { var commands = container.Resolve <IIndex <Type, IEnumerable <ICommandImplementation> > >(); var readCommand = (QueryDataSourceCommand)commands[typeof(QueryDataSourceCommandInfo)].Single(); return((QueryDataSourceCommandResult)readCommand.Execute(commandInfo).Data.Value); }
public void Filter() { using (var container = new RhetosTestContainer()) { container.Resolve <ISqlExecuter>().ExecuteSql(new[] { "DELETE FROM TestQueryDataStructureCommand.Source;" }); container.Resolve <ISqlExecuter>().ExecuteSql(new[] { "a1", "b1", "b2", "c1" } .Select(name => "INSERT INTO TestQueryDataStructureCommand.Source (Name) SELECT N'" + name + "';")); var info = new QueryDataSourceCommandInfo { DataSource = "TestQueryDataStructureCommand.Source" }; Assert.AreEqual("a1, b1, b2, c1 /4", ReportCommandResult2(container, info, true)); info.Filter = new TestQueryDataStructureCommand.FilterByPrefix { Prefix = "b" }; Assert.AreEqual("b1, b2 /2", ReportCommandResult2(container, info, true)); info.OrderByProperty = "Name"; info.OrderDescending = true; Assert.AreEqual("b2, b1 /2", ReportCommandResult2(container, info)); info.PageNumber = 1; info.RecordsPerPage = 1; Assert.AreEqual("b2 /2", ReportCommandResult2(container, info)); info.GenericFilter = new[] { new FilterCriteria { Property = "Name", Operation = "Contains", Value = "1" } }; Assert.AreEqual("b1 /1", ReportCommandResult2(container, info)); } }
public void QueryDataSourceCommand_OutsideInterface() { var entityRepos = new ImplicitQueryDataSourceCommandRepository(); var genericRepos = NewRepos(entityRepos); var command = new QueryDataSourceCommandInfo { GenericFilter = new[] { new FilterCriteria { Property = "Name", Operation = "StartsWith", Value = "b" } }, OrderByProperty = "Data", RecordsPerPage = 3, PageNumber = 2 }; Assert.AreEqual("b4, b5 / 5", Dump(genericRepos.ExecuteQueryDataSourceCommand(command))); command = new QueryDataSourceCommandInfo { GenericFilter = new[] { new FilterCriteria { Property = "Data", Operation = "Equal", Value = "xxx" } }, OrderByProperty = "Name", RecordsPerPage = 3, PageNumber = 2 }; Assert.AreEqual(" / 0", Dump(genericRepos.ExecuteQueryDataSourceCommand(command))); }
public static QueryDataSourceCommandResult ExecuteQueryDataSourceCommand( this GenericRepository <IEntity> genericRepository, QueryDataSourceCommandInfo queryDataSourceCommandInfo) { queryDataSourceCommandInfo.DataSource = typeof(ServerCommandsUtilityTest.SimpleEntity).FullName; var commandInfo = queryDataSourceCommandInfo.ToReadCommandInfo(); var serverCommandsUtility = new ServerCommandsUtility(new ConsoleLogProvider(), new ApplyFiltersOnClientRead(), new DomainObjectModelMock()); var commandResult = serverCommandsUtility.ExecuteReadCommand(commandInfo, genericRepository); return(QueryDataSourceCommandResult.FromReadCommandResult(commandResult)); }
private static string ReportFilteredBrowse(RhetosTestContainer container, QueryDataSourceCommandInfo queryDataSourceCommandInfo) { queryDataSourceCommandInfo.DataSource = "TestFilter.ComposableFilterBrowse"; return(TestUtility.DumpSorted( ExecuteCommand(queryDataSourceCommandInfo, container).Records, item => { var x = (TestFilter.ComposableFilterBrowse)item; return x.Name + " " + (x.DebugInfoSimpleName ?? "null"); })); }
public void Entity() { using (var container = new RhetosTestContainer()) { InitializeData(container); var info = new QueryDataSourceCommandInfo { DataSource = "TestQueryDataStructureCommand.E" }; Assert.AreEqual("a, b, c, d, e /5", ReportCommandResult(container, info, true)); } }
public void QueryDataSourceCommand() { var entityRepos = new ImplicitQueryDataSourceCommandRepository(); var genericRepos = NewRepos(entityRepos); var command = new QueryDataSourceCommandInfo { GenericFilter = new[] { new FilterCriteria { Property = "Name", Operation = "StartsWith", Value = "b" } }, OrderByProperty = "Name", RecordsPerPage = 3, PageNumber = 2 }; Assert.AreEqual("a1, b1, b2 / 10", Dump(NewRepos(new ExplicitQueryDataSourceCommandRepository()).ExecuteQueryDataSourceCommand(command))); Assert.AreEqual(0, entityRepos.DropQueryCount()); Assert.AreEqual("b4, b5 / 5", Dump(genericRepos.ExecuteQueryDataSourceCommand(command))); Assert.AreEqual(2, entityRepos.DropQueryCount()); // Paging should result with two queries: selecting items and count. command = new QueryDataSourceCommandInfo(); Assert.AreEqual("a1, b1, b2, b3, b4, b5 / 6", Dump(genericRepos.ExecuteQueryDataSourceCommand(command))); Assert.AreEqual(1, entityRepos.DropQueryCount()); // Without paging, there is no need for two queries. command = new QueryDataSourceCommandInfo { Filter = "1" }; Assert.AreEqual("a1, b1 / 2", Dump(genericRepos.ExecuteQueryDataSourceCommand(command))); Assert.AreEqual(1, entityRepos.DropQueryCount()); // Without paging, there is no need for two queries. command = new QueryDataSourceCommandInfo { Filter = "1", GenericFilter = new[] { new FilterCriteria { Property = "Name", Operation = "StartsWith", Value = "b" } } }; Assert.AreEqual("b1 / 1", Dump(genericRepos.ExecuteQueryDataSourceCommand(command))); Assert.AreEqual(1, entityRepos.DropQueryCount()); // Without paging, there is no need for two queries. command = new QueryDataSourceCommandInfo { Filter = "1", GenericFilter = new[] { new FilterCriteria { Filter = "System.String", Value = "b" } } }; Assert.AreEqual("b1 / 1", Dump(genericRepos.ExecuteQueryDataSourceCommand(command))); Assert.AreEqual(1, entityRepos.DropQueryCount()); // Without paging, there is no need for two queries. command = new QueryDataSourceCommandInfo { Filter = "b", PageNumber = 2, RecordsPerPage = 2, OrderByProperty = "Name" }; Assert.AreEqual("b3, b4 / 5", Dump(genericRepos.ExecuteQueryDataSourceCommand(command))); Assert.AreEqual(1, entityRepos.DropQueryCount()); // Enumerable filter will cause GenericRepository to materialize of the query, so it will be executed only once even though the paging is used. }
public void Ordering() { using (var container = new RhetosTestContainer()) { InitializeData(container); var info = new QueryDataSourceCommandInfo { DataSource = "TestQueryDataStructureCommand.E", OrderByProperty = "Name", OrderDescending = true }; Assert.AreEqual("e, d, c, b, a /5", ReportCommandResult(container, info)); } }
public void GenericFilter() { using (var container = new RhetosTestContainer()) { InitializeData(container); var info = new QueryDataSourceCommandInfo { DataSource = "TestQueryDataStructureCommand.E", GenericFilter = new [] { new FilterCriteria { Property = "Name", Operation = "NotEqual", Value = "c" } } }; Assert.AreEqual("a, b, d, e /4", ReportCommandResult(container, info, true)); } }
public void PagingWithoutOrder() { using (var container = new RhetosTestContainer()) { InitializeData(container); var info = new QueryDataSourceCommandInfo { DataSource = "TestQueryDataStructureCommand.E", RecordsPerPage = 3, PageNumber = 2 }; TestUtility.ShouldFail(() => ReportCommandResult(container, info), "Sort order must be set if paging is used"); } }
public void QueryDataSourceCommand_Null() { var entityRepos = new ImplicitQueryDataSourceCommandRepository(); var genericRepos = NewRepos(entityRepos); var command = new QueryDataSourceCommandInfo { GenericFilter = new[] { new FilterCriteria { Property = "Data", Operation = "Equal", Value = null } }, OrderByProperty = "Name", RecordsPerPage = 3, PageNumber = 2 }; Assert.AreEqual("b3, b4, b5 / 6", Dump(genericRepos.ExecuteQueryDataSourceCommand(command))); }
private static string ReportCommandResult(RhetosTestContainer container, QueryDataSourceCommandInfo info, bool sort = false) { var commands = container.Resolve <IIndex <Type, IEnumerable <ICommandImplementation> > >(); var queryDataSourceCommand = (QueryDataSourceCommand)commands[typeof(QueryDataSourceCommandInfo)].Single(); var result = (QueryDataSourceCommandResult)queryDataSourceCommand.Execute(info).Data.Value; var items = ((IEnumerable <TestQueryDataStructureCommand.E>)result.Records).Select(item => item.Name); if (sort) { items = items.OrderBy(x => x); } var report = string.Join(", ", items) + " /" + result.TotalRecords; Console.WriteLine(report); return(report); }
public void GenericFilterWithPaging() { using (var container = new RhetosTestContainer()) { InitializeData(container); var info = new QueryDataSourceCommandInfo { DataSource = "TestQueryDataStructureCommand.E", GenericFilter = new [] { new FilterCriteria { Property = "Name", Operation = "NotEqual", Value = "c" } }, RecordsPerPage = 2, PageNumber = 2, OrderByProperty = "Name" }; Assert.AreEqual("d, e /4", ReportCommandResult(container, info)); } }