Beispiel #1
0
        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);
            }
        }
Beispiel #2
0
        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.
                }));
            }
        }
Beispiel #3
0
        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"
                })));
            }
        }
Beispiel #4
0
        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);
            }
        }
Beispiel #5
0
        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"
                })));
            }
        }