コード例 #1
0
        public void GetFeedItems_HtmlWebLoadThrowsException_LogsErrorAndThrowsBoomkatServiceException()
        {
            var htmlWebFake = A.Fake <IHtmlWeb>();

            A.CallTo(() => htmlWebFake.Load(A <string> .Ignored)).Throws(new Exception("foo"));
            var htmlWebFactoryFake = A.Fake <IHtmlWebFactory>();

            A.CallTo(() => htmlWebFactoryFake.Get()).Returns(htmlWebFake);
            A.CallTo(() => htmlWebFake.Load(A <string> .Ignored)).Throws(new Exception("abc"));
            var logFactoryFake = A.Fake <ILogFactory>();
            var logFake        = A.Fake <ILog>();

            A.CallTo(() => logFactoryFake.GetLogger(A <Type> .Ignored)).Returns(logFake);

            var relatedFeedItemService = new RelatedFeedItemService(
                A.Fake <IRelatedFeedItemHtmlParser>(),
                htmlWebFactoryFake,
                logFactoryFake);

            try {
                var feedItemsResult = relatedFeedItemService.GetFeedItems("abc");
            } catch (Exception ex) {
                Assert.That(ex, Is.TypeOf <BoomkatServiceException>());
            }

            A.CallTo(() => logFake.ErrorFormat(A <string> .Ignored, A <object[]> .Ignored)).MustHaveHappened(Repeated.Exactly.Once);
        }
コード例 #2
0
        public void GetFeedItems_UrlIsNull_ThrowsArgumentNullException()
        {
            var relatedFeedItemService = new RelatedFeedItemService(
                A.Fake <IRelatedFeedItemHtmlParser>(),
                A.Fake <IHtmlWebFactory>(),
                A.Fake <ILogFactory>());

            Assert.Throws <ArgumentNullException>(() => relatedFeedItemService.GetFeedItems(null));
        }
コード例 #3
0
        public void GetFeedItems_ReturnsFeedItems()
        {
            var boomkatConfigurationFake = A.Fake <IBoomkatConfiguration>();

            A.CallTo(() => boomkatConfigurationFake.SiteUrl).Returns("http://boomkat.com");

            var relatedFeedItemService = new RelatedFeedItemService(
                new RelatedFeedItemHtmlParser(boomkatConfigurationFake),
                new HtmlWebFactory(A.Fake <IHtmlWebConfiguration>()),
                A.Fake <ILogFactory>());

            var feedItems = relatedFeedItemService.GetFeedItems("http://boomkat.com/downloads/568054-the-xx-coexist");

            Assert.That(feedItems, Is.Not.Empty);
            Assert.That(feedItems[0].Artist, Is.Not.Empty);
            Assert.That(feedItems[0].Album, Is.Not.Empty);
            Assert.That(feedItems[0].Url, Is.Empty);
        }
コード例 #4
0
        public void GetFeedItems_RelatedFeedItemHtmlParserParseReturnsFeedItems_ReturnsDistinctFeedItems()
        {
            var relatedFeedItemHtmlParserFake = A.Fake <IRelatedFeedItemHtmlParser>();
            var pages = (IList <string>)null;

            A.CallTo(() => relatedFeedItemHtmlParserFake.Parse(A <IHtmlDocument> .Ignored)).Returns(new List <IFeedItem> {
                new FeedItem {
                    Album = "abc", Artist = "def", Url = "ghi"
                }, new FeedItem {
                    Album = "abc", Artist = "def", Url = "ghi"
                }
            });

            var relatedFeedItemService = new RelatedFeedItemService(
                relatedFeedItemHtmlParserFake,
                A.Fake <IHtmlWebFactory>(),
                A.Fake <ILogFactory>());

            var feedItems = relatedFeedItemService.GetFeedItems("abc");

            Assert.That(feedItems.Count, Is.EqualTo(1));
        }