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);
        }
Example #2
0
        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);
        }
        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);
        }