private void AssertColumnValues(IEnumerable <string> columnValues, object filterValue, ComparissonTypesEnum comparissonType) { Assert.IsNotEmpty(columnValues, $"Filter value: {filterValue}"); switch (comparissonType) { case ComparissonTypesEnum.Equal: foreach (var colValue in columnValues) { Assert.IsTrue(colValue.ToLower() == filterValue.ToString().ToLower()); } break; case ComparissonTypesEnum.Contains: foreach (var colValue in columnValues) { Assert.IsTrue(colValue.ToLower().Contains(filterValue.ToString().ToLower())); } break; case ComparissonTypesEnum.DateTime: var compareToDT = ((DateTime)filterValue).ToUniversalTime(); Assert.IsTrue(columnValues.All(x => { var parsedItem = DateTime.Parse(x).ToUniversalTime(); return (parsedItem.Year == compareToDT.Year && parsedItem.Month == compareToDT.Month && parsedItem.Day == compareToDT.Day && parsedItem.Hour == compareToDT.Hour && parsedItem.Minute == compareToDT.Minute && parsedItem.Second == compareToDT.Second); })); break; case ComparissonTypesEnum.DateTimeOffset: var compareToDTOfS = ((DateTimeOffset)filterValue).UtcDateTime; Assert.IsTrue(columnValues.All(x => { var parsedItem = DateTime.Parse(x).ToUniversalTime(); return (parsedItem.Year == compareToDTOfS.Year && parsedItem.Month == compareToDTOfS.Month && parsedItem.Day == compareToDTOfS.Day && parsedItem.Hour == compareToDTOfS.Hour && parsedItem.Minute == compareToDTOfS.Minute && parsedItem.Second == compareToDTOfS.Second); })); break; default: throw new ArgumentException(); } }
public void FilterByColumnShouldWorkProperlyForNonDateTimes(Expression <Func <AllTypesModel, object> > selector, ComparissonTypesEnum comparissonType) { string columnName = this.GetColumnName(selector); if (selector.ToString().ToLower().Contains("nestedmodel")) { columnName = "Nested Model " + columnName; } this.navigator.AllTypesDataPage().GoTo(); var inputId = "column-search-" + columnName.Replace(' ', '-'); var table = new TableElement("table", this.driver); var filterValue = this.GetRandomValue(selector.Compile()); table.TypeInInput($"#{inputId}", filterValue.ToString()); var columnValues = table.GetColumnRowValuesUntilAny(columnName); this.AssertColumnValues(columnValues, filterValue, comparissonType); }
public void FilterByColumnShouldWorkProperlyForDateTimes(Expression <Func <AllTypesModel, object> > selector, ComparissonTypesEnum comparissonType) { string columnName = this.GetColumnName(selector); this.navigator.AllTypesDataPage().GoTo(); var inputId = "column-search-" + columnName.Replace(' ', '-'); var table = new TableElement("table", this.driver); var filterValueObj = this.GetRandomValue(selector.Compile()); var filterValueDT = comparissonType == ComparissonTypesEnum.DateTime ? (DateTime)filterValueObj : ((DateTimeOffset)filterValueObj).DateTime; Thread.Sleep(GlobalConstants.GlobalThreadSleep); table.TypeInInput($"#{inputId}", filterValueDT.ToString("r")); var columnValues = table.GetColumnRowValuesUntilAny(columnName); this.AssertColumnValues(columnValues, filterValueObj, comparissonType); }