public void SearchByCharFiledShouldWorkProperlyAndCaseInsensitive(int testCase, Func <AllTypesModel, string> selector)
        {
            var colNames = new string[]
            {
                "CharProperty", "CharNullable", "Nested Model CharProperty", "Nested Model CharNullable"
            };

            for (int i = 0; i < 2; i++)
            {
                this.navigator.AllTypesDataPage().GoTo("?showString=false");
                var tableElement = new TableElement("table", this.driver);
                var searchValue  = this.GetRandomCharContainedInDataSwitchedCase(selector).ToString().RandomiseCase();
                tableElement.TypeInSearchBox(searchValue);
                Thread.Sleep(GlobalConstants.GlobalThreadSleep);
                var columnValuesCollection = new List <IList <string> >();
                foreach (var colName in colNames)
                {
                    columnValuesCollection.Add(tableElement.GetColumnRowValues(colName).ToList());
                }

                var joinedColumns = this.ConcatItems(columnValuesCollection.ToArray());

                Assert.IsNotEmpty(joinedColumns);
                Assert.IsTrue(joinedColumns.All(x => x.ToLower().Contains(searchValue.ToLower())));
            }
        }
        public void SearchByStringFiledShouldWorkProperlyAndCaseInsensitive(int caseNumber, Func <AllTypesModel, string> selector)
        {
            var columnName1 = "StringProperty";
            var columnName2 = "Nested Model StringProperty";

            for (int i = 0; i < 5; i++)
            {
                this.navigator.AllTypesDataPage().GoTo("?showChar=false");
                var tableElement = new TableElement("table", this.driver);
                var searchValue  = this.GetRandomSubstringContainedInData(selector).RandomiseCase();
                tableElement.TypeInSearchBox(searchValue);
                Thread.Sleep(GlobalConstants.GlobalThreadSleep);
                var filteredValues1 = tableElement.GetColumnRowValues(columnName1).ToList();
                var filteredValues2 = tableElement.GetColumnRowValues(columnName2).ToList();
                var joinedColumns   = new List <string>();
                for (int j = 0; j < filteredValues1.Count(); j++)
                {
                    joinedColumns.Add(filteredValues1[j] + filteredValues2[j]);
                }

                Assert.IsTrue(joinedColumns.All(x => x.ToLower().Contains(searchValue.ToLower())));
            }
        }