public void SimpleComposableFilterGenericFilterReferenced() { using (var container = new RhetosTestContainer()) { container.Resolve <ISqlExecuter>().ExecuteSql(new[] { "DELETE FROM TestFilter.CombinedFilters", "DELETE FROM TestFilter.Simple" }); var repository = container.Resolve <Common.DomRepository>(); var refEnt = new TestFilter.Simple { Name = "test" }; repository.TestFilter.Simple.Insert(new[] { refEnt }); var s1 = new TestFilter.CombinedFilters { Name = "Abeceda", SimpleID = refEnt.ID }; var s2 = new TestFilter.CombinedFilters { Name = "abeceda" }; repository.TestFilter.CombinedFilters.Insert(new[] { s1, s2 }); // Containing "ece" and referenced object name contains "es" var filteredByContainsWithGenericFilter = ExecuteCommand(new ReadCommandInfo { DataSource = "TestFilter.CombinedFilters", Filters = new[] { new FilterCriteria(new TestFilter.ComposableFilterByContains { Pattern = "ece" }), new FilterCriteria("Simple.Name", "Contains", "es") }, ReadRecords = true, ReadTotalCount = true }, container); Assert.AreEqual(1, filteredByContainsWithGenericFilter.Records.Length); } }
public void ArrayFilterBrowse() { using (var container = new RhetosTestContainer()) { container.Resolve <ISqlExecuter>().ExecuteSql(new[] { "DELETE FROM TestFilter.CombinedFilters", "DELETE FROM TestFilter.Simple" }); var repository = container.Resolve <Common.DomRepository>(); var parentA = new TestFilter.Simple { Name = "PA" }; var parentB = new TestFilter.Simple { Name = "PB" }; repository.TestFilter.Simple.Insert(new[] { parentA, parentB }); var childA = new TestFilter.CombinedFilters { Name = "CA", SimpleID = parentA.ID }; var childB = new TestFilter.CombinedFilters { Name = "CB", SimpleID = parentB.ID }; var childNull = new TestFilter.CombinedFilters { Name = "CN", SimpleID = null }; repository.TestFilter.CombinedFilters.Insert(new[] { childA, childB, childNull }); container.Resolve <Common.ExecutionContext>().EntityFrameworkContext.ClearCache(); Assert.AreEqual("CA PA", ReportFilteredBrowse(container, new QueryDataSourceCommandInfo { Filter = new TestFilter.ComposableFilterBrowseLoader { Pattern = "a" }, GenericFilter = new FilterCriteria[] { new FilterCriteria { Property = "Simple.Name", Operation = "Contains", Value = "P" } } // TODO: "Contains" is executed in C#, so the value is case sensitive. })); // TODO: NullReferenceException because "Simple.Name" FilterCriteria is executed in C# instead of the database. Assert.AreEqual("CA PA, CB PB", ReportFilteredBrowse(container, new QueryDataSourceCommandInfo { Filter = new TestFilter.ComposableFilterBrowseLoader { Pattern = "c" }, GenericFilter = new FilterCriteria[] { new FilterCriteria { Property = "Simple.Name", Operation = "Contains", Value = "P" } } // TODO: "Contains" is executed in C#, so the value is case sensitive. })); } }
public void ArrayFilterBrowse() { using (var container = new RhetosTestContainer()) { container.Resolve <ISqlExecuter>().ExecuteSql(new[] { "DELETE FROM TestFilter.CombinedFilters", "DELETE FROM TestFilter.Simple" }); var repository = container.Resolve <Common.DomRepository>(); var parentA = new TestFilter.Simple { Name = "PA" }; var parentB = new TestFilter.Simple { Name = "PB" }; repository.TestFilter.Simple.Insert(new[] { parentA, parentB }); var childA = new TestFilter.CombinedFilters { Name = "CA", SimpleID = parentA.ID }; var childB = new TestFilter.CombinedFilters { Name = "CB", SimpleID = parentB.ID }; var childNull = new TestFilter.CombinedFilters { Name = "CN", SimpleID = null }; repository.TestFilter.CombinedFilters.Insert(new[] { childA, childB, childNull }); Assert.AreEqual("CA PA", ReportFilteredBrowse(container, ReadCommandWithFilters( new TestFilter.ComposableFilterBrowseLoader { Pattern = "a" }, new FilterCriteria { Property = "Simple.Name", Operation = "Contains", Value = "p" }))); // This test just documents the current behavior, this is not an intended feature. // NullReferenceException because "Simple.Name" FilterCriteria is executed in C# instead of the database. TestUtility.ShouldFail <NullReferenceException>(() => ReportFilteredBrowse(container, ReadCommandWithFilters( new TestFilter.ComposableFilterBrowseLoader { Pattern = "c" }, new FilterCriteria { Property = "Simple.Name", Operation = "Contains", Value = "p" }))); } }
public void SimpleComposableFilterCaseInsensitive() { using (var container = new RhetosTestContainer()) { container.Resolve <ISqlExecuter>().ExecuteSql(new[] { "DELETE FROM TestFilter.CombinedFilters" }); var repository = container.Resolve <Common.DomRepository>(); var s1 = new TestFilter.CombinedFilters { Name = "Abeceda" }; var s2 = new TestFilter.CombinedFilters { Name = "abeceda" }; repository.TestFilter.CombinedFilters.Insert(new[] { s1, s2 }); var filteredByContainsJustComposable = ExecuteCommand(new ReadCommandInfo { DataSource = "TestFilter.CombinedFilters", Filters = new[] { new FilterCriteria(new TestFilter.ComposableFilterByContains { Pattern = "Abec" }) }, ReadRecords = true, ReadTotalCount = true }, container); var filteredByContainsWithGenericFilter = ExecuteCommand(new ReadCommandInfo { DataSource = "TestFilter.CombinedFilters", Filters = new[] { new FilterCriteria(new TestFilter.ComposableFilterByContains { Pattern = "Abec" }), new FilterCriteria("Name", "Contains", "Abec") }, ReadRecords = true, ReadTotalCount = true }, container); // filter doubled should return same results as just one Composable filter Assert.AreEqual(filteredByContainsJustComposable.Records.Length, filteredByContainsWithGenericFilter.Records.Length); Assert.AreEqual(2, filteredByContainsWithGenericFilter.Records.Length); } }
public void ComposableFilterBrowse() { using (var container = new RhetosTestContainer()) { container.Resolve <ISqlExecuter>().ExecuteSql(new[] { "DELETE FROM TestFilter.CombinedFilters", "DELETE FROM TestFilter.Simple" }); var repository = container.Resolve <Common.DomRepository>(); var parentA = new TestFilter.Simple { Name = "PA" }; var parentB = new TestFilter.Simple { Name = "PB" }; repository.TestFilter.Simple.Insert(new[] { parentA, parentB }); var childA = new TestFilter.CombinedFilters { Name = "CA", SimpleID = parentA.ID }; var childB = new TestFilter.CombinedFilters { Name = "CB", SimpleID = parentB.ID }; var childNull = new TestFilter.CombinedFilters { Name = "CN", SimpleID = null }; repository.TestFilter.CombinedFilters.Insert(new[] { childA, childB, childNull }); Assert.AreEqual("CA PA", ReportFilteredBrowse(container, ReadCommandWithFilters( new TestFilter.SimpleNameA()))); Assert.AreEqual("CA PA", ReportFilteredBrowse(container, ReadCommandWithFilters( new FilterCriteria { Property = "Simple.Name", Operation = "Contains", Value = "a" }))); Assert.AreEqual("CA PA", ReportFilteredBrowse(container, ReadCommandWithFilters( new TestFilter.SimpleNameA(), new FilterCriteria { Property = "Simple.Name", Operation = "Contains", Value = "a" }))); Assert.AreEqual("CN null", ReportFilteredBrowse(container, ReadCommandWithFilters( new FilterCriteria { Property = "Name", Operation = "Contains", Value = "n" }))); Assert.AreEqual("CN null", ReportFilteredBrowse(container, ReadCommandWithFilters( new TestFilter.NameN()))); Assert.AreEqual("", ReportFilteredBrowse(container, ReadCommandWithFilters( new TestFilter.NameN(), new FilterCriteria { Property = "Simple.Name", Operation = "Contains", Value = "p" }))); Assert.AreEqual("", ReportFilteredBrowse(container, ReadCommandWithFilters( new TestFilter.NameN(), new FilterCriteria { Property = "Simple.Name", Operation = "Contains", Value = "p" }))); Assert.AreEqual("CA PA", ReportFilteredBrowse(container, ReadCommandWithFilters( new TestFilter.ComposableFilterBrowseLoader { Pattern = "a" }))); } }