public void ReturnsArticleWithInlineAlerts()
        {
            // Arrange
            const string slug = "unit-test-article-with-inline-alerts";

            _mockTimeProvider.Setup(o => o.Now()).Returns(new DateTime(2016, 10, 15));
            List <ContentfulAlert> alertsInline = new List <ContentfulAlert> {
                new ContentfulAlert()
                {
                    Title       = "title",
                    SubHeading  = "subHeading",
                    Body        = "body",
                    Severity    = "severity",
                    SunriseDate = new DateTime(2017, 05, 01),
                    SunsetDate  = new DateTime(2017, 07, 01),
                    Sys         = new SystemProperties()
                    {
                        Type = "Entry"
                    }
                }
            };
            var rawArticle = new ContentfulArticleBuilder().Slug(slug).AlertsInline(alertsInline).Build();

            _cache.Setup(o => o.GetFromCacheOrDirectlyAsync(It.Is <string>(s => s == $"article-{slug}"), It.IsAny <Func <Task <ContentfulArticle> > >(), It.Is <int>(s => s == 60))).ReturnsAsync(rawArticle);

            // Act
            var response = AsyncTestHelper.Resolve(_repository.GetArticle(slug));

            // Assert
            var article = response.Get <Article>();

            article.AlertsInline.Should().NotBeNull();
        }
        public void ShouldReturnATopicFromAContentfulArticleBasedOnTheBreadcrumbs()
        {
            var subItemEntry = new List <ContentfulReference>
            {
                new ContentfulReferenceBuilder().Slug("sub-slug").Build()
            };

            var ContentfulReferences = new ContentfulReferenceBuilder()
                                       .Name("test topic")
                                       .Slug("test-topic")
                                       .SubItems(subItemEntry)
                                       .SystemContentTypeId("topic")
                                       .Build();

            var contentfulArticleEntry = new ContentfulArticleBuilder().Breadcrumbs(new List <ContentfulReference>()
            {
                ContentfulReferences
            }).Build();


            var result = _parentTopicContentfulFactory.ToModel(contentfulArticleEntry);

            result.Name.Should().Be("test topic");
            result.Slug.Should().Be("test-topic");
            result.SubItems.Should().HaveCount(1);
        }
예제 #3
0
        public void ToModelShouldUpdateLastUpdatedAtWhenArticleSectionisUpdated()
        {
            var time = DateTime.Now.AddHours(1);
            var contentfulSection = new ContentfulSectionBuilder().AddUpdatedAt(time).Build();
            var contentfulArticle = new ContentfulArticleBuilder().Title("title").WithOutSection().Section(contentfulSection).Build();

            var model = _articleFactory.ToModel(contentfulArticle);

            model.UpdatedAt.Should().Be(time);
        }
