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