Esempio n. 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_ChangeItemUpdated()
        {
            JsonSerializerSettings settings = new JsonSerializerSettings();

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

            ChangeItemUpdated original = new ChangeItemUpdated();

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

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

            await Verify(result);
        }
Esempio n. 3
0
        public async Task ChangeItemConverter_ChangeItemUpdated()
        {
            ChangeItemUpdated original = new ChangeItemUpdated();

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

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

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

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

            ChangeItemUpdated original = new ChangeItemUpdated();

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

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

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