public void CreatePageSelector() { // Arrange var context = new BestBetStoreTestContext(); context.ResponseMessage.StatusCode = HttpStatusCode.OK; context.ResponseMessage.Content = new StringContent("{'status':'ok', 'id':'testBId'}"); context.MockController.Setup(c => c.Post(It.IsAny<BestBetModel>())).Returns(context.ResponseMessage); context.MockSearchService.Setup(s => s.FindMatchingContent(It.IsAny<BestBetEntity>())) .Returns(new ContentReference(5)); var bestBetStore = context.BestBetStore; var testEntity = new BestBetEntity { Id = "testBId", BestBetHasOwnStyle = true, BestBetTargetDescription = "testDescription", BestBetTargetTitle = "testTitle", Phrase = "testPhrase", Tags = new List<string>(), TargetName = "testName", TargetKey = "5", TargetType = Helpers.PageBestBetSelector }; // Act var result = bestBetStore.Create(testEntity); // Assert Assert.Equal("testBId", result); }
public void CreateExternal() { // Arrange var context = new BestBetStoreTestContext(); context.ResponseMessage.StatusCode = HttpStatusCode.OK; context.ResponseMessage.Content = new StringContent("{'status':'ok', 'id':'testBId'}"); context.MockController.Setup(c => c.Post(It.IsAny<BestBetModel>())).Returns(context.ResponseMessage); var bestBetStore = context.BestBetStore; var testEntity = new BestBetEntity { Id = "testBId", BestBetHasOwnStyle = true, BestBetTargetDescription = "testDescription", BestBetTargetTitle = "testTitle", Phrase = "testPhrase", Tags = new List<string>(), TargetName = "testName", TargetKey = "http://episerver.com", TargetType = "ExternalUrl" }; // Act var result = bestBetStore.Create(testEntity); // Assert Assert.Equal("testBId", result); }
public ContentReference FindMatchingContent(BestBetEntity bestBetEntity) { var siteId = bestBetEntity.Tags.Find(s => s.StartsWith(Helpers.SiteIdTag)) .Substring(Helpers.SiteIdTag.Length); var searchQuery = SearchClient.Instance .Search<IContent>() .Filter(x => x.Name.Match(bestBetEntity.TargetName)) .Filter(x => x.SiteId().Match(siteId)); if (bestBetEntity.TargetType.Equals(Helpers.PageBestBetSelector)) { searchQuery = searchQuery.Filter(x => x.MatchTypeHierarchy(typeof(PageData))); } else if (bestBetEntity.TargetType.Equals(Helpers.CommerceBestBetSelector)) { // resolving type from string to avoid referencing Commerce assemblies var commerceCatalogEntryType = Type.GetType("EPiServer.Commerce.Catalog.ContentTypes.EntryContentBase, EPiServer.Business.Commerce"); searchQuery = searchQuery.Filter(x => x.MatchTypeHierarchy(commerceCatalogEntryType)); } var searchResults = searchQuery.Select(c => c.ContentLink).Take(1).GetResult(); return searchResults.Hits.FirstOrDefault()?.Document; }