public void ShouldReturnSuccessIfNewsArticleSunsetDateIsInThePast()
        {
            // Arrange
            const string slug            = "news-with-sunrise-date-in-future";
            DateTime     nowDateTime     = DateTime.Now;
            DateTime     pastSunRiseDate = DateTime.Now.AddDays(-20);
            DateTime     pastSunSetDate  = DateTime.Now.AddDays(-10);

            _mockTimeProvider.Setup(o => o.Now()).Returns(nowDateTime);
            var newsWithSunsetDateInPast = new ContentfulNewsBuilder()
                                           .SunsetDate(pastSunSetDate)
                                           .SunriseDate(pastSunRiseDate)
                                           .Slug(slug)
                                           .Build();
            var collection = new ContentfulCollection <ContentfulNews>();

            collection.Items = new List <ContentfulNews> {
                newsWithSunsetDateInPast
            };
            var simpleNewsQuery =
                new QueryBuilder <ContentfulNews>()
                .ContentTypeIs("news")
                .FieldEquals("fields.slug", slug)
                .Include(1)
                .Build();

            _videoRepository.Setup(o => o.Process(It.IsAny <string>())).Returns(newsWithSunsetDateInPast.Body);
            _cacheWrapper.Setup(_ => _.GetFromCacheOrDirectlyAsync(It.Is <string>(s => s == "news-all"), It.IsAny <Func <Task <IList <ContentfulNews> > > >(), It.Is <int>(s => s == 60))).ReturnsAsync(collection.Items.ToList());

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

            // Assert
            response.StatusCode.Should().Be(HttpStatusCode.OK);
        }
        public void GetsANewsItemFromASlug()
        {
            // Arrange
            const string slug   = "news-of-the-century";
            List <Alert> alerts = new List <Alert> {
                new AlertBuilder().Build()
            };

            _mockTimeProvider.Setup(o => o.Now()).Returns(DateTime.Now);

            var contentfulNews = new ContentfulNewsBuilder().Title("This is the news").Body("The news").Teaser("Read more for the news").Slug(slug).SunriseDate(new DateTime(2016, 08, 01)).SunsetDate(new DateTime(2016, 08, 10)).Build();
            var collection     = new ContentfulCollection <ContentfulNews>();

            collection.Items = new List <ContentfulNews> {
                contentfulNews
            };
            var newsCollection = new List <ContentfulNews> {
                contentfulNews
            };
            var simpleNewsQuery =
                new QueryBuilder <ContentfulNews>()
                .ContentTypeIs("news")
                .FieldEquals("fields.slug", slug)
                .Include(1)
                .Build();

            _client.Setup(o => o.GetEntries(
                              It.Is <QueryBuilder <ContentfulNews> >(q => q.Build() == simpleNewsQuery),
                              It.IsAny <CancellationToken>()))
            .ReturnsAsync(collection);
            _videoRepository.Setup(o => o.Process(It.IsAny <string>())).Returns(contentfulNews.Body);
            _cacheWrapper.Setup(_ => _.GetFromCacheOrDirectlyAsync(It.Is <string>(s => s == "news-all"), It.IsAny <Func <Task <IList <ContentfulNews> > > >(), It.Is <int>(s => s == 60))).ReturnsAsync(newsCollection);


            var newsItem = new News(Title, Slug, Teaser, Purpose, Image, ImageConverter.ConvertToThumbnail(Image), Body, _sunriseDate, _sunsetDate, _crumbs, alerts, null, new List <Document>(), new List <string> {
                "A category"
            });

            _newsContentfulFactory.Setup(o => o.ToModel(It.IsAny <ContentfulNews>())).Returns(newsItem);

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

            // Assert
            response.StatusCode.Should().Be(HttpStatusCode.OK);
            var news = response.Get <News>();
        }