示例#1
0
        public async Task <IEnumerable <int> > Handle(GetSearchPositionsQuery request, CancellationToken cancellationToken)
        {
            var response = await _searchService.GetHtmlString($"/search?num={_searchSetting.Value.ResultNumber}&q={request.Keyword}");

            var result = _htmlProcessor.GetSearchPositions(response, request.TargetUrl).ToList();

            return(result);
        }
示例#2
0
        public async Task <SearchPositionRepresentation> Get(string keyword, string targetUrl)
        {
            // create query
            var query = new GetSearchPositionsQuery(keyword, targetUrl);

            // sending query via mediator
            var result = await _mediator.Send(query);

            // convert result to client specific representational object
            return(new SearchPositionRepresentation(result));
        }
示例#3
0
        public void it_should_call_html_processor_once()
        {
            // setup
            var givenRequest  = new GetSearchPositionsQuery("google", "www.google.com");
            var givenResponse = Task.FromResult("<div></div>");

            _mockSearchSetting.Setup(s => s.Value).Returns(new SearchSetting {
                ResultNumber = 1
            });
            _mockGoogleSearchService.Setup(g => g.GetHtmlString(It.IsAny <string>())).Returns(givenResponse);
            _mockHtmlProcessor.Setup(h => h.GetSearchPositions(givenResponse.Result, givenRequest.TargetUrl)).Returns(It.IsAny <IEnumerable <int> >());

            // act
            var result = _handler.Handle(givenRequest, CancellationToken.None);

            // assert
            _mockHtmlProcessor.Verify(g => g.GetSearchPositions(givenResponse.Result, givenRequest.TargetUrl), Times.Exactly(1));
        }