public void MapsEnumValues()
        {
            var converter = new DefaultBluePayResponseObjectConverter <TestResponseObject>();
            var obj       = new TestResponseObject();

            converter.SetValue(obj, "Enum_Value", "2");
            Assert.AreEqual(TestEnum.Two, obj.EnumValue);
        }
        public void MapsBoolValues()
        {
            var converter = new DefaultBluePayResponseObjectConverter <TestResponseObject>();
            var obj       = new TestResponseObject();

            converter.SetValue(obj, "Bool_Value", "true");
            Assert.AreEqual(true, obj.BoolValue);
        }
        public void MapsStringValues()
        {
            var converter = new DefaultBluePayResponseObjectConverter <TestResponseObject>();
            var obj       = new TestResponseObject();

            converter.SetValue(obj, "String_Value", "ABC");
            Assert.AreEqual("ABC", obj.StringValue);
        }
        public void MapsIntValues()
        {
            var converter = new DefaultBluePayResponseObjectConverter <TestResponseObject>();
            var obj       = new TestResponseObject();

            converter.SetValue(obj, "Int_Value", "1");
            Assert.AreEqual(1, obj.IntValue);
        }
        public void ThrowsOnUnconvertableProperty()
        {
            var converter = new DefaultBluePayResponseObjectConverter <TestResponseObject>();
            var obj       = new TestResponseObject();

            try
            {
                converter.SetValue(obj, "Unconvertable", "Value");
                Assert.Fail("Expected ArgumentException");
            }
            catch (ArgumentException ex)
            {
                Assert.AreEqual($"Property 'Unconvertable' (Unconvertable) of type '{typeof(List<object>).FullName}' cannot convert from a string\r\nParameter name: property", ex.Message);
            }
        }
        public void ThrowsOnMissingPropertyNonDynamic()
        {
            var converter = new DefaultBluePayResponseObjectConverter <TestResponseObject>();
            var obj       = new TestResponseObject();

            try
            {
                converter.SetValue(obj, "Not_Exists", "Value");
                Assert.Fail("Expected ArgumentException");
            }
            catch (ArgumentException ex)
            {
                Assert.AreEqual($"Property 'NotExists' (Not_Exists) does not exist on Type '{typeof(TestResponseObject).FullName}'\r\nParameter name: property", ex.Message);
            }
        }