public void Deserializes()
        {
            var form         = new PolymorphicCandidateDescriptor("lorem", typeof(FormA));
            var formProvider = Mock.Of <IPolymorphicCandidateProvider>();

            Mock.Get(formProvider).Setup(p => p.GetAll()).Returns(new List <PolymorphicCandidateDescriptor> {
                form
            });
            Mock.Get(formProvider).Setup(p => p.Get("lorem")).Returns(form);

            var sut    = new PolymorphicFormConverter(Mock.Of <ILogger <PolymorphicFormConverter> >(), formProvider, Mock.Of <IHumanizer>());
            var result = JsonConvert.DeserializeObject <ContentTypeA>("{ form: { type: 'lorem', value: { property: 'ipsum' } } }", sut);

            Assert.IsType <FormA>(result.Form);
            Assert.Equal("ipsum", ((FormA)result.Form).Property);
        }
        public void Serializes()
        {
            var form         = new PolymorphicCandidateDescriptor("lorem", typeof(FormA));
            var formProvider = Mock.Of <IPolymorphicCandidateProvider>();

            Mock.Get(formProvider).Setup(p => p.GetAll()).Returns(new List <PolymorphicCandidateDescriptor> {
                form
            });
            Mock.Get(formProvider).Setup(p => p.Get("lorem")).Returns(form);
            Mock.Get(formProvider).Setup(p => p.Get(typeof(FormA))).Returns(form);

            var sut    = new PolymorphicFormConverter(Mock.Of <ILogger <PolymorphicFormConverter> >(), formProvider, Mock.Of <IHumanizer>());
            var result = JsonConvert.SerializeObject(new ContentTypeA {
                Form = new FormA {
                    Property = "ipsum"
                }
            }, sut);

            Assert.Equal("{\"Form\":{\"type\":\"lorem\",\"name\":null,\"value\":{\"property\":\"ipsum\"}}}", result);
        }