コード例 #1
0
        public void Index_Property_Data_With_Value_Indexer()
        {
            var contentValueSetBuilder = IndexInitializer.GetContentValueSetBuilder(Factory.GetInstance <PropertyEditorCollection>(), false);

            using (var luceneDir = new RandomIdRamDirectory())
                using (var indexer = IndexInitializer.GetUmbracoIndexer(ProfilingLogger, luceneDir,
                                                                        validator: new ContentValueSetValidator(false)))
                    using (indexer.ProcessNonAsync())
                    {
                        indexer.CreateIndex();

                        var contentType = MockedContentTypes.CreateBasicContentType();
                        contentType.AddPropertyType(new PropertyType("test", ValueStorageType.Ntext)
                        {
                            Alias = "grid",
                            Name  = "Grid",
                            PropertyEditorAlias = Core.Constants.PropertyEditors.Aliases.Grid
                        });
                        var content = MockedContent.CreateBasicContent(contentType);
                        content.Id   = 555;
                        content.Path = "-1,555";
                        var gridVal = new GridValue
                        {
                            Name     = "n1",
                            Sections = new List <GridValue.GridSection>
                            {
                                new GridValue.GridSection
                                {
                                    Grid = "g1",
                                    Rows = new List <GridValue.GridRow>
                                    {
                                        new GridValue.GridRow
                                        {
                                            Id    = Guid.NewGuid(),
                                            Name  = "row1",
                                            Areas = new List <GridValue.GridArea>
                                            {
                                                new GridValue.GridArea
                                                {
                                                    Grid     = "g2",
                                                    Controls = new List <GridValue.GridControl>
                                                    {
                                                        new GridValue.GridControl
                                                        {
                                                            Editor = new GridValue.GridEditor
                                                            {
                                                                Alias = "editor1",
                                                                View  = "view1"
                                                            },
                                                            Value = "value1"
                                                        },
                                                        new GridValue.GridControl
                                                        {
                                                            Editor = new GridValue.GridEditor
                                                            {
                                                                Alias = "editor1",
                                                                View  = "view1"
                                                            },
                                                            Value = "value2"
                                                        }
                                                    }
                                                }
                                            }
                                        }
                                    }
                                }
                            }
                        };

                        var json = JsonConvert.SerializeObject(gridVal);
                        content.Properties["grid"].SetValue(json);

                        var valueSet = contentValueSetBuilder.GetValueSets(content);
                        indexer.IndexItems(valueSet);

                        var searcher = indexer.GetSearcher();

                        var results = searcher.CreateQuery().Id(555).Execute();
                        Assert.AreEqual(1, results.TotalItemCount);

                        var result = results.First();
                        Assert.IsTrue(result.Values.ContainsKey("grid.row1"));
                        Assert.AreEqual("value1", result.AllValues["grid.row1"][0]);
                        Assert.AreEqual("value2", result.AllValues["grid.row1"][1]);
                        Assert.IsTrue(result.Values.ContainsKey("grid"));
                        Assert.AreEqual("value1 value2 ", result["grid"]);
                        Assert.IsTrue(result.Values.ContainsKey($"{UmbracoExamineIndex.RawFieldPrefix}grid"));
                        Assert.AreEqual(json, result[$"{UmbracoExamineIndex.RawFieldPrefix}grid"]);
                    }
        }