Пример #1
0
        public void Where_Clause_Added_If_Panel_Has_Where()
        {
            var panel = MockPanel.Panel();
            var pi    = MockPanel.EdEnc();

            /*
             * No WHERE clause
             */
            pi.Concept.SqlSetWhere = null;
            panel.SubPanels.ElementAt(0).PanelItems = new[] { pi };
            var ob = new SubPanelSqlSet(panel, Options);

            Assert.DoesNotContain("WHERE", ob.ToString());

            /*
             * One WHERE clause
             */
            pi.Concept.SqlSetWhere = "1 = 1";
            ob = new SubPanelSqlSet(panel, Options);

            Assert.Contains("WHERE 1 = 1", ob.ToString());

            /*
             * Two WHERE clauses
             */
            pi.Concept.SqlFieldNumeric = "Num";
            pi.NumericFilter           = new NumericFilter {
                Filter = new[] { 5.0M }, FilterType = NumericFilterType.EqualTo
            };
            ob = new SubPanelSqlSet(panel, Options);

            Assert.Contains("WHERE 1 = 1 AND Num = 5.0", ob.ToString());
        }
Пример #2
0
        public void Multiple_Panel_Items_In_Subpanel_Returns_Union()
        {
            var panel = MockPanel.Panel();

            panel.SubPanels.ElementAt(0).PanelItems = new List <PanelItem>()
            {
                MockPanel.EdEnc(), MockPanel.HmcEnc()
            };
            var ob  = new SubPanelSqlSet(panel, Options);
            var sql = ob.ToString();

            Assert.Contains("UNION ALL", sql);
        }
Пример #3
0
        public void Alias_Placeholder_Filled()
        {
            var panel         = MockPanel.Panel();
            var pi            = MockPanel.EdEnc();
            var expectedAlias = "_S000";

            pi.Concept.SqlSetWhere = "@.X != @.Y";
            panel.SubPanels.ElementAt(0).PanelItems = new[] { pi };

            var ob = new SubPanelSqlSet(panel, Options);

            Assert.Contains($"{expectedAlias}.X != {expectedAlias}.Y", ob.ToString());
        }
Пример #4
0
        public void EventId_Field_Included_If_Present()
        {
            var panel  = MockPanel.Panel();
            var field  = "EventField";
            var field2 = "EventishField";
            var pi     = MockPanel.EdEnc();
            var pi2    = MockPanel.HmcEnc();

            pi.Index = 0;
            pi.Concept.IsEventBased  = true;
            pi.Concept.SqlFieldEvent = $"{Options.Alias}.{field}";

            pi2.Index                 = 0;
            pi2.SubPanelIndex         = 1;
            pi2.Concept.IsEventBased  = true;
            pi2.Concept.SqlFieldEvent = $"{Options.Alias}.{field2}";

            panel.SubPanels.ElementAt(0).PanelItems = new[] { pi };
            panel.SubPanels.Add(new SubPanel
            {
                Index           = 1,
                PanelIndex      = 0,
                IncludeSubPanel = true,
                PanelItems      = new[] { pi2 },
                JoinSequence    = new SubPanelJoinSequence {
                    SequenceType = SequenceType.Event
                }
            });

            var ob             = new PanelSequentialSqlSet(panel, Options);
            var sql            = ob.ToString();
            var expectedAlias1 = "_S000";
            var expectedAlias2 = "_S010";

            /*
             * Event fields added with alias.
             */
            Assert.Contains($"{expectedAlias1}.{field}", sql);
            Assert.Contains($"{expectedAlias2}.{field2}", sql);

            /*
             * Event fields inherited into parent set and join with parent alias.
             */
            var expectedParentAlias1 = "_T0";
            var expectedParentAlias2 = "_T1";

            Assert.Contains($"{expectedParentAlias1}.{field} = {expectedParentAlias2}.{field2}", sql);
        }
Пример #5
0
        public void Specialization_Where_Clauses_Added()
        {
            var panel = MockPanel.Panel();
            var pi    = MockPanel.EdEnc();
            var specs = new List <ConceptSpecialization>
            {
                new ConceptSpecialization {
                    Id = Guid.NewGuid(), SpecializationGroupId = 1, SqlSetWhere = "2 = 2"
                }
            };

            pi.Concept.SqlSetWhere = null;
            panel.SubPanels.ElementAt(0).PanelItems = new[] { pi };
            pi.Specializations = specs;

            /*
             * One specialization
             */
            var ob = new SubPanelSqlSet(panel, Options);

            Assert.Contains("WHERE 2 = 2", ob.ToString());

            /*
             * Two specializations
             */
            specs.Add(new ConceptSpecialization {
                Id = Guid.NewGuid(), SpecializationGroupId = 2, SqlSetWhere = "'A' = 'A'"
            });
            ob = new SubPanelSqlSet(panel, Options);
            Assert.Contains("WHERE 2 = 2 AND 'A' = 'A'", ob.ToString());

            /*
             * Two specializations with a normal WHERE clause
             */
            pi.Concept.SqlSetWhere = "1 = 1";
            ob = new SubPanelSqlSet(panel, Options);

            Assert.Contains("WHERE 1 = 1 AND 2 = 2 AND 'A' = 'A'", ob.ToString());
        }