public void ThenAllResultsAreUnderMiles(int selectedMiles)
        {
            while (this.commonHelper.IsElementDisplayed(By.CssSelector("li[class=next]")))
            {
                this.Context.GetWebDriver().FindElement(By.CssSelector("span[class=pagination-label]")).Click();
            }

            var results       = this.Context.GetWebDriver().FindElements(By.CssSelector(".govuk-\\!-margin-top-6"));
            var searchResults = new List <SearchResult>();

            foreach (var resultContainer in results)
            {
                var searchResult = new SearchResultSupport(this.Context, resultContainer).GetResult();
                searchResults.Add(searchResult);
            }


            foreach (var result in searchResults)
            {
                var    miles = result.Location.Split('(', ')')[1];
                double milesNo;
                double.TryParse(miles, out milesNo);
                if (milesNo > selectedMiles)
                {
                    throw new Exception($"Check course results. Result contains course(s) outside of the distance selected");
                }
                else if (string.IsNullOrEmpty(result.Location))
                {
                    throw new Exception($"Check course results. Location is not displayed however should be shown");
                }
            }
        }
        public void ThenSearchResultsAreUpdated()
        {
            Thread.Sleep(5000);

            var results = this.Context.GetWebDriver().FindElements(By.CssSelector(".govuk-\\!-margin-top-6"));

            Assert.True(results.Count > 0);
            Assert.True(results.Count <= int.Parse(Context.Get <IObjectContext>().GetObject("SearchResultsCount")));
            var searchResults = new List <SearchResult>();

            foreach (var resultContainer in results)
            {
                var searchResult = new SearchResultSupport(this.Context, resultContainer).GetResult();
                searchResults.Add(searchResult);
            }

            this.Context.Get <IObjectContext>().UpdateObject("SearchResults", searchResults);
        }
        public void ThenSearchResultsAreDisplayed()
        {
            // This needs to be updated. The nuget package needs an implicit wait for an object to go stale (the
            // object refreshed). You need to set the search results container in the object context before
            // clicking the search button. Then in this step you need to retrieve the container and carry out
            // a wait for the object to go stale. Once it's gone stale then the search results have refreshed.
            Thread.Sleep(5000);

            var results = this.Context.GetWebDriver().FindElements(By.CssSelector(".govuk-\\!-margin-top-6"));

            Assert.True(results.Count > 0);
            this.Context.Get <IObjectContext>().SetObject("SearchResultsCount", results.Count);
            var searchResults = new List <SearchResult>();

            foreach (var resultContainer in results)
            {
                var searchResult = new SearchResultSupport(this.Context, resultContainer).GetResult();
                searchResults.Add(searchResult);
            }

            // This should read like the following line. This is a bug with the nuget package:
            // this.Context.GetObjectContext().SetObject("SearchResults", searchResults);
            this.Context.Get <IObjectContext>().SetObject("SearchResults", searchResults);
        }