Beispiel #1
0
        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 async Task ChangeItemConverter_ChangeItemDeleted()
        {
            JsonSerializerSettings settings = new JsonSerializerSettings();

            settings.Converters.Add(new ChangeItemConverter());

            ChangeItemDeleted original = new ChangeItemDeleted();

            original.Iso_639_1     = "en";
            original.OriginalValue = "Hello world";

            string            json   = JsonConvert.SerializeObject(original, settings);
            ChangeItemDeleted result = JsonConvert.DeserializeObject <ChangeItemBase>(json, settings) as ChangeItemDeleted;

            await Verify(result);
        }
Beispiel #3
0
        public async Task ChangeItemConverter_ChangeItemDeleted()
        {
            ChangeItemDeleted original = new ChangeItemDeleted();

            original.Iso_639_1     = "en";
            original.OriginalValue = "Hello world";

            string            json   = Serializer.SerializeToString(original);
            ChangeItemDeleted result = Serializer.DeserializeFromString <ChangeItemBase>(json) as ChangeItemDeleted;

            await Verify(new
            {
                json,
                result
            });
        }
        public void ChangeItemConverter_ChangeItemDeleted()
        {
            JsonSerializerSettings settings = new JsonSerializerSettings();

            settings.Converters.Add(new ChangeItemConverter());

            ChangeItemDeleted original = new ChangeItemDeleted();

            original.Iso_639_1     = "en";
            original.OriginalValue = "Hello world";

            string            json   = JsonConvert.SerializeObject(original, settings);
            ChangeItemDeleted result = JsonConvert.DeserializeObject <ChangeItemBase>(json, settings) as ChangeItemDeleted;

            Assert.NotNull(result);
            Assert.Equal(original.Iso_639_1, result.Iso_639_1);
            Assert.Equal(original.OriginalValue, result.OriginalValue);
        }