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()); }
public void Person_Level_Query_Returns_Single_Column() { var panel = MockPanel.Panel(); var ob = new SubPanelSqlSet(panel, Options); var sql = ob.ToString(); var cols = GetColumns(sql); var col = StripSetAlias(cols[0]).Trim(); Assert.Single(cols); Assert.Equal(Options.FieldPersonId, col); }
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); }
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()); }
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); }
public void Dataset_Joined_Query_Includes_Salt() { var panel = MockPanel.Panel(); panel.SubPanels.Add(new SubPanel { Index = 1, PanelIndex = 0, IncludeSubPanel = true, PanelItems = new[] { MockPanel.HmcEnc() }, JoinSequence = new SubPanelJoinSequence { SequenceType = SequenceType.Encounter } }); var ob = new DatasetJoinedSqlSet(panel, Options); var sql = ob.ToString(); Assert.Equal(sql, sql); }
public void Sequence_Level_Subquery_Returns_Four_Columns() { var panel = MockPanel.Panel(); panel.SubPanels.Add(new SubPanel { Index = 1, PanelIndex = 0, IncludeSubPanel = true, PanelItems = new[] { MockPanel.HmcEnc() }, JoinSequence = new SubPanelJoinSequence { SequenceType = SequenceType.Encounter } }); var ob = new PanelSequentialSqlSet(panel, Options); var sql = ob.ToString(); var colsStr = GetContentBetween(sql, "(SELECT", "FROM Encounter"); var cols = colsStr.Trim().Split(',', StringSplitOptions.RemoveEmptyEntries); Assert.Equal(4, cols.Length); }
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()); }
public void Sequence_Level_Query_Returns_Single_Column() { var panel = MockPanel.Panel(); panel.SubPanels.Add(new SubPanel { Index = 1, PanelIndex = 0, IncludeSubPanel = true, PanelItems = new[] { MockPanel.HmcEnc() }, JoinSequence = new SubPanelJoinSequence { SequenceType = SequenceType.Encounter } }); var ob = new PanelSequentialSqlSet(panel, Options); var sql = ob.ToString(); var cols = GetColumns(sql); var col = StripSetAlias(cols[0]); Assert.Single(cols); Assert.Equal(Options.FieldPersonId, col); }
public void Dummy_EventId_Field_Added_If_Absent() { var panel = MockPanel.Panel(); panel.SubPanels.Add(new SubPanel { Index = 1, PanelIndex = 0, IncludeSubPanel = true, PanelItems = new[] { MockPanel.HmcEnc() }, JoinSequence = new SubPanelJoinSequence { SequenceType = SequenceType.Encounter } }); var ob = new PanelSequentialSqlSet(panel, Options); var sql = ob.ToString(); var colsStr = GetContentBetween(sql, "(SELECT", "FROM Encounter"); var cols = colsStr.Trim().Split(',', StringSplitOptions.RemoveEmptyEntries); var defaultNoField = "'' AS EventId"; var included = cols.Any(c => c.Trim().Equals(defaultNoField)); Assert.True(included); }