public void A_property_is_excluded_from_auto_patch_if_is_not_present_in_the_json() { const string json = @" { 'IntProperty' : 5, 'DateTimeProperty' : '2020-01-12' }"; var patch = new Patch <SourceClass>(json); var targetObject = new TargetClass { StringProperty = "original_value", IntProperty = 1, DateTimeProperty = DateTime.UtcNow }; patch.AutoPatch(targetObject, x => x.StringProperty, x => x.IntProperty, x => x.DateTimeProperty ); Assert.AreEqual("original_value", targetObject.StringProperty); Assert.AreEqual(5, targetObject.IntProperty); Assert.AreEqual(new DateTime(2020, 1, 12), targetObject.DateTimeProperty); }
public void Patching_nested_properties_is_valid() { const string json = @" { 'Nested' : { 'NestedProperty' : 'nested_value' } }"; var patch = new Patch <SourceClass>(json); var targetObject = new TargetClass { Nested = new Nested { NestedProperty = "original_nested" } }; patch.AutoPatch(targetObject, x => x.Nested.NestedProperty ); Assert.AreEqual("nested_value", targetObject.Nested.NestedProperty); }
public void AutoPatch_works_with_null() { const string json = @" { 'stringProperty' : null }"; var patch = new Patch <SourceClass>(json); var targetObject = new TargetClass { StringProperty = "original", }; patch.AutoPatch(targetObject, x => x.StringProperty ); Assert.IsNull(targetObject.StringProperty); }
public void Patch_value_is_not_applied_if_validation_fails() { const string json = @" { 'IntProperty' : 15 }"; var patch = new Patch <SourceClass>(json); var targetObject = new TargetClass { IntProperty = 1 }; patch.AutoPatch(targetObject, x => x.IntProperty ); Assert.AreEqual(1, targetObject.IntProperty); }
public void Patch_is_case_insensitive() { const string json = @" { 'stringproperty' : 'json_value', 'INTPROPERTY' : 10 }"; var patch = new Patch <SourceClass>(json); var targetObject = new TargetClass { StringProperty = "original_value", IntProperty = 1 }; patch.AutoPatch(targetObject, x => x.StringProperty, x => x.IntProperty ); Assert.AreEqual("json_value", targetObject.StringProperty); Assert.AreEqual(10, targetObject.IntProperty); }