public void GetCteAliasTest() { const string Prefix = "sub_"; var queryGenerator = new SearchQueryGeneratorTest(); // Act var result = queryGenerator.GetCteAlias_Public(Field1Name); // Assert Assert.AreEqual(result, Prefix + "0"); Assert.AreEqual(queryGenerator.CteAliases.Count, 1); // Act result = queryGenerator.GetCteAlias_Public(Field2Name); // Assert Assert.AreEqual(result, Prefix + "1"); Assert.AreEqual(queryGenerator.CteAliases.Count, 2); // Act result = queryGenerator.GetCteAlias_Public(Field1Name); // Assert Assert.AreEqual(result, Prefix + "0"); Assert.AreEqual(queryGenerator.CteAliases.Count, 2); }
public void GetBooleanFieldsStatesTest() { // Arrange var queryGenerator = new SearchQueryGeneratorTest { RootTable = new TableDefinition("Test") }; var valuesList = new Dictionary<string, object> { { "IsSwitchToggle", false }, { "MainLabel", "" }, { "UndefinedLabel", "" }, { "TrueLabel", "True" }, { "FalseLabel", "False" } }; queryGenerator.RootTable.AddField(Field1Name, ColumnTypes.Boolean, null, true, true, valuesList); valuesList = new Dictionary<string, object> { { "IsSwitchToggle", true }, { "MainLabel", "CustomLabel" }, { "UndefinedLabel", "Undefined" }, { "TrueLabel", "On" }, { "FalseLabel", "Off" } }; queryGenerator.RootTable.AddField(Field2Name, ColumnTypes.Boolean, null, true, true, valuesList); queryGenerator.ColumnRepresentations.Add(Field1Name, new ColumnRepresentation(Field1Name, Field1Name, 0)); queryGenerator.ColumnRepresentations.Add(Field2Name, new ColumnRepresentation(Field2Name, Field2Name, 1)); queryGenerator.GlobalFilter = "tru"; // Act var result = queryGenerator.GetBooleanFieldsStates_Public(); // Assert Assert.AreEqual(result.Count, 1); Assert.IsTrue(result.Any(x => x.Key.Equals(Field1Name))); Assert.IsTrue(result.First().Value.HasFlag(ToggleState.Checked)); Assert.IsFalse(result.First().Value.HasFlag(ToggleState.Unchecked)); Assert.IsFalse(result.First().Value.HasFlag(ToggleState.Undefined)); // Arrange queryGenerator.GlobalFilter = "false"; // Act result = queryGenerator.GetBooleanFieldsStates_Public(); // Assert Assert.AreEqual(result.Count, 1); Assert.IsTrue(result.Any(x => x.Key.Equals(Field1Name))); Assert.IsTrue(result.First().Value.HasFlag(ToggleState.Unchecked)); Assert.IsFalse(result.First().Value.HasFlag(ToggleState.Checked)); Assert.IsFalse(result.First().Value.HasFlag(ToggleState.Undefined)); // Arrange queryGenerator.GlobalFilter = "o"; // Act result = queryGenerator.GetBooleanFieldsStates_Public(); // Assert Assert.AreEqual(result.Count, 1); Assert.IsTrue(result.Any(x => x.Key.Equals(Field2Name))); Assert.IsTrue(result.First().Value.HasFlag(ToggleState.Checked)); Assert.IsTrue(result.First().Value.HasFlag(ToggleState.Unchecked)); Assert.IsFalse(result.First().Value.HasFlag(ToggleState.Undefined)); // Arrange queryGenerator.GlobalFilter = "defined"; // Act result = queryGenerator.GetBooleanFieldsStates_Public(); // Assert Assert.AreEqual(result.Count, 1); Assert.IsTrue(result.Any(x => x.Key.Equals(Field2Name))); Assert.IsFalse(result.First().Value.HasFlag(ToggleState.Checked)); Assert.IsFalse(result.First().Value.HasFlag(ToggleState.Unchecked)); Assert.IsTrue(result.First().Value.HasFlag(ToggleState.Undefined)); // Arrange queryGenerator.GlobalFilter = "Z"; // Act result = queryGenerator.GetBooleanFieldsStates_Public(); // Assert Assert.IsTrue(result.IsNullOrEmpty()); }
public void CanUseInGlobalWhereTest() { // Arrange var field = new FieldDefinition(Field1Name, ColumnTypes.Image, null, null, false, false); var queryGenerator = new SearchQueryGeneratorTest(); queryGenerator.ColumnRepresentations.Add(Field1Name, new ColumnRepresentation(Field1Name, Field1Name, 0)); // Assert Assert.IsFalse(queryGenerator.CanUseInGlobalWhere_Public(field)); // Arrange field = new FieldDefinition(Field1Name, ColumnTypes.Image, null, null, true, false); // Assert Assert.IsFalse(queryGenerator.CanUseInGlobalWhere_Public(field)); // Arrange field = new FieldDefinition(Field1Name, ColumnTypes.Image, null, null, true, true); // Assert Assert.IsTrue(queryGenerator.CanUseInGlobalWhere_Public(field)); // Arrange queryGenerator.ColumnRepresentations.Clear(); // Assert Assert.IsFalse(queryGenerator.CanUseInGlobalWhere_Public(field)); }
public void FindFilePrefixTest() { const string Prefix = "f"; var queryGenerator = new SearchQueryGeneratorTest(); // Act var result = queryGenerator.FindFilePrefix_Public(Field1Name); // Assert Assert.AreEqual(result, Prefix + "0"); Assert.AreEqual(queryGenerator.FilePrefixes.Count, 1); // Act result = queryGenerator.FindFilePrefix_Public(Field2Name); // Assert Assert.AreEqual(result, Prefix + "1"); Assert.AreEqual(queryGenerator.FilePrefixes.Count, 2); // Act result = queryGenerator.FindFilePrefix_Public(Field1Name); // Assert Assert.AreEqual(result, Prefix + "0"); Assert.AreEqual(queryGenerator.FilePrefixes.Count, 2); }
public void WhenLimitResultColumnsIsFalse_GetIsFilterable_ReturnsOriginalValue() { // Arrange. var queryGenerator = new SearchQueryGeneratorTest { LimitResultColumns = false }; queryGenerator.ResultColumns.Add("Id"); // Act / Assert. Assert.IsTrue(queryGenerator.GetIsFilterable("Text")); Assert.IsFalse(queryGenerator.GetIsFilterable("Text", false)); }
/// <summary> /// Adds the non referenced cross references. /// <author>unknown</author> /// </summary> /// <param name="queryGenerator">The query generator.</param> private static void AddNonReferencedCrossReferences(SearchQueryGeneratorTest queryGenerator) { queryGenerator.SingleCrossReferences.Add(new ReferenceFieldDefinition { SystemName = CrField2Name, Alias = CrField2Name, IncludeInResult = true }); queryGenerator.MultiCrossReferences.Add(new ReferenceFieldDefinition { SystemName = McrField2Name, Alias = McrField2Name, IncludeInResult = true }); queryGenerator.ReverseCrossReferences.Add(new ReferenceFieldDefinition { SystemName = RcrField2Name, Alias = RcrField2Name, IncludeInResult = true }); }
public void RefUpdateFields_ShouldIncludeInResultAllFieldsFromDisplayFieldsCollection() { //Arrange var queryGenerator = new SearchQueryGeneratorTest { RootTable = new TableDefinition("Test") }; var crField = new ReferenceFieldDefinition { SystemName = CrField1Name, Alias = CrField1Name, IncludeInResult = false }; var mcrField = new ReferenceFieldDefinition { SystemName = McrField1Name, Alias = McrField1Name, IncludeInResult = false }; var rcrField = new ReferenceFieldDefinition { SystemName = RcrField1Name, Alias = RcrField1Name, IncludeInResult = false }; queryGenerator.RootTable.AddField(Field1Name, ColumnTypes.String, includeInResult: false); queryGenerator.SingleCrossReferences.Add(crField); queryGenerator.MultiCrossReferences.Add(mcrField); queryGenerator.ReverseCrossReferences.Add(rcrField); var fieldDefinition = new ReferenceFieldDefinition(); fieldDefinition.DisplayFields.Add(new ReferenceDisplayFieldDefinition { Alias = Field1Name, SystemName = Field1Name }); fieldDefinition.DisplayFields.Add(new ReferenceDisplayFieldDefinition { Alias = CrField1Name, SystemName = CrField1Name }); fieldDefinition.DisplayFields.Add(new ReferenceDisplayFieldDefinition { Alias = McrField1Name, SystemName = McrField1Name }); fieldDefinition.DisplayFields.Add(new ReferenceDisplayFieldDefinition { Alias = RcrField1Name, SystemName = RcrField1Name }); //Act queryGenerator.RefUpdateFields(fieldDefinition); //Assert Assert.IsTrue(queryGenerator.RootTable.GetFields()[0].IncludeInResult); Assert.IsTrue(crField.IncludeInResult); Assert.IsTrue(mcrField.IncludeInResult); Assert.IsTrue(rcrField.IncludeInResult); }
public void GetCteListHasOnlyMultiCrossRefsDefinedInResult() { var queryGenerator = new SearchQueryGeneratorTest(); queryGenerator.MultiCrossReferences.Add(new ReferenceFieldDefinition { SystemName = "MCR1", Alias = "MCRA1", ColumnType = ColumnTypes.MultiReference }); queryGenerator.MultiCrossReferences.Add(new ReferenceFieldDefinition { SystemName = "MCR2", Alias = "MCRA2", ColumnType = ColumnTypes.MultiReference }); queryGenerator.ResultColumns.Add("MCR1"); queryGenerator.LimitResultColumns = true; var cte = queryGenerator.GetCteList_Public(); Assert.IsTrue(cte.Contains("MCR1")); Assert.IsFalse(cte.Contains("MCR2")); queryGenerator.ResultColumns.Clear(); queryGenerator.ResultColumns.Add("MCRA1"); cte = queryGenerator.GetCteList_Public(); Assert.IsTrue(cte.Contains("MCR1")); Assert.IsFalse(cte.Contains("MCR2")); queryGenerator.ResultColumns.Clear(); queryGenerator.ResultColumns.Add("MCR1" + Constants.MultipleIdsCrossRefPropertyInfoClass); cte = queryGenerator.GetCteList_Public(); Assert.IsTrue(cte.Contains("MCR1")); Assert.IsFalse(cte.Contains("MCR2")); queryGenerator.ResultColumns.Clear(); queryGenerator.ResultColumns.Add("MCRA1" + Constants.MultipleIdsCrossRefPropertyInfoClass); cte = queryGenerator.GetCteList_Public(); Assert.IsTrue(cte.Contains("MCR1")); Assert.IsFalse(cte.Contains("MCR2")); }
public void RefUpdateFields_ShouldUpdateNonReferencedFields() { #region Arrange const string RefSystemName = "Cr1"; var fieldDefinition = new ReferenceFieldDefinition { SystemName = RefSystemName }; fieldDefinition.DisplayFields.Add(new ReferenceDisplayFieldDefinition() { Alias = Field1Name, SystemName = Field1Name }); fieldDefinition.DisplayFields.Add(new ReferenceDisplayFieldDefinition() { Alias = CrField1Name, SystemName = CrField1Name }); fieldDefinition.DisplayFields.Add(new ReferenceDisplayFieldDefinition() { Alias = McrField1Name, SystemName = McrField1Name }); fieldDefinition.DisplayFields.Add(new ReferenceDisplayFieldDefinition() { Alias = RcrField1Name, SystemName = RcrField1Name }); var queryGenerator = new SearchQueryGeneratorTest { RootTable = new TableDefinition("Test") }; AddReferencedFields(queryGenerator); AddNonReferencedFields(queryGenerator); AddReferencedCrossReferences(queryGenerator); AddNonReferencedCrossReferences(queryGenerator); #endregion Arrange // Act queryGenerator.RefUpdateFields(fieldDefinition); // Assert var fields = queryGenerator.RootTable.GetFields(); Assert.IsTrue(fields.First(f => f.SystemName.Equals(Field1Name)).IncludeInResult); Assert.IsFalse(fields.First(f => f.SystemName.Equals(Field2Name)).IncludeInResult); Assert.IsTrue(queryGenerator.SingleCrossReferences.First(cr => cr.SystemName.Equals(CrField1Name)).IncludeInResult); Assert.IsTrue(queryGenerator.MultiCrossReferences.First(mcr => mcr.SystemName.Equals(McrField1Name)).IncludeInResult); Assert.IsTrue(queryGenerator.ReverseCrossReferences.First(rcr => rcr.SystemName.Equals(RcrField1Name)).IncludeInResult); Assert.IsFalse(queryGenerator.SingleCrossReferences.First(cr => cr.SystemName.Equals(CrField2Name)).IncludeInResult); Assert.IsFalse(queryGenerator.MultiCrossReferences.First(mcr => mcr.SystemName.Equals(McrField2Name)).IncludeInResult); Assert.IsFalse(queryGenerator.ReverseCrossReferences.First(rcr => rcr.SystemName.Equals(RcrField2Name)).IncludeInResult); }
public void RefUpdateFields_ShouldNotAffectSpecificFields() { #region Assert const string RefSystemName = "Cr1"; var fieldDefinition = new ReferenceFieldDefinition { SystemName = RefSystemName }; fieldDefinition.DisplayFields.Add(new ReferenceDisplayFieldDefinition() { Alias = Field1Name, SystemName = Field1Name }); var queryGenerator = new SearchQueryGeneratorTest { RootTable = new TableDefinition("Test") }; AddReferencedFields(queryGenerator); AddNonReferencedFields(queryGenerator); #endregion Assert // Act queryGenerator.RefUpdateFields(fieldDefinition); // Assert var fields = queryGenerator.RootTable.GetFields(); Assert.IsTrue(fields.First(f => f.SystemName.Equals(Constants.IdColumnName)).IncludeInResult); Assert.IsTrue(fields.First(f => f.SystemName.Equals(Constants.DerivedProcessColumnName)).IncludeInResult); }
public void SetNonFilteredColumnsTest() { // Arrange var queryGenerator = new SearchQueryGeneratorTest(); // Act queryGenerator.SetNonFilteredColumns(null); // Assert Assert.IsNull(queryGenerator.NonFilteredColumns); // Act queryGenerator.SetNonFilteredColumns(new[] { BaseField1Name, BaseField2Name }); // Assert Assert.AreEqual(queryGenerator.NonFilteredColumns.Count(), 2); Assert.IsTrue(queryGenerator.NonFilteredColumns.Contains(BaseField1Name)); Assert.IsTrue(queryGenerator.NonFilteredColumns.Contains(BaseField2Name)); }
public void IsColumnExcludedFromSearchFilterTest() { // Arrange var queryGenerator = new SearchQueryGeneratorTest(); // Act queryGenerator.SetNonFilteredColumns(null); // Assert Assert.IsFalse(queryGenerator.IsColumnExcludedFromSearchFilter(BaseField1Name)); // Act queryGenerator.SetNonFilteredColumns(new[] { BaseField1Name, BaseField2Name }); // Assert Assert.IsTrue(queryGenerator.IsColumnExcludedFromSearchFilter(BaseField1Name)); Assert.IsFalse(queryGenerator.IsColumnExcludedFromSearchFilter(BaseField3Name)); }
public void AddReferencesFiltered_ShouldUpdateIsFilterableProperty() { #region Arrange var visibleFields = new string[0]; var queryGenerator = new SearchQueryGeneratorTest(); queryGenerator.SetNonFilteredColumns(new [] { CrField2Name, McrField2Name, RcrField2Name }); var processdefinition = new ProcessDefinition(); var tableDefinition = new TableDefinition("TestProcess"); processdefinition.TableList.Insert(0, tableDefinition); processdefinition.SingleCrossReferenceFields.Add( new ReferenceFieldDefinition { ColumnType = ColumnTypes.Reference, SystemName = CrField1Name, IsFilterable = true }); processdefinition.SingleCrossReferenceFields.Add( new ReferenceFieldDefinition { ColumnType = ColumnTypes.Reference, SystemName = CrField2Name, IsFilterable = true }); processdefinition.SingleCrossReferenceFields.Add( new ReferenceFieldDefinition { ColumnType = ColumnTypes.Reference, SystemName = CrField3Name, IsFilterable = false }); processdefinition.MultiCrossReferenceFields.Add( new ReferenceFieldDefinition { ColumnType = ColumnTypes.MultiReference, SystemName = McrField1Name, IsFilterable = true }); processdefinition.MultiCrossReferenceFields.Add( new ReferenceFieldDefinition { ColumnType = ColumnTypes.MultiReference, SystemName = McrField2Name, IsFilterable = true }); processdefinition.MultiCrossReferenceFields.Add( new ReferenceFieldDefinition { ColumnType = ColumnTypes.MultiReference, SystemName = McrField3Name, IsFilterable = false }); processdefinition.ReverseCrossReferenceFields.Add( new ReferenceFieldDefinition { ColumnType = ColumnTypes.ReverseReference, SystemName = RcrField1Name, IsFilterable = true }); processdefinition.ReverseCrossReferenceFields.Add( new ReferenceFieldDefinition { ColumnType = ColumnTypes.ReverseReference, SystemName = RcrField2Name, IsFilterable = true }); processdefinition.ReverseCrossReferenceFields.Add( new ReferenceFieldDefinition { ColumnType = ColumnTypes.ReverseReference, SystemName = RcrField3Name, IsFilterable = false }); #endregion Arrange // Act queryGenerator.AddReferences(processdefinition); // Assert Assert.IsTrue(queryGenerator.SingleCrossReferenceIsFilterable(CrField1Name)); Assert.IsFalse(queryGenerator.SingleCrossReferenceIsFilterable(CrField2Name)); Assert.IsFalse(queryGenerator.SingleCrossReferenceIsFilterable(CrField3Name)); Assert.IsTrue(queryGenerator.MultiCrossReferenceIsFilterable(McrField1Name)); Assert.IsFalse(queryGenerator.MultiCrossReferenceIsFilterable(McrField2Name)); Assert.IsFalse(queryGenerator.MultiCrossReferenceIsFilterable(McrField3Name)); Assert.IsTrue(queryGenerator.ReverseCrossReferenceIsFilterable(RcrField1Name)); Assert.IsFalse(queryGenerator.ReverseCrossReferenceIsFilterable(RcrField2Name)); Assert.IsFalse(queryGenerator.ReverseCrossReferenceIsFilterable(RcrField3Name)); }
public void GetFilteredFieldsTest() { // Arrange var queryGenerator = new SearchQueryGeneratorTest(); // Act var result = queryGenerator.GetFilteredColumns_Public(); // Assert Assert.IsTrue(result.IsNullOrEmpty()); // Arrange queryGenerator.Filters.Add(new SharedTypes.QueryGenerator.FilterDescriptor(Field1Name, Field1Name, FilterOperator.Any, new object(), typeof(object))); queryGenerator.Filters.Add(new SharedTypes.QueryGenerator.FilterDescriptor(Field2Name, Field2Name, FilterOperator.Any, new object(), typeof(object))); queryGenerator.Filters.Add(new SharedTypes.QueryGenerator.FilterDescriptor(Field2Name, Field2Name, FilterOperator.Any, new object(), typeof(object))); queryGenerator.Filters.Add(new SharedTypes.QueryGenerator.FilterDescriptor(LogicalOperators.And, new List<IFilterDescriptor> { new SharedTypes.QueryGenerator.FilterDescriptor(Field3Name, Field3Name, FilterOperator.Any, new object(), typeof(object)), new SharedTypes.QueryGenerator.FilterDescriptor(Field2Name, Field2Name, FilterOperator.Any, new object(), typeof(object)) })); // Act result = queryGenerator.GetFilteredColumns_Public(); // Assert Assert.AreEqual(result.Count, 3); Assert.IsTrue(result.Contains(Field1Name)); Assert.IsTrue(result.Contains(Field2Name)); Assert.IsTrue(result.Contains(Field3Name)); }
/// <summary> /// Adds the referenced fields. /// <author>unknown</author> /// </summary> /// <param name="queryGenerator">The query generator.</param> private static void AddReferencedFields(SearchQueryGeneratorTest queryGenerator) { queryGenerator.RootTable.AddField(Field1Name, ColumnTypes.Integer, null, true, true); }
public void AddBaseTable_ShouldUpdateIsFilterableProperty() { #region Arrange var visibleFields = new[] { BaseField1Name, BaseField3Name }; var queryGenerator = new SearchQueryGeneratorTest(); queryGenerator.SetNonFilteredColumns(null); queryGenerator.ResultColumns.AddRange(visibleFields); queryGenerator.LimitResultColumns = true; var baseProcessdefinition = new ProcessDefinition(); var baseTableDefinition = new TableDefinition("TestBaseProcess"); baseProcessdefinition.TableList.Insert(0, baseTableDefinition); baseTableDefinition.AddField(BaseField1Name, ColumnTypes.Numeric, null, true, true); baseTableDefinition.AddField(BaseField2Name, ColumnTypes.Object, null, true, true); baseTableDefinition.AddField(BaseField3Name, ColumnTypes.Object, null, true, false); #endregion Arrange // Act queryGenerator.AddBaseTable(baseProcessdefinition); // Assert Assert.IsTrue(queryGenerator.BaseFieldIsFilterable(BaseField1Name)); Assert.IsFalse(queryGenerator.BaseFieldIsFilterable(BaseField2Name)); Assert.IsFalse(queryGenerator.BaseFieldIsFilterable(BaseField3Name)); }
/// <summary> /// Adds the non referenced fields. /// <author>unknown</author> /// </summary> /// <param name="queryGenerator">The query generator.</param> private static void AddNonReferencedFields(SearchQueryGeneratorTest queryGenerator) { queryGenerator.RootTable.AddField(Constants.IdColumnName, ColumnTypes.Integer, null, true, true); queryGenerator.RootTable.AddField(Constants.IsRemovedColumnName, ColumnTypes.Boolean, null, true, true); queryGenerator.RootTable.AddField(Constants.DerivedProcessColumnName, ColumnTypes.String, null, true, true); queryGenerator.RootTable.AddField(Field2Name, ColumnTypes.Integer, null, true, true); }
public void GetCteListHasOnlyReverseCrossRefsDefinedInResult() { var queryGenerator = new SearchQueryGeneratorTest(); queryGenerator.ReverseCrossReferences.Add(new ReferenceFieldDefinition { SystemName = "RCR1", Name = "RCRA1", ColumnType = ColumnTypes.ReverseReference, ReferenceField = new ReferenceJoinFieldDefinition()}); queryGenerator.ReverseCrossReferences.Add(new ReferenceFieldDefinition { SystemName = "RCR2", Name = "RCRA2", ColumnType = ColumnTypes.ReverseReference, ReferenceField = new ReferenceJoinFieldDefinition() }); queryGenerator.ResultColumns.Add("RCR1"); queryGenerator.LimitResultColumns = true; var cte = queryGenerator.GetCteList_Public(); Assert.IsTrue(cte.Contains("RCR1")); Assert.IsFalse(cte.Contains("RCR2")); queryGenerator.ResultColumns.Clear(); queryGenerator.ResultColumns.Add("RCRA1"); cte = queryGenerator.GetCteList_Public(); Assert.IsTrue(cte.Contains("RCR1")); Assert.IsFalse(cte.Contains("RCR2")); }
public void IsColumnInResultTest() { var queryGenerator = new SearchQueryGeneratorTest(); Assert.IsTrue(queryGenerator.IsColumnInResultPublic("Column")); queryGenerator.ResultColumns.Add("Column"); Assert.IsTrue(queryGenerator.IsColumnInResultPublic("ColumnWrong")); Assert.IsTrue(queryGenerator.IsColumnInResultPublic("Column")); queryGenerator.LimitResultColumns = true; Assert.IsFalse(queryGenerator.IsColumnInResultPublic("ColumnWrong")); Assert.IsTrue(queryGenerator.IsColumnInResultPublic("Column")); queryGenerator.ResultColumns.Add("ColumnNew"); Assert.IsTrue(queryGenerator.IsColumnInResultPublic("Column", "ColumnNew")); }