public void AddToListAppend() { // Arrange var targetObject = new SimpleObjectWithNestedObject { SimpleObject = new SimpleObject { IntegerList = new List <int> { 1, 2, 3 } } }; var patchDocument = new JsonPatchDocument <SimpleObjectWithNestedObject>(); patchDocument.Add(o => o.SimpleObject.IntegerList, 4); // Act patchDocument.ApplyTo(targetObject); // Assert Assert.Equal(new List <int> { 1, 2, 3, 4 }, targetObject.SimpleObject.IntegerList); }
public void Copy_DeepClonesObject() { // Arrange var targetObject = new SimpleObjectWithNestedObject() { SimpleObject = new SimpleObject() { StringProperty = "A", AnotherStringProperty = "B" }, InheritedObject = new InheritedObject() { StringProperty = "C", AnotherStringProperty = "D" } }; var patchDocument = new JsonPatchDocument <SimpleObjectWithNestedObject>(); patchDocument.Copy(o => o.InheritedObject, o => o.SimpleObject); // Act patchDocument.ApplyTo(targetObject); // Assert Assert.Equal("C", targetObject.SimpleObject.StringProperty); Assert.Equal("D", targetObject.SimpleObject.AnotherStringProperty); Assert.Equal("C", targetObject.InheritedObject.StringProperty); Assert.Equal("D", targetObject.InheritedObject.AnotherStringProperty); Assert.NotSame(targetObject.SimpleObject.StringProperty, targetObject.InheritedObject.StringProperty); }
public void TestNestedObject() { // Arrange var targetObject = new SimpleObjectWithNestedObject() { NestedObject = new NestedObject() { StringProperty = "B" } }; var testNested = new NestedObject() { StringProperty = "B" }; var patchDocument = new JsonPatchDocument <SimpleObjectWithNestedObject>(); patchDocument.Test(o => o.NestedObject, testNested); // Act patchDocument.ApplyTo(targetObject); // Assert Assert.Equal("B", targetObject.NestedObject.StringProperty); }
public void ReplaceNestedObject_WithSerialization() { // Arrange var targetObject = new SimpleObjectWithNestedObject() { IntegerValue = 1 }; var newNested = new NestedObject() { StringProperty = "B" }; var patchDocument = new JsonPatchDocument <SimpleObjectWithNestedObject>(); patchDocument.Replace(o => o.NestedObject, newNested); var serialized = JsonConvert.SerializeObject(patchDocument); var deserialized = JsonConvert.DeserializeObject <JsonPatchDocument <SimpleObjectWithNestedObject> >(serialized); // Act deserialized.ApplyTo(targetObject); // Assert Assert.Equal("B", targetObject.NestedObject.StringProperty); }
public void Replace_AtEndOfList() { // Arrange var targetObject = new SimpleObjectWithNestedObject() { SimpleObject = new SimpleObject() { IntegerList = new List <int>() { 1, 2, 3 } } }; var patchDocument = new JsonPatchDocument <SimpleObjectWithNestedObject>(); patchDocument.Replace(o => o.SimpleObject.IntegerList, 5); // Act patchDocument.ApplyTo(targetObject); // Assert Assert.Equal(new List <int>() { 1, 2, 5 }, targetObject.SimpleObject.IntegerList); }
public void MoveFromList_ToNonList_BetweenHierarchy() { // Arrange var targetObject = new SimpleObjectWithNestedObject() { SimpleObject = new SimpleObject() { IntegerList = new List <int>() { 1, 2, 3 } } }; var patchDocument = new JsonPatchDocument <SimpleObjectWithNestedObject>(); patchDocument.Move(o => o.SimpleObject.IntegerList, 0, o => o.IntegerValue); // Act patchDocument.ApplyTo(targetObject); // Assert Assert.Equal(new List <int>() { 2, 3 }, targetObject.SimpleObject.IntegerList); Assert.Equal(1, targetObject.IntegerValue); }
public void AddToIntegerIList() { // Arrange var targetObject = new SimpleObjectWithNestedObject() { SimpleObject = new SimpleObject() { IntegerIList = new List <int>() { 1, 2, 3 } } }; var patchDocument = new JsonPatchDocument <SimpleObjectWithNestedObject>(); patchDocument.Add(o => (List <int>)o.SimpleObject.IntegerIList, 4, 0); // Act patchDocument.ApplyTo(targetObject); // Assert Assert.Equal(new List <int>() { 4, 1, 2, 3 }, targetObject.SimpleObject.IntegerIList); }
public void Move_KeepsObjectReference() { // Arrange var sDto = new SimpleObject() { StringProperty = "A", AnotherStringProperty = "B" }; var iDto = new InheritedObject() { StringProperty = "C", AnotherStringProperty = "D" }; var targetObject = new SimpleObjectWithNestedObject() { SimpleObject = sDto, InheritedObject = iDto }; var patchDocument = new JsonPatchDocument <SimpleObjectWithNestedObject>(); patchDocument.Move(o => o.InheritedObject, o => o.SimpleObject); // Act patchDocument.ApplyTo(targetObject); // Assert Assert.Equal("C", targetObject.SimpleObject.StringProperty); Assert.Equal("D", targetObject.SimpleObject.AnotherStringProperty); Assert.Same(iDto, targetObject.SimpleObject); Assert.Null(targetObject.InheritedObject); }
public void AddToComplextTypeList_SpecifyIndex() { // Arrange var targetObject = new SimpleObjectWithNestedObject() { SimpleObjectList = new List <SimpleObject>() { new SimpleObject { StringProperty = "String1" }, new SimpleObject { StringProperty = "String2" } } }; var patchDocument = new JsonPatchDocument <SimpleObjectWithNestedObject>(); patchDocument.Add(o => o.SimpleObjectList[0].StringProperty, "ChangedString1"); // Act patchDocument.ApplyTo(targetObject); // Assert Assert.Equal("ChangedString1", targetObject.SimpleObjectList[0].StringProperty); }
public void Copy_KeepsObjectType() { // Arrange var targetObject = new SimpleObjectWithNestedObject() { SimpleObject = new SimpleObject(), InheritedObject = new InheritedObject() }; var patchDocument = new JsonPatchDocument <SimpleObjectWithNestedObject>(); patchDocument.Copy(o => o.InheritedObject, o => o.SimpleObject); // Act patchDocument.ApplyTo(targetObject); // Assert Assert.Equal(typeof(InheritedObject), targetObject.SimpleObject.GetType()); }
public void Copy_BreaksObjectReference() { // Arrange var targetObject = new SimpleObjectWithNestedObject() { SimpleObject = new SimpleObject(), InheritedObject = new InheritedObject() }; var patchDocument = new JsonPatchDocument <SimpleObjectWithNestedObject>(); patchDocument.Copy(o => o.InheritedObject, o => o.SimpleObject); // Act patchDocument.ApplyTo(targetObject); // Assert Assert.NotSame(targetObject.SimpleObject, targetObject.InheritedObject); }
public void Move_KeepsObjectReferenceInList() { // Arrange var simpleObject1 = new SimpleObject() { IntegerValue = 1 }; var simpleObject2 = new SimpleObject() { IntegerValue = 2 }; var simpleObject3 = new SimpleObject() { IntegerValue = 3 }; var targetObject = new SimpleObjectWithNestedObject() { SimpleObjectList = new List <SimpleObject>() { simpleObject1, simpleObject2, simpleObject3 } }; var patchDocument = new JsonPatchDocument <SimpleObjectWithNestedObject>(); patchDocument.Move(o => o.SimpleObjectList, 0, o => o.SimpleObjectList, 1); // Act patchDocument.ApplyTo(targetObject); // Assert Assert.Equal(new List <SimpleObject>() { simpleObject2, simpleObject1, simpleObject3 }, targetObject.SimpleObjectList); Assert.Equal(2, targetObject.SimpleObjectList[0].IntegerValue); Assert.Equal(1, targetObject.SimpleObjectList[1].IntegerValue); Assert.Same(simpleObject2, targetObject.SimpleObjectList[0]); Assert.Same(simpleObject1, targetObject.SimpleObjectList[1]); }
public void TestStringProperty_InNestedObject() { // Arrange var targetObject = new SimpleObjectWithNestedObject { NestedObject = new NestedObject { StringProperty = "A" } }; var patchDocument = new JsonPatchDocument <NestedObject>(); patchDocument.Test(o => o.StringProperty, "A"); // Act patchDocument.ApplyTo(targetObject.NestedObject); // Assert Assert.Equal("A", targetObject.NestedObject.StringProperty); }
public void TestInList_IsSuccessful() { // Arrange var targetObject = new SimpleObjectWithNestedObject { SimpleObject = new SimpleObject { IntegerList = new List <int> { 1, 2, 3 } } }; var patchDocument = new JsonPatchDocument <SimpleObjectWithNestedObject>(); patchDocument.Test(o => o.SimpleObject.IntegerList, 3, 2); // Act & Assert patchDocument.ApplyTo(targetObject); }
public void AddReplaces_ExistingStringProperty() { // Arrange var targetObject = new SimpleObjectWithNestedObject() { SimpleObject = new SimpleObject() { StringProperty = "A" } }; var patchDocument = new JsonPatchDocument <SimpleObjectWithNestedObject>(); patchDocument.Add(o => o.SimpleObject.StringProperty, "B"); // Act patchDocument.ApplyTo(targetObject); // Assert Assert.Equal("B", targetObject.SimpleObject.StringProperty); }
public void RemoveStringProperty() { // Arrange var targetObject = new SimpleObjectWithNestedObject() { SimpleObject = new SimpleObject() { StringProperty = "A" } }; var patchDocument = new JsonPatchDocument <SimpleObjectWithNestedObject>(); patchDocument.Remove(o => o.SimpleObject.StringProperty); // Act patchDocument.ApplyTo(targetObject); // Assert Assert.Null(targetObject.SimpleObject.StringProperty); }
public void CopyNullStringProperty_ToAnotherStringProperty() { // Arrange var targetObject = new SimpleObjectWithNestedObject() { SimpleObject = new SimpleObject() { StringProperty = null, AnotherStringProperty = "B" } }; var patchDocument = new JsonPatchDocument <SimpleObjectWithNestedObject>(); patchDocument.Copy(o => o.SimpleObject.StringProperty, o => o.SimpleObject.AnotherStringProperty); // Act patchDocument.ApplyTo(targetObject); // Assert Assert.Null(targetObject.SimpleObject.AnotherStringProperty); }
public void TestInList_InvalidPosition() { // Arrange var targetObject = new SimpleObjectWithNestedObject { SimpleObject = new SimpleObject { IntegerList = new List <int> { 1, 2, 3 } } }; var patchDocument = new JsonPatchDocument <SimpleObjectWithNestedObject>(); patchDocument.Test(o => o.SimpleObject.IntegerList, 4, -1); // Act & Assert var exception = Assert.Throws <JsonPatchException>(() => { patchDocument.ApplyTo(targetObject); }); Assert.Equal("The index value provided by path segment '-1' is out of bounds of the array size.", exception.Message); }
public void MoveIntegerValue_ToAnotherIntegerProperty() { // Arrange var targetObject = new SimpleObjectWithNestedObject() { SimpleObject = new SimpleObject() { IntegerValue = 2, AnotherIntegerValue = 3 } }; var patchDocument = new JsonPatchDocument <SimpleObjectWithNestedObject>(); patchDocument.Move(o => o.SimpleObject.IntegerValue, o => o.SimpleObject.AnotherIntegerValue); // Act patchDocument.ApplyTo(targetObject); // Assert Assert.Equal(2, targetObject.SimpleObject.AnotherIntegerValue); Assert.Equal(0, targetObject.SimpleObject.IntegerValue); }