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);
        }
Exemple #3
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);
            }
        }