public void ProcessLink_Adds_MailTo_Links_To_List_Of_Links_To_Bypass
            (string[] currentLinksToCrawl, string mailToLink, string[] expectedLinksToBypass)
        {
            //Arrange
            var page = new CrawledPage(new Uri("http://www.z.com"));
            //   page.PageBag.SessionId = 3;
            //    page.PageBag.CrawlerId = 4;
            var inputLinks = new List <Uri>();

            page.ParsedLinks = inputLinks;

            var targetUri = new Uri(mailToLink);

            var mockProvider = new Mock <ILogicProvider>();
            var mockFactory  = new Mock <IModelFactory>();
            var processor    = new ParsedLinksProcessor(mockProvider.Object);

            processor.LinksToByPass     = new List <CrawledLink>();
            processor.MapOfLinksToCrawl = new Dictionary <string, LinkToCrawl>();

            foreach (var url in currentLinksToCrawl)
            {
                var uri = new Uri(url);
                processor.MapOfLinksToCrawl.Add(uri.AbsoluteUri, new LinkToCrawl()
                {
                    TargetUrl = url, TargetBaseDomain = uri.GetBaseDomain()
                });
            }

            #region Set expectations

            mockFactory.Setup(m => m.CreateCrawledLink(It.IsAny <Uri>(), It.IsAny <Uri>(), It.IsAny <int>(), It.IsAny <int>()))
            .Returns(new CrawledLink()
            {
                TargetUrl = mailToLink
            })
            .Verifiable();

            #endregion

            //Act
            processor.ProcessLink(page, mockFactory.Object, targetUri, 3, 4);
            var results = processor.LinksToByPass;

            //Assert
            Assert.NotNull(results);
            Assert.Equal(expectedLinksToBypass.Length, results.Count);
            Assert.Equal(expectedLinksToBypass[0], results[0].TargetUrl);
            mockFactory.Verify();
        }
        public void ProcessLink_Sets_ExternalLinksFound_To_False_If_No_External_Links_Found
            (string[] currentLinksToCrawl, string targetLink, string[] expectedLinksToCrawl)
        {
            //Arrange
            var page = new CrawledPage(new Uri("http://www.a.com/X/Y/Z"));
            //   page.PageBag.SessionId = 3;
            //    page.PageBag.CrawlerId = 4;
            var inputLinks = new List <Uri>();

            page.ParsedLinks = inputLinks;

            var targetUri = new Uri(targetLink);

            var mockProvider = new Mock <ILogicProvider>();
            var mockFactory  = new Mock <IModelFactory>();
            var processor    = new ParsedLinksProcessor(mockProvider.Object);

            processor.MapOfLinksToCrawl = new Dictionary <string, LinkToCrawl>();

            foreach (var url in currentLinksToCrawl)
            {
                var uri = new Uri(url);
                processor.MapOfLinksToCrawl.Add(uri.AbsoluteUri, new LinkToCrawl()
                {
                    TargetUrl = url, TargetBaseDomain = uri.GetBaseDomain()
                });
            }

            #region Set expectations

            mockFactory.Setup(m => m.CreateLinkToCrawl(It.IsAny <CrawledPage>(), It.IsAny <Uri>(), It.IsAny <int>()))
            .Returns(new LinkToCrawl()
            {
                TargetUrl = targetLink
            })
            .Verifiable();

            #endregion

            //Act
            processor.ProcessLink(page, mockFactory.Object, targetUri, 3, 4);
            var results = processor.MapOfLinksToCrawl;

            //Assert
            Assert.False(processor.ExternalLinksFound);
            mockFactory.Verify();
        }
        public void ProcessLink_Adds_MailTo_Links_To_List_Of_Links_To_Bypass
            (string[] currentLinksToCrawl, string mailToLink, string[] expectedLinksToBypass)
        {
            //Arrange
            var page = new CrawledPage(new Uri("http://www.z.com"));
            //   page.PageBag.SessionId = 3;
            //    page.PageBag.CrawlerId = 4;
            var inputLinks = new List<Uri>();
            page.ParsedLinks = inputLinks;

            var targetUri = new Uri(mailToLink);

            var mockProvider = new Mock<ILogicProvider>();
            var mockFactory = new Mock<IModelFactory>();
            var processor = new ParsedLinksProcessor(mockProvider.Object);
            processor.LinksToByPass = new List<CrawledLink>();
            processor.MapOfLinksToCrawl = new Dictionary<string, LinkToCrawl>();

            foreach (var url in currentLinksToCrawl)
            {
                var uri = new Uri(url);
                processor.MapOfLinksToCrawl.Add(uri.AbsoluteUri, new LinkToCrawl() { TargetUrl = url, TargetBaseDomain = uri.GetBaseDomain() });
            }

            #region Set expectations

            mockFactory.Setup(m => m.CreateCrawledLink(It.IsAny<Uri>(), It.IsAny<Uri>(), It.IsAny<int>(), It.IsAny<int>()))
                        .Returns(new CrawledLink() { TargetUrl = mailToLink })
                        .Verifiable();

            #endregion

            //Act
            processor.ProcessLink(page, mockFactory.Object, targetUri, 3, 4);
            var results = processor.LinksToByPass;

            //Assert
            Assert.NotNull(results);
            Assert.Equal(expectedLinksToBypass.Length, results.Count);
            Assert.Equal(expectedLinksToBypass[0], results[0].TargetUrl);
            mockFactory.Verify();
        }
        public void ProcessLink_Sets_ExternalLinksFound_To_False_If_No_External_Links_Found
            (string[] currentLinksToCrawl, string targetLink, string[] expectedLinksToCrawl)
        {
            //Arrange
            var page = new CrawledPage(new Uri("http://www.a.com/X/Y/Z"));
            //   page.PageBag.SessionId = 3;
            //    page.PageBag.CrawlerId = 4;
            var inputLinks = new List<Uri>();
            page.ParsedLinks = inputLinks;

            var targetUri = new Uri(targetLink);

            var mockProvider = new Mock<ILogicProvider>();
            var mockFactory = new Mock<IModelFactory>();
            var processor = new ParsedLinksProcessor(mockProvider.Object);
            processor.MapOfLinksToCrawl = new Dictionary<string, LinkToCrawl>();

            foreach (var url in currentLinksToCrawl)
            {
                var uri = new Uri(url);
                processor.MapOfLinksToCrawl.Add(uri.AbsoluteUri, new LinkToCrawl() { TargetUrl = url, TargetBaseDomain = uri.GetBaseDomain() });
            }

            #region Set expectations

            mockFactory.Setup(m => m.CreateLinkToCrawl(It.IsAny<CrawledPage>(), It.IsAny<Uri>(), It.IsAny<int>()))
                        .Returns(new LinkToCrawl() { TargetUrl = targetLink })
                        .Verifiable();

            #endregion

            //Act
            processor.ProcessLink(page, mockFactory.Object, targetUri, 3, 4);
            var results = processor.MapOfLinksToCrawl;

            //Assert
            Assert.False(processor.ExternalLinksFound);
            mockFactory.Verify();
        }