예제 #4
0
        public void ShouldParseArticleIfBodyIsNull()
        {
            var contentfulArticle = new ContentfulArticleBuilder().Title("title").Body(null).Build();

            var article = _articleFactory.ToModel(contentfulArticle);

            article.Should().BeOfType <Article>();
            article.Body.Should().Be(string.Empty);
            article.Title.Should().Be("title");
        }
        public void ShouldReturnNullTopicIfNoBreadcrumbs()
        {
            var contentfulArticle = new ContentfulArticleBuilder()
                                    .Breadcrumbs(new List <ContentfulReference>())
                                    .Build();

            var result = _parentTopicContentfulFactory.ToModel(contentfulArticle);

            result.Should().BeOfType <NullTopic>();
        }
        public void GetsArticle()
        {
            const string slug = "unit-test-article";

            _mockTimeProvider.Setup(o => o.Now()).Returns(new DateTime(2016, 10, 15));

            var rawArticle = new ContentfulArticleBuilder().Slug(slug).Build();

            _cache.Setup(o => o.GetFromCacheOrDirectlyAsync(It.Is <string>(s => s == $"article-{slug}"), It.IsAny <Func <Task <ContentfulArticle> > >(), It.Is <int>(s => s == 60))).ReturnsAsync(rawArticle);

            var response = AsyncTestHelper.Resolve(_repository.GetArticle(slug));

            response.StatusCode.Should().Be(HttpStatusCode.OK);
        }
        public void ReturnsValidSunsetAndSunriseDateWhenDateInRange()
        {
            const string slug = "unit-test-article";

            _mockTimeProvider.Setup(o => o.Now()).Returns(new DateTime(2016, 08, 01));

            var rawArticle = new ContentfulArticleBuilder().Slug(slug).Build();

            _cache.Setup(o => o.GetFromCacheOrDirectlyAsync(It.Is <string>(s => s == $"article-{slug}"), It.IsAny <Func <Task <ContentfulArticle> > >(), It.Is <int>(s => s == 60))).ReturnsAsync(rawArticle);

            StockportContentApi.Http.HttpResponse response = AsyncTestHelper.Resolve(_repository.GetArticle("unit-test-article"));

            response.StatusCode.Should().Be(HttpStatusCode.OK);
        }
        public void ShouldReturnTopicWithFirstSubItemOfTheArticle()
        {
            var subItemEntry = new ContentfulReferenceBuilder()
                               .Slug("sub-slug")
                               .SystemId("same-id-as-article")
                               .Build();

            var subItemEntryOther = new ContentfulReferenceBuilder()
                                    .Slug("sub-slug")
                                    .SystemId("not-same-id-as-article")
                                    .Build();

            var subItemEntryList = new List <ContentfulReference>
            {
                subItemEntry,
                subItemEntryOther
            };

            var ContentfulReferences = new ContentfulReferenceBuilder()
                                       .Name("test topic")
                                       .Slug("test-topic")
                                       .SubItems(subItemEntryList)
                                       .SystemContentTypeId("topic")
                                       .Build();

            var contentfulArticle = new ContentfulArticleBuilder()
                                    .Breadcrumbs(new List <ContentfulReference>()
            {
                ContentfulReferences
            })
                                    .Title("title")
                                    .Slug("slug")
                                    .SystemId("same-id-as-article")
                                    .Build();

            _subitemContentfulFactory.Setup(o => o.ToModel(It.Is <ContentfulReference>(x => x.Slug == "article-slug")))
            .Returns(new SubItem("slug", "title", string.Empty, string.Empty, string.Empty, DateTime.MinValue, DateTime.MaxValue, string.Empty, new List <SubItem>()));

            var result = _parentTopicContentfulFactory.ToModel(contentfulArticle);

            result.Should().BeOfType <Topic>();
            result.SubItems.Should().HaveCount(2);
            result.SubItems.First().Title.Should().Be("title");
            result.SubItems.First().Slug.Should().Be("slug");
            result.SubItems.ToList()[1].Title.Should().Be("title");
            result.SubItems.ToList()[1].Slug.Should().Be("slug");
        }
        public void Gets404ForNewsOutsideOfSunsetDate()
        {
            const string slug = "unit-test-article";

            _mockTimeProvider.Setup(o => o.Now()).Returns(new DateTime(2017, 08, 01));

            var collection = new ContentfulCollection <ContentfulArticle>();
            var rawArticle = new ContentfulArticleBuilder().Slug(slug).Build();

            collection.Items = new List <ContentfulArticle> {
                rawArticle
            };

            _contentfulClient.Setup(o => o.GetEntries <ContentfulArticle>(It.IsAny <QueryBuilder <ContentfulArticle> >(), It.IsAny <CancellationToken>())).ReturnsAsync(collection);

            StockportContentApi.Http.HttpResponse response = AsyncTestHelper.Resolve(_repository.GetArticle("unit-test-article"));

            response.StatusCode.Should().Be(HttpStatusCode.NotFound);
        }
