示例#1
0
        public IEnumerable <SemanticCard> Producer(string url)
        {
            if (string.IsNullOrWhiteSpace(url))
            {
                throw new ArgumentException(nameof(url));
            }

            var nextPageUrl = url;

            do
            {
                _semanticSearchResults.Load(nextPageUrl);

                foreach (var row in _semanticSearchResults.TableRows)
                {
                    var semanticCard = new SemanticCard
                    {
                        Title         = _semanticCardSearchResults.Name(row),
                        CorrelationId = Guid.NewGuid(),
                        Url           = _semanticCardSearchResults.Url(row, _semanticSearchResults.CurrentWebPageUri)
                    };

                    if (!string.IsNullOrWhiteSpace(semanticCard.Title) && !string.IsNullOrWhiteSpace(semanticCard.Url))
                    {
                        yield return(semanticCard);
                    }
                }

                if (_semanticSearchResults.HasNextPage)
                {
                    nextPageUrl = _semanticSearchResults.NextPageLink();
                }
            } while (_semanticSearchResults.HasNextPage);
        }
示例#2
0
        public void Given_A_Url_With_Only_One_Page_Should_Not_Invoke_NextPageLink()
        {
            // Arrange
            var tableRows = new HtmlNodeCollection(new HtmlNode(HtmlNodeType.Document, new HtmlDocument(), 0))
            {
                new (HtmlNodeType.Element, new HtmlDocument(), 1)
            };

            _semanticSearchResultsWebPage.Load(Arg.Any <string>());
            _semanticSearchResultsWebPage.TableRows.Returns(tableRows);
            _semanticCardSearchResultsWebPage.Name(Arg.Any <HtmlNode>()).Returns("Card Name");
            _semanticCardSearchResultsWebPage.Url(Arg.Any <HtmlNode>(), Arg.Any <Uri>()).Returns("https://www.youtube.com");

            // Act
            _sut.Producer("https://www.youtube.com").ToArray();

            // Assert
            _semanticSearchResultsWebPage.DidNotReceive().NextPageLink();
        }