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); }
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); }
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); }
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); }