public void WebAddress_AnalyzeMetaTags_GetResult() { WebPage page = PageFactory.PageFromUrl("https://www.w3schools.com/"); var options = new List <Constants.AnalysisOption>(); options.Add(Constants.AnalysisOption.CountMetaTags); SEOService seoService = new SEOService(page, options); var result = seoService.Analyze(); Assert.IsTrue(result.MetaTagOccurences["tutorials"] == 6); }
public void WebAddress_GetExternalLinks_GetResult() { WebPage page = PageFactory.PageFromUrl("https://www.asp.net/learn"); var options = new List <Constants.AnalysisOption>(); options.Add(Constants.AnalysisOption.GetExternalLinks); SEOService seoService = new SEOService(page, options); var result = seoService.Analyze(); Assert.IsTrue(result.TotalExternalLink == 57); Assert.IsTrue(result.ExternalLinks.Contains("https://www.asp.net/")); }
public ActionResult Analyze(AnalyzeViewModel model) { SEOResultViewModel resultViewModel = new SEOResultViewModel(); if (!ModelState.IsValid) { resultViewModel.IsSuccess = false; resultViewModel.Error = "Invalid input"; return(Json(resultViewModel)); } if (String.IsNullOrEmpty(model.PageContent) && String.IsNullOrEmpty(model.PageUrl)) { resultViewModel.IsSuccess = false; resultViewModel.Error = "Page URL or page content is required"; return(Json(resultViewModel)); } if (model.Options == null) { resultViewModel.IsSuccess = false; resultViewModel.Error = "No analysis option is selected"; return(Json(resultViewModel)); } try { WebPage page; if (!String.IsNullOrEmpty(model.PageUrl)) { page = PageFactory.PageFromUrl(model.PageUrl); } else { page = PageFactory.PageFromText(model.PageContent); } var options = new List <Constants.AnalysisOption>(); foreach (var o in model.Options) { switch (o) { case "countExternalLink": options.Add(Constants.AnalysisOption.GetExternalLinks); break; case "countWords": options.Add(Constants.AnalysisOption.CountWords); break; case "countMetaTag": options.Add(Constants.AnalysisOption.CountMetaTags); break; default: break; } } SEOService seoService = new SEOService(page, options); var result = seoService.Analyze(); resultViewModel.IsSuccess = true; List <WordCount> wordCounts = new List <WordCount>(); foreach (var word in result.WordsOccurences) { wordCounts.Add(new WordCount { Word = word.Key, Total = word.Value }); } resultViewModel.WordCount = wordCounts; List <WordCount> metaTagsCounts = new List <WordCount>(); foreach (var word in result.MetaTagOccurences) { metaTagsCounts.Add(new WordCount { Word = word.Key, Total = word.Value }); } resultViewModel.MetaTagsCount = metaTagsCounts; resultViewModel.ExternalLinks = result.ExternalLinks.ConvertAll(e => new Link { Address = e }); } catch (Exception ex) { resultViewModel.IsSuccess = false; resultViewModel.Error = ex.Message; return(Json(resultViewModel)); } return(Json(resultViewModel)); }