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"));
        }