/// <summary> /// Calculates number of external links in a webpage. /// </summary> /// <returns>Dictionary of external link.</returns> public override Dictionary <string, int> CalculateExternalLink() { if (htmlPage == null) { var htmlWeb = new HtmlWeb(); var lastStatusCode = HttpStatusCode.OK; htmlWeb.PostResponse = (request, response) => { if (response != null) { lastStatusCode = response.StatusCode; } }; htmlPage = htmlWeb.Load(Input); if (lastStatusCode != HttpStatusCode.OK) { throw new Exception($"{Constant.WEB_REQUEST_ERROR_MESSAGE} {lastStatusCode}"); } } var hrefNodeCollection = htmlPage.DocumentNode.SelectNodes("//a[@href]"); return(CoreUtil.ProcessExternalLink(hrefNodeCollection, Input)); }
public void ProcessExternalLink_WithEmptyText_ReturnDictionaryOfExternalLink(string input) { //arrange var expected = new Dictionary <string, int>(StringComparer.InvariantCultureIgnoreCase); //act var actual = CoreUtil.ProcessExternalLink(input); //assert Assert.AreEqual(actual, expected); Assert.IsEmpty(actual); }
public void ProcessExternalLink_WithEnglishText_ReturnDictionaryOfExternalLink(string input) { //arrange var expected = new Dictionary <string, int>(StringComparer.InvariantCultureIgnoreCase) { { "http://www.google.com", 1 }, { "https://www.google.com", 2 } }; //act var actual = CoreUtil.ProcessExternalLink(input); //assert Assert.AreEqual(actual, expected); }
public void ProcessExternalLink_onURLAnalyserWithRelativeOrAbsoluteUrl_ReturnDictionaryOfExternalLink(string html, string baseUrl) { //arrange var expected = new Dictionary <string, int>(StringComparer.InvariantCultureIgnoreCase) { { "https://www.google.com/", 1 }, { "https://www.w3schools.com/cs/exercise.asp?filename=exercise_syntax1", 1 } }; HtmlDocument doc = new HtmlDocument(); doc.LoadHtml(html); HtmlNodeCollection nodes = doc.DocumentNode.SelectNodes("//html//a"); //act var actual = CoreUtil.ProcessExternalLink(nodes, baseUrl); //assert Assert.AreEqual(actual, expected); }
/// <summary> /// Calculates number of external links in a english text. /// </summary> /// <returns>Dictionary of external link.</returns> public override Dictionary <string, int> CalculateExternalLink() => CoreUtil.ProcessExternalLink(Input);