예제 #1
0
        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);
        }
예제 #2
0
        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);
        }
예제 #3
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;
        }