public void AssembliesFilteringPositive(FilterSearchData.Filters filterType, object filterValue) { int take = 50; //temporary to check performance var itemsApi = this.App.GraphApi.ToolManager.FilterToolAssemblies( new Dictionary <FilterSearchData.Filters, object> { { filterType, filterValue } }, take); Assert.True(itemsApi.Count > 0, "Graph API didn't return any data"); var apiItemsAreCorrect = this.CheckToolAssemblyItemsAreCorrect(filterType, filterValue, itemsApi); Assert.True( apiItemsAreCorrect.Key, "Not all items from Graph Api correspond to the applied filter. " + $"Wrong items are: {Environment.NewLine} {ServiceMethods.ListToString(apiItemsAreCorrect.Value)}"); this.App.Ui.ToolsMain.PerformFiltering( new Dictionary <FilterSearchData.Filters, object> { { filterType, filterValue } }); var itemsUi = this.App.Ui.ToolsMain.GetAssembliesResults(); this.CompareToolAssemblyRecordsFromApiAndUi(itemsApi, itemsUi); }
public void FilteringNegative(FilterSearchData.Filters filterType, object filterValue) { var tools = this.App.GraphApi.ToolManager.FilterToolAssemblies( new Dictionary <FilterSearchData.Filters, object> { { filterType, filterValue } }); Assert.That(tools.Count == 0); }
// [Parallelizable(ParallelScope.None)] public void HoldersFilteringNegative(FilterSearchData.Filters filterType, object filterValue) { int take = 50; //temporary to check performance this.ApiFilteringTest <Holder>( new Dictionary <FilterSearchData.Filters, object> { { filterType, filterValue } }, take, false); }
// [Parallelizable(ParallelScope.None)] public void CuttersFilteringPositive(FilterSearchData.Filters filterType, object filterValue) { int take = 50; //temporary to check performance this.ApiFilteringTest <CutterAssembly>( new Dictionary <FilterSearchData.Filters, object> { { filterType, filterValue } }, take, true); }
public bool IsFilterEnabled(FilterSearchData.Filters filter) { this.WaitForPageLoad(); if (this.filtersLocators.ContainsKey(filter)) { IWebElement filterElement = this.Driver.Find(this.filtersLocators[filter]); var state = filterElement.Enabled; return(state); } else { throw new Exception($"'{filter}' is not valid filter"); } }
protected KeyValuePair <bool, List <string> > CheckHolderItemsAreCorrect( FilterSearchData.Filters filterType, object filterValue, List <Holder> items) { List <string> wrongItemsNames = new List <string>(); bool apiItemsAreCorrect = true; switch (filterType) { case FilterSearchData.Filters.Search: { string searchTerm = (string)filterValue; apiItemsAreCorrect = items.All( item => item.Name.Contains(searchTerm)); break; } case FilterSearchData.Filters.AvaliabilityInStock: { if ((bool)filterValue) { apiItemsAreCorrect = items.All(i => i.Quantity > 0); } else { // Due to current API logic - if filterVlaue is false it returns both true and false entities apiItemsAreCorrect = items.All(i => i.Quantity >= 0); } break; } case FilterSearchData.Filters.Cooling: { if (!(bool)filterValue) { // Due to current API logic - if filterVlaue is false it returns both true and false entities apiItemsAreCorrect = true; } else { apiItemsAreCorrect = items.All(e => e.Cooling); if (!apiItemsAreCorrect) { wrongItemsNames = items.Where(i => !i.Cooling) .Select(e => e.Name).ToList(); } } break; } case FilterSearchData.Filters.ToolLength: { apiItemsAreCorrect = items.All(i => i.Length == (int)filterValue); break; } } var result = new KeyValuePair <bool, List <string> >(apiItemsAreCorrect, wrongItemsNames); return(result); }
protected KeyValuePair <bool, List <string> > CheckCutterAssemblyItemsAreCorrect( FilterSearchData.Filters filterType, object filterValue, List <CutterAssembly> items) { List <string> wrongItemsNames = new List <string>(); bool apiItemsAreCorrect = true; switch (filterType) { case FilterSearchData.Filters.Search: { string searchTerm = (string)filterValue; apiItemsAreCorrect = items.All( item => item.Name.Contains(searchTerm)); break; } case FilterSearchData.Filters.ToolMaterial: { var materialId = this.App.GraphApi.ToolManager.GetCuttingMaterials().First(e => e.Name.Equals((string)filterValue)).Id; apiItemsAreCorrect = items.All(i => i.Material.Id.Equals(materialId)); break; } case FilterSearchData.Filters.AvaliabilityInStock: { if ((bool)filterValue) { apiItemsAreCorrect = items.All(i => i.Quantity > 0); } else { //Due to current API logic apiItemsAreCorrect = items.All(i => i.Quantity >= 0); } break; } case FilterSearchData.Filters.Cooling: { if (!(bool)filterValue) { //Due to current Graph API logic apiItemsAreCorrect = true; } else { apiItemsAreCorrect = items.All(e => e.Cutter.Cooling); if (!apiItemsAreCorrect) { wrongItemsNames = items.Where(i => !i.Cutter.Cooling) .Select(i => i.Name).ToList(); } } break; } case FilterSearchData.Filters.ToolGroup: { var groups = this.App.GraphApi.ToolManager.GetCutterGroups(); var currentGroup = groups.First(g => g.Name.Equals(filterValue)).Id; // Check that subgroup of ToolAssembly is child to defined group. apiItemsAreCorrect = items.All( i => groups.First(g => g.Id.Equals(i.Cutter.GeometryStr)).ParentId .Equals(currentGroup)); break; } case FilterSearchData.Filters.Type: { var groups = this.App.GraphApi.ToolManager.GetCutterGroups(); var currentGroup = groups.First(g => g.Name.Equals(filterValue)).Id; apiItemsAreCorrect = items.All( i => i.Cutter.GeometryStr.Equals(currentGroup)); break; } case FilterSearchData.Filters.ToolLength: { apiItemsAreCorrect = items.All(i => i.Length == (int)filterValue); break; } case FilterSearchData.Filters.ToolSize: { apiItemsAreCorrect = items.All(i => i.Cutter.Diameter == (int)filterValue); break; } case FilterSearchData.Filters.UsageMaterial: { apiItemsAreCorrect = items.All(i => i.UsageMaterials.Contains(filterValue)); if (!apiItemsAreCorrect) { wrongItemsNames = items.Where(i => !i.UsageMaterials.Contains(filterValue)) .Select(e => e.Name).ToList(); } break; } } var result = new KeyValuePair <bool, List <string> >(apiItemsAreCorrect, wrongItemsNames); return(result); }
public string GetFilterState(FilterSearchData.Filters filter) { this.WaitForPageLoad(); if (this.filtersLocators.ContainsKey(filter)) { var dropdowns = new Dictionary <FilterSearchData.Filters, CustomSelector> { { FilterSearchData .Filters .UsageMaterial, UsageMaterialSelector }, { FilterSearchData .Filters .ToolMaterial, ToolMaterialSelector }, { FilterSearchData .Filters.ToolGroup, ToolGroupSelector }, { FilterSearchData .Filters.Type, ToolTypeSelector } }; if (dropdowns.Keys.Contains(filter)) { var state = dropdowns[filter].SelectedOption(); return(state); } else { if (new List <FilterSearchData.Filters> { FilterSearchData.Filters.Cooling, FilterSearchData.Filters.AvaliabilityInStock }.Contains(filter)) { IWebElement filterElement = this.Driver.Find(this.filtersLocators[filter]); var state = filterElement.Selected.ToString(); return(state); } else { IWebElement filterElement = this.Driver.Find(this.filtersLocators[filter]); var value = filterElement.GetAttribute("value"); var state = value == string.Empty ? filterElement.GetAttribute("placeholder") : value; return(state); } } } else { if (filter != FilterSearchData.Filters.Search) { throw new Exception($"'{filter}' is not valid filter"); } return(null); } }