public void PASS_Serialize() { AttachmentProperty prop = new AttachmentProperty("attach") { Fields = new List<IDocumentProperty>() { new StringProperty("file") { Index = IndexSettingEnum.No, IndexOptions = IndexOptionEnum.DocumentId, OmitNorms = true }, new DateProperty("date") { Store = true }, new StringProperty("author") { Analyzer = new PropertyAnalyzer(new StandardAnalyzer("standard")) } } }; string json = JsonConvert.SerializeObject(prop); Assert.IsNotNull(json); string expectedJson = "{\"attach\":{\"type\":\"attachment\",\"fields\":{\"file\":{\"type\":\"string\",\"index\":\"no\"},\"date\":{\"type\":\"date\",\"store\":true},\"author\":{\"type\":\"string\",\"analyzer\":\"standard\"}}}}"; Assert.AreEqual(expectedJson, json); }
public void PASS_Create() { AttachmentProperty prop = new AttachmentProperty("attach") { Fields = new List<IDocumentProperty>() { new StringProperty("file") { Index = IndexSettingEnum.No }, new DateProperty("date") { Store = true }, new StringProperty("author") { Analyzer = new PropertyAnalyzer(new StandardAnalyzer("standard")) } } }; Assert.IsNotNull(prop); Assert.AreEqual("attach", prop.Name); Assert.AreEqual((int)3, prop.Fields.Count()); Assert.IsInstanceOfType(prop.Fields.First(), typeof(StringProperty)); StringProperty stringProp = prop.Fields.First() as StringProperty; Assert.AreEqual(IndexSettingEnum.No, stringProp.Index); Assert.IsInstanceOfType(prop.Fields.ElementAt(1), typeof(DateProperty)); DateProperty dateProp = prop.Fields.ElementAt(1) as DateProperty; Assert.AreEqual(true, dateProp.Store); Assert.IsInstanceOfType(prop.Fields.Last(), typeof(StringProperty)); stringProp = prop.Fields.Last() as StringProperty; Assert.AreEqual("standard", stringProp.Analyzer.Analyzer.Name); }
public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer) { Dictionary<string, object> propDict = serializer.Deserialize<Dictionary<string, object>>(reader); AttachmentProperty prop = new AttachmentProperty(propDict.First().Key); Dictionary<string, object> fieldDict = JsonConvert.DeserializeObject<Dictionary<string, object>>(propDict.First().Value.ToString()); DocumentPropertyBase.Deserialize(prop, fieldDict); if (fieldDict.ContainsKey(_FIELDS)) prop.Fields = JsonConvert.DeserializeObject<DocumentPropertyCollection>(fieldDict.GetString(_FIELDS)); return prop; }