public void ShouldReturnNotFoundForTagAndCategory() { _mockTimeProvider.Setup(o => o.Now()).Returns(new DateTime(2016, 08, 5)); var newsRoom = new Newsroom(_alerts, true, "test-id"); _newsRoomContentfulFactory.Setup(o => o.ToModel(It.IsAny <ContentfulNewsRoom>())).Returns(newsRoom); var news = new News(Title, Slug, Teaser, Purpose, Image, ThumbnailImage, Body, _sunriseDate, _sunsetDate, _crumbs, _alerts, new List <string>() { "tag1", "tag2" }, new List <Document>(), _newsCategories); _newsContentfulFactory.Setup(o => o.ToModel(It.IsAny <ContentfulNews>())).Returns(news); var newsListCollection = new ContentfulCollection <ContentfulNews>(); newsListCollection.Items = new List <ContentfulNews> { new ContentfulNewsBuilder().Title("Another news article").Slug("another-news-article").Teaser("This is another news article").SunriseDate(new DateTime(2016, 06, 30, 23, 0, 0, DateTimeKind.Utc)).SunsetDate(new DateTime(2017, 11, 22, 23, 0, 0, DateTimeKind.Utc)).Build(), new ContentfulNewsBuilder().Title("This is the news").Slug("news-of-the-century").Teaser("Read more for the news").SunriseDate(new DateTime(2016, 08, 24, 23, 30, 0, DateTimeKind.Utc)).SunsetDate(new DateTime(2016, 08, 23, 23, 0, 0, DateTimeKind.Utc)).Build(), }; _cacheWrapper.Setup(_ => _.GetFromCacheOrDirectlyAsync(It.Is <string>(s => s == "news-all"), It.IsAny <Func <Task <IList <ContentfulNews> > > >(), It.Is <int>(s => s == 60))).ReturnsAsync(newsListCollection.Items.ToList()); _cacheWrapper.Setup(_ => _.GetFromCacheOrDirectlyAsync(It.Is <string>(s => s == "newsroom"), It.IsAny <Func <Task <ContentfulNewsRoom> > >(), It.Is <int>(s => s == 60))).ReturnsAsync(new ContentfulNewsRoom { Title = "test" }); var response = AsyncTestHelper.Resolve(_repository.Get("NotFound", "NotFound", null, null)); response.StatusCode.Should().Be(HttpStatusCode.NotFound); }
public void ShouldReturnNoListOfNewsForDateRange() { _mockTimeProvider.Setup(o => o.Now()).Returns(new DateTime(2016, 09, 5)); var newsRoom = new Newsroom(_alerts, true, "test-id"); _newsRoomContentfulFactory.Setup(o => o.ToModel(It.IsAny <ContentfulNewsRoom>())).Returns(newsRoom); var news = new News("This is within the date Range", Slug, Teaser, Purpose, Image, ThumbnailImage, Body, _sunriseDate, _sunsetDate, _crumbs, _alerts, null, new List <Document>(), _newsCategories); _newsContentfulFactory.Setup(o => o.ToModel(It.IsAny <ContentfulNews>())).Returns(news); var newsListCollection = new ContentfulCollection <ContentfulNews>(); newsListCollection.Items = new List <ContentfulNews> { new ContentfulNewsBuilder().Title("This is within the date Range").Slug("another-news-article").Teaser("This is another news article").SunriseDate(new DateTime(2016, 06, 30, 23, 0, 0, DateTimeKind.Utc)).SunsetDate(new DateTime(2017, 11, 22, 23, 0, 0, DateTimeKind.Utc)).Build(), new ContentfulNewsBuilder().Title("This is within the date Range").Slug("news-of-the-century").Teaser("Read more for the news").SunriseDate(new DateTime(2016, 08, 24, 23, 30, 0, DateTimeKind.Utc)).SunsetDate(new DateTime(2016, 08, 23, 23, 0, 0, DateTimeKind.Utc)).Build(), }; _client.Setup(o => o.GetEntries <ContentfulNews>( It.Is <string>(q => q.Contains(new QueryBuilder <ContentfulNews>().ContentTypeIs("news").Include(1).Build())), It.IsAny <CancellationToken>())).ReturnsAsync(newsListCollection); _cacheWrapper.Setup(_ => _.GetFromCacheOrDirectlyAsync(It.Is <string>(s => s == "news-all"), It.IsAny <Func <Task <IList <ContentfulNews> > > >(), It.Is <int>(s => s == 60))).ReturnsAsync(newsListCollection.Items.ToList()); _cacheWrapper.Setup(_ => _.GetFromCacheOrDirectlyAsync(It.Is <string>(s => s == "newsroom"), It.IsAny <Func <Task <ContentfulNewsRoom> > >(), It.Is <int>(s => s == 60))).ReturnsAsync(new ContentfulNewsRoom { Title = "test" }); var response = AsyncTestHelper.Resolve(_repository.Get(tag: null, category: null, startDate: new DateTime(2017, 08, 01), endDate: new DateTime(2017, 08, 31))); var newsroom = response.Get <Newsroom>(); newsroom.News.Count.Should().Be(0); }
public void ShouldGetOrganisation() { // Arrange var contentfulOrganisation = new ContentfulOrganisation() { AboutUs = "about us", Email = "Email", Phone = "Phone", Slug = "slug", Title = "title", Volunteering = true, VolunteeringText = "test" }; var builder = new QueryBuilder <ContentfulOrganisation>().ContentTypeIs("organisation").FieldEquals("fields.slug", "slug"); var contentfulCollection = new ContentfulCollection <ContentfulOrganisation>() { Items = new List <ContentfulOrganisation> { contentfulOrganisation } }; _contentfulClient.Setup(o => o.GetEntries(It.Is <QueryBuilder <ContentfulOrganisation> >(q => q.Build() == builder.Build()), It.IsAny <CancellationToken>())) .ReturnsAsync(contentfulCollection); // Act var response = AsyncTestHelper.Resolve(_repository.GetOrganisation("slug")); var organisation = response.Get <Organisation>(); // Assert response.StatusCode.Should().Be(HttpStatusCode.OK); organisation.Slug.Should().Be(contentfulOrganisation.Slug); }
public void ItGetsGroupCategories() { // Arrange const string slug = "unit-test-GroupCategory"; var rawGroupCategory = new ContentfulGroupCategoryBuilder().Slug(slug).Name("name").Build(); var collection = new ContentfulCollection <ContentfulGroupCategory>(); collection.Items = new List <ContentfulGroupCategory> { rawGroupCategory }; var builder = new QueryBuilder <ContentfulGroupCategory>().ContentTypeIs("groupCategory"); _contentfulClient.Setup(o => o.GetEntries(It.Is <QueryBuilder <ContentfulGroupCategory> >(q => q.Build() == builder.Build()), It.IsAny <CancellationToken>())) .ReturnsAsync(collection); _contentfulGroupCategoryFactory.Setup(_ => _.ToModel(rawGroupCategory)) .Returns(new GroupCategory("name", "slug", "icon", "imageUrl")); // Act var response = AsyncTestHelper.Resolve(_repository.GetGroupCategories()); // Assert response.StatusCode.Should().Be(HttpStatusCode.OK); }
public void ShouldReturnContenfulGroupHomepage() { var contenfulHomepage = new ContentfulGroupHomepageBuilder().Build(); var collection = new ContentfulCollection <ContentfulGroupHomepage>(); collection.Items = new List <ContentfulGroupHomepage> { contenfulHomepage }; var groupHomepage = new GroupHomepage("title", "slug", "metaDescription", "image-url.jpg", string.Empty, null, null, null, null, string.Empty, string.Empty, string.Empty, string.Empty, new NullEventBanner()); var builder = new QueryBuilder <ContentfulGroupHomepage>().ContentTypeIs("groupHomepage").Include(1); _client.Setup(o => o.GetEntries(It.Is <QueryBuilder <ContentfulGroupHomepage> >(q => q.Build() == builder.Build()), It.IsAny <CancellationToken>())).ReturnsAsync(collection); _groupHomepageContentfulFactory.Setup(o => o.ToModel(contenfulHomepage)).Returns(groupHomepage); var response = AsyncTestHelper.Resolve(_repository.GetGroupHomepage()); var homepage = response.Get <GroupHomepage>(); homepage.BackgroundImage.Should().Be(contenfulHomepage.BackgroundImage.File.Url); homepage.Title.Should().Be(contenfulHomepage.Title); homepage.Slug.Should().Be(contenfulHomepage.Slug); }
public void GetRedirects_BusinessIdExist_ShouldReturnSuccessful() { var ContentfulRedirects = new ContentfulRedirect(); var collection = new ContentfulCollection <ContentfulRedirect>(); collection.Items = new List <ContentfulRedirect>(); var builder = new QueryBuilder <ContentfulRedirect>().ContentTypeIs("redirect").Include(1); _client.Setup(o => o.GetEntries(It.Is <QueryBuilder <ContentfulRedirect> >(q => q.Build() == builder.Build()), It.IsAny <CancellationToken>())).ReturnsAsync(collection); var repository = new RedirectsRepository(_contentfulClientManager.Object, _createConfig.Object, new RedirectBusinessIds(new List <string> { "unittest" }), _contenfulFactory.Object, _shortUrlRedirects, _legacyUrlRedirects); _contenfulFactory.Setup(o => o.ToModel(ContentfulRedirects)).Returns(new NullBusinessIdToRedirects()); var response = AsyncTestHelper.Resolve(repository.GetRedirects()); var redirects = response.Get <Redirects>(); var shortUrls = redirects.ShortUrlRedirects; shortUrls.Count.Should().Be(1); shortUrls["unittest"].Count.Should().Be(0); var legacyUrls = redirects.LegacyUrlRedirects; legacyUrls.Count.Should().Be(1); legacyUrls["unittest"].Count.Should().Be(0); response.StatusCode.Should().Be(HttpStatusCode.OK); }
public void GetsGroupForGroupSlug() { const string slug = "group_slug"; var contentfulGroup = new ContentfulGroupBuilder().Slug(slug).Build(); var collection = new ContentfulCollection <ContentfulGroup>(); collection.Items = new List <ContentfulGroup> { contentfulGroup }; var group = new GroupBuilder().Build(); var builder = new QueryBuilder <ContentfulGroup>().ContentTypeIs("group").FieldEquals("fields.slug", slug).Include(1); _client.Setup(o => o.GetEntries(It.Is <QueryBuilder <ContentfulGroup> >(q => q.Build() == builder.Build()), It.IsAny <CancellationToken>())).ReturnsAsync(collection); _cacheWrapper.Setup(o => o.GetFromCacheOrDirectlyAsync(It.Is <string>(s => s == "event-all"), It.IsAny <Func <Task <IList <ContentfulEvent> > > >(), It.Is <int>(s => s == 60))).ReturnsAsync(new List <ContentfulEvent>()); _groupFactory.Setup(o => o.ToModel(contentfulGroup)).Returns(group); var response = AsyncTestHelper.Resolve(_repository.GetGroup(slug, false)); response.StatusCode.Should().Be(HttpStatusCode.OK); var responseGroup = response.Get <Group>(); responseGroup.Should().BeEquivalentTo(group); }
public void GetAllArticleSlugForSitemap() { var collection = new ContentfulCollection <ContentfulArticleForSiteMap>(); collection.Items = new List <ContentfulArticleForSiteMap> { new ContentfulArticleForSiteMap() { Slug = "slug1", SunriseDate = DateTime.MinValue, SunsetDate = DateTime.MaxValue }, new ContentfulArticleForSiteMap() { Slug = "slug2", SunriseDate = DateTime.MinValue, SunsetDate = DateTime.MaxValue }, new ContentfulArticleForSiteMap() { Slug = "slug3", SunriseDate = DateTime.MinValue, SunsetDate = DateTime.MaxValue } }; var builder = new QueryBuilder <ContentfulArticleForSiteMap>().ContentTypeIs("article").Include(2).Build(); _contentfulClient.Setup(o => o.GetEntries <ContentfulArticleForSiteMap>(It.Is <string>(q => q.Contains(builder)), It.IsAny <CancellationToken>())).ReturnsAsync(collection); var response = AsyncTestHelper.Resolve(_repository.Get()); response.StatusCode.Should().Be(HttpStatusCode.OK); var responseArticle = response.Get <IEnumerable <ArticleSiteMap> >(); responseArticle.ToList().Count.Should().Be(collection.Items.Count()); }
public void ItGetsContactUsIdFromSlug() { // Arrange const string slug = "test-slug"; var rawContactUs = new ContentfulContactUsId() { Slug = slug }; var collection = new ContentfulCollection <ContentfulContactUsId>(); collection.Items = new List <ContentfulContactUsId> { rawContactUs }; // Act var builder = new QueryBuilder <ContentfulContactUsId>().ContentTypeIs("contactUsId").FieldEquals("fields.slug", slug).Include(1); _contentfulClient.Setup(o => o.GetEntries(It.Is <QueryBuilder <ContentfulContactUsId> >(q => q.Build() == builder.Build()), It.IsAny <CancellationToken>())) .ReturnsAsync(collection); var response = AsyncTestHelper.Resolve(_repository.GetContactUsIds(slug)); var model = response.Get <ContactUsId>(); // Assert model.Slug.Should().Be(rawContactUs.Slug); }
public void DoesntGetGroupWhenHiddenDateToIsInTheFutureAndHiddenDateFromIsNull() { // Arrange const string slug = "group_slug"; var contentfulGroup = new ContentfulGroupBuilder().Slug(slug).DateHiddenTo(DateTime.Now.AddDays(3)).Build(); var collection = new ContentfulCollection <ContentfulGroup>(); collection.Items = new List <ContentfulGroup> { contentfulGroup }; var group = new GroupBuilder().Slug("group_slug").DateHiddenTo(DateTime.Now.AddDays(3)).Build(); var builder = new QueryBuilder <ContentfulGroup>().ContentTypeIs("group").FieldEquals("fields.slug", slug).Include(1); _client.Setup(o => o.GetEntries(It.Is <QueryBuilder <ContentfulGroup> >(q => q.Build() == builder.Build()), It.IsAny <CancellationToken>())).ReturnsAsync(collection); _cacheWrapper.Setup(o => o.GetFromCacheOrDirectlyAsync(It.Is <string>(s => s == "event-all"), It.IsAny <Func <Task <IList <ContentfulEvent> > > >(), It.Is <int>(s => s == 60))).ReturnsAsync(new List <ContentfulEvent>()); _groupFactory.Setup(o => o.ToModel(contentfulGroup)).Returns(group); // Act var response = AsyncTestHelper.Resolve(_repository.GetGroup(slug, true)); // Assert response.StatusCode.Should().Be(HttpStatusCode.NotFound); var responseGroup = response.Get <Group>(); responseGroup.Should().BeNull(); }
public void ShouldGetAdvisorsGroupByEmail() { // Arrange var query = new QueryBuilder <ContentfulGroupAdvisor>().ContentTypeIs("groupAdvisors").FieldEquals("fields.email", "email").Include(1).Build(); var collection = new ContentfulCollection <ContentfulGroupAdvisor>(); collection.Items = new List <ContentfulGroupAdvisor>() { new ContentfulGroupAdvisorBuilder().Build() }; // Mock _client.Setup(o => o.GetEntries(It.Is <QueryBuilder <ContentfulGroupAdvisor> >(q => q.Build() == query), It.IsAny <CancellationToken>())) .ReturnsAsync(collection); _contentfulFactory.Setup(o => o.ToModel(It.IsAny <ContentfulGroupAdvisor>())).Returns(new GroupAdvisorBuilder().Build()); // Act var result = AsyncTestHelper.Resolve(_reporisory.Get("email")); // Assert result.Should().NotBeNull(); result.Name.Should().Be("name"); result.EmailAddress.Should().Be("email"); result.HasGlobalAccess.Should().Be(false); }
public async Task PageShouldReturn404IfNoCourseWasFound() { //Arrange var courses = new ContentfulCollection <Course>(); courses.Items = new List <Course>(); var client = new Mock <IContentfulClient>(); client.SetupGet(c => c.SerializerSettings).Returns(new JsonSerializerSettings()); client.Setup(c => c.GetEntries(It.IsAny <QueryBuilder <Course> >(), default(CancellationToken))) .Returns(Task.FromResult(courses)); var visitedLessons = new Mock <IVisitedLessonsManager>(); var breadcrumbsManager = new Mock <IBreadcrumbsManager>(); var viewlocalizer = new Mock <IViewLocalizer>(); viewlocalizer.SetupGet(c => c[It.IsAny <string>()]).Returns(new LocalizedHtmlString("po", "po")); var model = new IndexModel(client.Object, visitedLessons.Object, breadcrumbsManager.Object, viewlocalizer.Object); model.TempData = new Mock <ITempDataDictionary>().Object; //Act var res = await model.OnGet("sluggy-slug"); //Assert Assert.IsType <NotFoundResult>(res); }
public void GetPrivacyNotice_ShouldReturnAPrivacyNotice() { // Arrange const string slug = "test-slug"; var contentfulPrivacyNotice = new ContentfulPrivacyNotice() { Slug = slug }; var privacyNotice = new PrivacyNotice() { Slug = slug }; var contentfulCollection = new ContentfulCollection <ContentfulPrivacyNotice>() { Items = new List <ContentfulPrivacyNotice> { contentfulPrivacyNotice } }; _contentfulClient.Setup(_ => _.GetEntries(It.IsAny <QueryBuilder <ContentfulPrivacyNotice> >(), It.IsAny <CancellationToken>())).ReturnsAsync(contentfulCollection); _contentfulFactory.Setup(_ => _.ToModel(contentfulPrivacyNotice)).Returns(privacyNotice); // Act var result = AsyncTestHelper.Resolve(_repository.GetPrivacyNotice(slug)); // Assert result.Should().BeOfType <PrivacyNotice>(); }
public void ShouldReturnTrueIfUserHasGlobalAccessAndHasGroupInList() { // Arrange var query = new QueryBuilder <ContentfulGroupAdvisor>().ContentTypeIs("groupAdvisors").FieldEquals("fields.email", "email").Include(1).Build(); var collection = new ContentfulCollection <ContentfulGroupAdvisor>(); collection.Items = new List <ContentfulGroupAdvisor>() { new ContentfulGroupAdvisorBuilder().GlobalAccess(true).ContentfulReferences(new List <ContentfulReference> { new ContentfulReferenceBuilder().Slug("group").Build() }).Build() }; // Mock _client.Setup(o => o.GetEntries(It.Is <QueryBuilder <ContentfulGroupAdvisor> >(q => q.Build() == query), It.IsAny <CancellationToken>())) .ReturnsAsync(collection); _contentfulFactory.Setup(o => o.ToModel(It.Is <ContentfulGroupAdvisor>(g => g.Groups.ToList().Exists(p => p.Slug == "group")))) .Returns(new GroupAdvisorBuilder().GlobalAccess(true).Groups(new List <string>() { "group" }).Build()); // Act var result = AsyncTestHelper.Resolve(_reporisory.CheckIfUserHasAccessToGroupBySlug("group", "email")); // Assert result.Should().BeTrue(); }
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); }
private ContentfulCollection <JObject> FetchEntriesRecursively(ContentfulCollection <JObject> entries) { var entryList = new List <JObject>(); var includedAssets = new List <Asset>(); var includedEntries = new List <Entry <dynamic> >(); var collection = new ContentfulCollection <JObject>() { Items = entries.Items }; entryList.AddRange(entries.Items); includedAssets.AddRange(entries.IncludedAssets); includedEntries.AddRange(entries.IncludedEntries); _skip += _limit; while (collection.Count() == _limit) { collection = _client.GetEntries(CreateQueryBuilder()).Result; entryList.AddRange(collection.Items); includedAssets.AddRange(collection.IncludedAssets.Where(c => !includedAssets.Any(a => a.SystemProperties.Id == c.SystemProperties.Id))); includedEntries.AddRange(collection.IncludedEntries.Where(c => !includedAssets.Any(a => a.SystemProperties.Id == c.SystemProperties.Id))); _skip += _limit; } collection.Items = entryList; collection.IncludedAssets = includedAssets; collection.IncludedEntries = includedEntries; return(collection); }
public void ShouldReturnAListOfAListOfCategories() { // Arrange const string slug = "unit-test-GroupCategory"; var testCategorySlug = "test-category-slug"; var listOfContentfulGroups = SetupMockFactoriesAndGetContentfulGroupsForCollection(testCategorySlug); var collection = new ContentfulCollection <ContentfulGroup>(); collection.Items = listOfContentfulGroups; var rawContentfulGroupCategory = new ContentfulGroupCategoryBuilder().Slug(slug).Build(); var rawGroupCategory = new GroupCategory("name", slug, "icon", "imageUrl"); var builder = new QueryBuilder <ContentfulGroup>().ContentTypeIs("group").Include(1).FieldEquals("fields.mapPosition[near]", Defaults.Groups.StockportLatitude + "," + Defaults.Groups.StockportLongitude + ",10").Build(); _client.Setup(o => o.GetEntries <ContentfulGroup>(It.Is <string>(q => q.Contains(builder)), It.IsAny <CancellationToken>())).ReturnsAsync(collection); _cacheWrapper.Setup(o => o.GetFromCacheOrDirectlyAsync(It.Is <string>(s => s == "group-categories"), It.IsAny <Func <Task <List <GroupCategory> > > >(), It.Is <int>(s => s == 60))).ReturnsAsync(new List <GroupCategory>() { rawGroupCategory }); var noLatLngBuilder = new QueryBuilder <ContentfulGroup>().ContentTypeIs("group").Include(1).Build(); _client.Setup(o => o.GetEntries <ContentfulGroup>(It.Is <string>(q => q.Contains(noLatLngBuilder)), It.IsAny <CancellationToken>())).ReturnsAsync(collection); // Act var response = AsyncTestHelper.Resolve(_repository.GetGroupResults(new GroupSearch(), slug)); var filteredGroupResults = response.Get <GroupResults>(); // Assert response.StatusCode.Should().Be(HttpStatusCode.OK); filteredGroupResults.Categories.Count.Should().Be(1); }
public async Task GettingIndexShouldSetLayoutCorrectly() { //Arrange var collection = new ContentfulCollection <Layout>(); collection.Items = new List <Layout>() { new Layout() { Title = "SomeTitle" } }; var client = new Mock <IContentfulClient>(); client.SetupGet(c => c.SerializerSettings).Returns(new JsonSerializerSettings()); client.Setup(c => c.GetEntries(It.IsAny <QueryBuilder <Layout> >(), default(CancellationToken))) .Returns(Task.FromResult(collection)); var model = new IndexModel(client.Object); //Act await model.OnGet(); //Assert Assert.Equal("SomeTitle", model.IndexPage.Title); }
public void ShouldGetsASinglePaymentItemFromASlug() { // Arrange const string slug = "any-payment"; var rawPayment = new ContentfulPaymentBuilder().Slug(slug).Build(); var collection = new ContentfulCollection <ContentfulPayment>(); collection.Items = new List <ContentfulPayment> { rawPayment }; var builder = new QueryBuilder <ContentfulPayment>().ContentTypeIs("payment").FieldEquals("fields.slug", slug).Include(1); _contentfulClient.Setup(o => o.GetEntries( It.Is <QueryBuilder <ContentfulPayment> >( q => q.Build() == builder.Build()), It.IsAny <CancellationToken>())) .ReturnsAsync(collection); // Act var response = AsyncTestHelper.Resolve(_repository.GetPayment(slug)); var paymentItem = response.Get <Payment>(); // Assert response.StatusCode.Should().Be(HttpStatusCode.OK); paymentItem.Description.Should().Be(rawPayment.Description); paymentItem.Title.Should().Be(rawPayment.Title); paymentItem.Teaser.Should().Be(rawPayment.Teaser); paymentItem.Slug.Should().Be(rawPayment.Slug); paymentItem.PaymentDetailsText.Should().Be(rawPayment.PaymentDetailsText); paymentItem.ParisReference.Should().Be(rawPayment.ParisReference); paymentItem.Breadcrumbs.First().Title.Should().Be("title"); }
public void ShouldGetAllPayments() { // Arrange var rawPayments = new List <ContentfulPayment>(); rawPayments.Add(new ContentfulPaymentBuilder().Slug("firstPayment").Build()); rawPayments.Add(new ContentfulPaymentBuilder().Slug("secondPayment").Build()); rawPayments.Add(new ContentfulPaymentBuilder().Slug("thirdPayment").Build()); var collection = new ContentfulCollection <ContentfulPayment>(); collection.Items = rawPayments; var builder = new QueryBuilder <ContentfulPayment>().ContentTypeIs("payment").Include(1).Limit(ContentfulQueryValues.LIMIT_MAX); _contentfulClient.Setup(o => o.GetEntries( It.Is <QueryBuilder <ContentfulPayment> >( q => q.Build() == builder.Build()), It.IsAny <CancellationToken>())) .ReturnsAsync(collection); // Act var response = AsyncTestHelper.Resolve(_repository.Get()); var payments = response.Get <List <Payment> >(); // Assert response.StatusCode.Should().Be(HttpStatusCode.OK); payments.Count.Should().Be(rawPayments.Count); payments[0].Slug.Should().Be(rawPayments[0].Slug); payments[1].Slug.Should().Be(rawPayments[1].Slug); payments[2].Slug.Should().Be(rawPayments[2].Slug); }
public void ShouldReturnVolunteeringWhenSelected() { // Arrange const string slug = "unit-test-GroupCategory"; MapPosition location = new MapPosition() { Lat = 1, Lon = 1 }; var contentfulGroupWithlocation = new ContentfulGroupBuilder().Slug(slug).MapPosition(location).Build(); var collection = new ContentfulCollection <ContentfulGroup>(); collection.Items = new List <ContentfulGroup> { contentfulGroupWithlocation }; bool volunteering = true; var groupWithLocation = new GroupBuilder().Volunteering(volunteering).Slug(slug).Build(); var builder = new QueryBuilder <ContentfulGroup>().ContentTypeIs("group").FieldEquals("fields.slug", slug).Include(1); _client.Setup(o => o.GetEntries(It.Is <QueryBuilder <ContentfulGroup> >(q => q.Build() == builder.Build()), It.IsAny <CancellationToken>())).ReturnsAsync(collection); _cacheWrapper.Setup(o => o.GetFromCacheOrDirectlyAsync(It.Is <string>(s => s == "event-all"), It.IsAny <Func <Task <IList <ContentfulEvent> > > >(), It.Is <int>(s => s == 60))).ReturnsAsync(new List <ContentfulEvent>()); _groupFactory.Setup(o => o.ToModel(contentfulGroupWithlocation)).Returns(groupWithLocation); // Act var response = AsyncTestHelper.Resolve(_repository.GetGroup(slug, false)); // Assert response.StatusCode.Should().Be(HttpStatusCode.OK); var responseProfile = response.Get <Group>(); responseProfile.Volunteering.Should().Be(volunteering); }
public void GivenThereIsItemInTheContentResponse_ItReturnsOKResponseWithTheContentOfStartPage() { // Arrange string slug = "startpage_slug"; var ContentfulStartPage = new ContentfulStartPageBuilder().Slug(slug).Build(); var collection = new ContentfulCollection <ContentfulStartPage>(); collection.Items = new List <ContentfulStartPage> { ContentfulStartPage }; List <Alert> _alerts = new List <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) }; List <Alert> _inlineAlerts = new List <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 startPageItem = new StartPage("Start Page", "startPageSlug", "this is a teaser", "This is a summary", "An upper body", "Start now", "http://start.com", "Lower body", "image.jpg", "icon", new List <Crumb> { new Crumb("title", "slug", "type") }, _alerts, _inlineAlerts, DateTime.MinValue, DateTime.MaxValue); var builder = new QueryBuilder <ContentfulRedirect>().ContentTypeIs("startPage").FieldEquals("fields.slug", slug).Include(3); _client.Setup(o => o.GetEntries(It.Is <QueryBuilder <ContentfulStartPage> >(q => q.Build() == builder.Build()), It.IsAny <CancellationToken>())).ReturnsAsync(collection); _startPageFactory.Setup(o => o.ToModel(It.IsAny <ContentfulStartPage>())).Returns(startPageItem); var response = AsyncTestHelper.Resolve(_repository.GetStartPage(slug)); var startPage = response.Get <StartPage>(); // Act // Assert response.StatusCode.Should().Be(HttpStatusCode.OK); startPage.Title.Should().Be("Start Page"); startPage.Slug.Should().Be("startPageSlug"); startPage.Teaser.Should().Be("this is a teaser"); startPage.Summary.Should().Be("This is a summary"); startPage.UpperBody.Should().Be("An upper body"); startPage.FormLink.Should().Be("http://start.com"); startPage.FormLinkLabel.Should().Be("Start now"); startPage.LowerBody.Should().Be("Lower body"); startPage.BackgroundImage.Should().Be("image.jpg"); startPage.Icon.Should().Be("icon"); startPage.Breadcrumbs.Should().HaveCount(1); startPage.Alerts.Should().BeEquivalentTo(_alerts); startPage.AlertsInline.Should().BeEquivalentTo(_inlineAlerts); }
public NewsRepositoryTest() { _mockTimeProvider = new Mock <ITimeProvider>(); _videoRepository = new Mock <IVideoRepository>(); _cacheWrapper = new Mock <ICache>(); _newsContentType = new ContentType() { Fields = new List <Field>() { new Field() { Name = "Categories", Items = new Schema() { Validations = new List <IFieldValidator>() { new InValuesValidator { RequiredValues = new List <string>() { "Benefits", "Business", "Council leader" } } } } } } }; _newsroomContentfulCollection = new ContentfulCollection <ContentfulNewsRoom>(); _newsroomContentfulCollection.Items = new List <ContentfulNewsRoom> { new ContentfulNewsRoomBuilder().Build() }; _contentfulClientManager = new Mock <IContentfulClientManager>(); _client = new Mock <IContentfulClient>(); _contentfulClientManager.Setup(o => o.GetClient(_config)).Returns(_client.Object); _alertBuilder = new Mock <IContentfulFactory <ContentfulAlert, Alert> >(); _contentfulFactory = new NewsContentfulFactory(_videoRepository.Object, new DocumentContentfulFactory(), _alertBuilder.Object, _mockTimeProvider.Object); _client.Setup(o => o.GetEntries( It.Is <QueryBuilder <ContentfulNewsRoom> >(q => q.Build() == new QueryBuilder <ContentfulNewsRoom>().ContentTypeIs("newsroom").Include(1).Build()), It.IsAny <CancellationToken>())).ReturnsAsync(_newsroomContentfulCollection); _client.Setup(o => o.GetContentType("news", It.IsAny <CancellationToken>())) .ReturnsAsync(_newsContentType); _newsContentfulFactory = new Mock <IContentfulFactory <ContentfulNews, News> >(); _newsRoomContentfulFactory = new Mock <IContentfulFactory <ContentfulNewsRoom, Newsroom> >(); _configuration = new Mock <IConfiguration>(); _configuration.Setup(_ => _["redisExpiryTimes:News"]).Returns("60"); _repository = new NewsRepository(_config, _mockTimeProvider.Object, _contentfulClientManager.Object, _newsContentfulFactory.Object, _newsRoomContentfulFactory.Object, _cacheWrapper.Object, _configuration.Object); }
public void GetsProfileForProfileSlug() { const string slug = "a-slug"; var contentfulTopic = new ContentfulProfileBuilder().Slug(slug).Build(); var collection = new ContentfulCollection <ContentfulProfile>(); collection.Items = new List <ContentfulProfile> { contentfulTopic }; var profile = new Profile { Title = "title", Slug = "slug", Subtitle = "subtitle", Quote = "quote", Image = "image", Body = "body", Breadcrumbs = new List <Crumb> { new Crumb("title", "slug", "type") }, Alerts = new List <Alert> { new Alert("title", "subheading", "body", "severity", DateTime.MinValue, DateTime.MaxValue, "slug", false) }, TriviaSubheading = "trivia heading", TriviaSection = new List <Trivia>(), InlineQuotes = new List <InlineQuote>(), Author = "author", Subject = "subject" }; var builder = new QueryBuilder <ContentfulProfile>().ContentTypeIs("profile").FieldEquals("fields.slug", slug).Include(1); _client.Setup(o => o.GetEntries(It.Is <QueryBuilder <ContentfulProfile> >(q => q.Build() == builder.Build()), It.IsAny <CancellationToken>())).ReturnsAsync(collection); _profileFactory.Setup(o => o.ToModel(contentfulTopic)).Returns(profile); var response = AsyncTestHelper.Resolve(_repository.GetProfile(slug)); response.StatusCode.Should().Be(HttpStatusCode.OK); var responseProfile = response.Get <Profile>(); responseProfile.Should().BeEquivalentTo(profile); }
public static IContentfulClient WithFakeContent <TContent>(this IContentfulClient client, params TContent[] content) { var response = new ContentfulCollection <TContent> { Items = content }; A.CallTo(() => client.GetEntriesByType(A <string> .Ignored, A <QueryBuilder <TContent> > .Ignored, A <CancellationToken> .Ignored)) .ReturnsLazily(() => response); return(client); }
public void CallingContentfulShouldReturnCorrectNumberOfDocuments() { //Arrange var mockClient = new Mock <IContentfulClient>(); mockClient.Setup(c => c.GetSpace(default(CancellationToken))) .ReturnsAsync( new Space() { SystemProperties = new SystemProperties { Id = "467" }, Locales = new List <Locale>() { new Locale() { Code = "en-US", Default = true } } }); var collection = new ContentfulCollection <JObject>() { Items = new List <JObject>() { JObject.FromObject(new { sys = new { id = "123" } }), JObject.FromObject(new { sys = new { id = "3456" } }), JObject.FromObject(new { sys = new { id = "62365" } }), JObject.FromObject(new { sys = new { id = "tw635" } }), JObject.FromObject(new { sys = new { id = "uer46" } }), JObject.FromObject(new { sys = new { id = "jy456" } }), }, IncludedAssets = new List <Asset>(), IncludedEntries = new List <Entry <dynamic> >() }; mockClient.Setup(c => c.GetEntries(It.IsAny <QueryBuilder <JObject> >(), default(CancellationToken))) .ReturnsAsync(collection); var mockContext = new Mock <IExecutionContext>(); var contentful = new Contentful(mockClient.Object).WithContentField("body"); //Act var res = contentful.Execute(new List <IDocument>(), mockContext.Object); //Assert Assert.Equal(6, res.Count()); }
public void GetsAllNewsItemsWhenNoNewsroomIsPresent() { _mockTimeProvider.Setup(o => o.Now()).Returns(new DateTime(2016, 08, 5)); var newsRoom = new Newsroom(new List <Alert> { }, true, ""); _newsRoomContentfulFactory.Setup(o => o.ToModel(It.IsAny <ContentfulNewsRoom>())).Returns(newsRoom); var news = new News(Title, Slug, Teaser, Purpose, Image, ThumbnailImage, Body, _sunriseDate, _sunsetDate, _crumbs, _alerts, null, new List <Document>(), _newsCategories); _newsContentfulFactory.Setup(o => o.ToModel(It.IsAny <ContentfulNews>())).Returns(news); var newsListCollection = new ContentfulCollection <ContentfulNews>(); newsListCollection.Items = new List <ContentfulNews> { new ContentfulNewsBuilder().Title("Another news article").Slug("another-news-article").Teaser("This is another news article").SunriseDate(new DateTime(2016, 06, 30, 23, 0, 0, DateTimeKind.Utc)).SunsetDate(new DateTime(2017, 11, 22, 23, 0, 0, DateTimeKind.Utc)).Build(), new ContentfulNewsBuilder().Title("This is the news").Slug("news-of-the-century").Teaser("Read more for the news").SunriseDate(new DateTime(2016, 08, 24, 23, 30, 0, DateTimeKind.Utc)).SunsetDate(new DateTime(2016, 08, 23, 23, 0, 0, DateTimeKind.Utc)).Build(), }; _client.Setup(o => o.GetEntries <ContentfulNews>( It.Is <string>(q => q.Contains(new QueryBuilder <ContentfulNews>().ContentTypeIs("news").Include(1).Build())), It.IsAny <CancellationToken>())).ReturnsAsync(newsListCollection); _videoRepository.Setup(o => o.Process(It.IsAny <string>())).Returns("The news"); _cacheWrapper.Setup(_ => _.GetFromCacheOrDirectlyAsync(It.Is <string>(s => s == "news-all"), It.IsAny <Func <Task <IList <ContentfulNews> > > >(), It.Is <int>(s => s == 60))).ReturnsAsync(newsListCollection.Items.ToList()); _cacheWrapper.Setup(_ => _.GetFromCacheOrDirectlyAsync(It.Is <string>(s => s == "newsroom"), It.IsAny <Func <Task <ContentfulNewsRoom> > >(), It.Is <int>(s => s == 60))).ReturnsAsync(new ContentfulNewsRoom { Title = "test" }); var response = AsyncTestHelper.Resolve(_repository.Get(null, null, null, null)); response.StatusCode.Should().Be(HttpStatusCode.OK); var newsroom = response.Get <Newsroom>(); newsroom.Alerts.Count.Should().Be(0); newsroom.News.Count.Should().Be(2); newsroom.News.First().Title.Should().Be(Title); newsroom.News.First().Body.Should().Be(Body); newsroom.News.First().Slug.Should().Be(Slug); newsroom.News.First().Teaser.Should().Be(Teaser); newsroom.News.First().SunriseDate.Should().Be(_sunriseDate); newsroom.News.First().SunsetDate.Should().Be(_sunsetDate); newsroom.News.First().Image.Should().Be(Image); newsroom.News.First().ThumbnailImage.Should().Be(ThumbnailImage); newsroom.News.First().Breadcrumbs.Should().BeEquivalentTo(_crumbs); newsroom.News.First().Alerts.Should().BeEquivalentTo(_alerts); newsroom.Dates.Should().HaveCount(1); newsroom.Dates[0].Should().HaveMonth(8); newsroom.Dates[0].Should().HaveYear(2016); }
public async Task CoursesModelShouldLoadAllCoursesWhenNoCategoryIsSelected() { //Arrange var categories = new ContentfulCollection <Category>(); categories.Items = new List <Category>() { new Category() { Title = "Cat1", Slug = "sluggish" }, new Category() { Title = "Cat5", Slug = "another-slug" } }; var courses = new ContentfulCollection <Course>(); courses.Items = new List <Course>() { new Course() { Title = "Course1", Slug = "bah-slug" }, new Course() { Title = "Cruiser2", Slug = "kah-slug" } }; var client = new Mock <IContentfulClient>(); client.SetupGet(c => c.SerializerSettings).Returns(new JsonSerializerSettings()); client.Setup(c => c.GetEntries(It.IsAny <QueryBuilder <Course> >(), default(CancellationToken))) .Returns(Task.FromResult(courses)); client.Setup(c => c.GetEntriesByType("category", It.IsAny <QueryBuilder <Category> >(), default(CancellationToken))) .Returns(Task.FromResult(categories)); var crumbs = new Mock <IBreadcrumbsManager>(); var localizer = new Mock <IViewLocalizer>(); var model = new CoursesModel(client.Object, crumbs.Object, localizer.Object); //Act await model.OnGet(null); //Assert Assert.Equal(courses, model.Courses); }
public void ShouldReturnNotFoundIfNoEventCategoryFound() { var collection = new ContentfulCollection <ContentfulEventCategory>(); collection.Items = new List <ContentfulEventCategory>(); _cacheWrapper.Setup(o => o.GetFromCacheOrDirectlyAsync(It.Is <string>(s => s == "event-categories-content-type"), It.IsAny <Func <Task <List <EventCategory> > > >(), It.Is <int>(s => s == 60))).ReturnsAsync(new List <EventCategory>()); // Act var response = AsyncTestHelper.Resolve(_repository.GetEventCategories()); response.StatusCode.Should().Be(HttpStatusCode.NotFound); }
public async Task PageShouldSelectCorrectCourseAndLessonBySlugs() { //Arrange var courses = new ContentfulCollection <Course>(); courses.Items = new List <Course> { new Course { Slug = "somewhat-sluggish", Lessons = new List <Lesson> { new Lesson { Sys = new SystemProperties { Id = "434" }, Slug = "real-slugger" } } } }; var client = new Mock <IContentfulClient>(); client.SetupGet(c => c.SerializerSettings).Returns(new JsonSerializerSettings()); client.Setup(c => c.GetEntries(It.IsAny <QueryBuilder <Course> >(), default(CancellationToken))) .Returns(Task.FromResult(courses)); var visitedLessons = new Mock <IVisitedLessonsManager>(); var breadcrumbsManager = new Mock <IBreadcrumbsManager>(); var viewlocalizer = new Mock <IViewLocalizer>(); var httpContext = new Mock <HttpContext>(); var modelState = new ModelStateDictionary(); var modelMetadataProvider = new EmptyModelMetadataProvider(); var actionContext = new ActionContext(httpContext.Object, new RouteData(), new PageActionDescriptor(), modelState); var viewData = new ViewDataDictionary(modelMetadataProvider, modelState); var pageContext = new PageContext(actionContext) { ViewData = viewData }; var model = new LessonsModel(client.Object, visitedLessons.Object, breadcrumbsManager.Object, viewlocalizer.Object); model.PageContext = pageContext; //Act var res = await model.OnGet("somewhat-sluggish", "real-slugger"); //Assert Assert.IsType <PageResult>(res); Assert.Equal("somewhat-sluggish", model.Course.Slug); Assert.Equal("real-slugger", model.SelectedLesson.Slug); }