public async Task ChangeItemConverter_ChangeItemCreated() { JsonSerializerSettings settings = new JsonSerializerSettings(); settings.Converters.Add(new ChangeItemConverter()); ChangeItemCreated original = new ChangeItemCreated(); original.Iso_639_1 = "en"; string json = JsonConvert.SerializeObject(original, settings); ChangeItemCreated result = JsonConvert.DeserializeObject <ChangeItemBase>(json, settings) as ChangeItemCreated; await Verify(result); }
public async Task ChangeItemConverter_ChangeItemCreated() { ChangeItemCreated original = new ChangeItemCreated(); original.Iso_639_1 = "en"; string json = Serializer.SerializeToString(original); ChangeItemCreated result = Serializer.DeserializeFromString <ChangeItemBase>(json) as ChangeItemCreated; await Verify(new { json, result }); }
public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer) { JObject jObject = JObject.Load(reader); ChangeItemBase result; if (jObject["action"] == null) { // We cannot determine the correct type, let's hope we were provided one result = (ChangeItemBase)Activator.CreateInstance(objectType); } else { // Determine the type based on the media_type ChangeAction mediaType = jObject["action"].ToObject <ChangeAction>(); switch (mediaType) { case ChangeAction.Added: result = new ChangeItemAdded(); break; case ChangeAction.Created: result = new ChangeItemCreated(); break; case ChangeAction.Updated: result = new ChangeItemUpdated(); break; case ChangeAction.Deleted: result = new ChangeItemDeleted(); break; case ChangeAction.Destroyed: result = new ChangeItemDestroyed(); break; default: throw new ArgumentOutOfRangeException(); } } // Populate the result serializer.Populate(jObject.CreateReader(), result); return(result); }
public void ChangeItemConverter_ChangeItemCreated() { JsonSerializerSettings settings = new JsonSerializerSettings(); settings.Converters.Add(new ChangeItemConverter()); ChangeItemCreated original = new ChangeItemCreated(); original.Iso_639_1 = "en"; string json = JsonConvert.SerializeObject(original, settings); ChangeItemCreated result = JsonConvert.DeserializeObject <ChangeItemBase>(json, settings) as ChangeItemCreated; Assert.NotNull(result); Assert.Equal(original.Iso_639_1, result.Iso_639_1); }