예제 #10
0
        public void ItShouldRemoveAlertsInlineThatArePastSunsetDateOrBeforeSunriseDate()
        {
            ContentfulAlert _visibleAlert = new ContentfulAlert()
            {
                Title       = "title",
                SubHeading  = "subHeading",
                Body        = "body",
                Severity    = "severity",
                SunriseDate = new DateTime(2016, 12, 01),
                SunsetDate  = new DateTime(2017, 02, 01),
                Sys         = new SystemProperties()
                {
                    Type = "Entry"
                }
            };

            ContentfulAlert _invisibleAlert =
                new ContentfulAlert()
            {
                Title       = "title",
                SubHeading  = "subHeading",
                Body        = "body",
                Severity    = "severity",
                SunriseDate = new DateTime(2017, 05, 01),
                SunsetDate  = new DateTime(2017, 07, 01),
                Sys         = new SystemProperties()
                {
                    Type = "Entry"
                }
            };

            var contentfulArticle =
                new ContentfulArticleBuilder().AlertsInline(new List <ContentfulAlert> {
                _visibleAlert, _invisibleAlert
            })
                .Build();

            var article = _articleFactory.ToModel(contentfulArticle);

            article.AlertsInline.Count().Should().Be(1);
        }
        public void ShouldReturnNullTopicIfBreadcrumbDoesNotHaveTypeOfTopic()
        {
            var subItemEntry = new List <ContentfulReference>
            {
                new ContentfulReferenceBuilder().Slug("sub-slug").Build()
            };

            var ContentfulReferences = new ContentfulReferenceBuilder()
                                       .Name("test topic")
                                       .Slug("test-topic")
                                       .SubItems(subItemEntry)
                                       .SystemContentTypeId("id")
                                       .Build();

            var contentfulArticleEntry = new ContentfulArticleBuilder().Breadcrumbs(new List <ContentfulReference>()
            {
                ContentfulReferences
            }).Build();

            var result = _parentTopicContentfulFactory.ToModel(contentfulArticleEntry);

            result.Should().BeOfType <NullTopic>();
        }
        public void ReturnsArticleWithASectionThatHasAnInlineAlert()
        {
            // Arrange
            const string slug = "unit-test-article-with-section-with-inline-alerts";

            _mockTimeProvider.Setup(o => o.Now()).Returns(new DateTime(2016, 10, 15));
            var alert = new Alert("title", "subHeading", "body", "severity",
                                  new DateTime(0001, 1, 1, 0, 0, 0, DateTimeKind.Utc),
                                  new DateTime(9999, 9, 9, 0, 0, 0, DateTimeKind.Utc), string.Empty, false);
            var collection = new ContentfulCollection <ContentfulArticle>();
            var rawArticle = new ContentfulArticleBuilder().Slug(slug).Build();

            collection.Items = new List <ContentfulArticle> {
                rawArticle
            };
            _cache.Setup(o => o.GetFromCacheOrDirectlyAsync(It.Is <string>(s => s == $"article-{slug}"), It.IsAny <Func <Task <ContentfulArticle> > >(), It.Is <int>(s => s == 60))).ReturnsAsync(rawArticle);
            _sectionFactory.Setup(o => o.ToModel(It.IsAny <ContentfulSection>())).Returns(new Section(
                                                                                              "title",
                                                                                              "section-with-inline-alerts",
                                                                                              "metaDescription",
                                                                                              "body",
                                                                                              new List <Profile>(),
                                                                                              new List <Document>(),
                                                                                              new DateTime(0001, 1, 1, 0, 0, 0, DateTimeKind.Utc),
                                                                                              new DateTime(9999, 9, 9, 0, 0, 0, DateTimeKind.Utc),
                                                                                              new List <Alert> {
                alert
            }));

            // Act
            var response = AsyncTestHelper.Resolve(_repository.GetArticle(slug));

            // Assert
            var article = response.Get <Article>();

            article.Sections[0].AlertsInline.Should().Equal(alert);
        }