public void AddResultsInReplace() { // Arrange var doc = new SimpleDTOWithNestedDTO() { SimpleDTO = new SimpleDTO() { StringProperty = "A" } }; // create patch var patchDoc = new JsonPatchDocument<SimpleDTOWithNestedDTO>(); patchDoc.Add<string>(o => o.SimpleDTO.StringProperty, "B"); // Act patchDoc.ApplyTo(doc); // Assert Assert.Equal("B", doc.SimpleDTO.StringProperty); }
public void AddResultsInReplaceWithSerialization() { // Arrange var doc = new SimpleDTOWithNestedDTO() { SimpleDTO = new SimpleDTO() { StringProperty = "A" } }; // create patch var patchDoc = new JsonPatchDocument<SimpleDTOWithNestedDTO>(); patchDoc.Add<string>(o => o.SimpleDTO.StringProperty, "B"); var serialized = JsonConvert.SerializeObject(patchDoc); var deserialized = JsonConvert.DeserializeObject<JsonPatchDocument<SimpleDTOWithNestedDTO>>(serialized); // Act deserialized.ApplyTo(doc); // Assert Assert.Equal("B", doc.SimpleDTO.StringProperty); }
public void ReplacePropertyInNestedObjectWithSerialization() { // Arrange var doc = new SimpleDTOWithNestedDTO() { IntegerValue = 1 }; // create patch var patchDoc = new JsonPatchDocument<SimpleDTOWithNestedDTO>(); patchDoc.Replace<string>(o => o.NestedDTO.StringProperty, "B"); // serialize & deserialize var serialized = JsonConvert.SerializeObject(patchDoc); var deserialized = JsonConvert.DeserializeObject<JsonPatchDocument<SimpleDTOWithNestedDTO>>(serialized); // Act deserialized.ApplyTo(doc); // Assert Assert.Equal("B", doc.NestedDTO.StringProperty); }
public void AddToListInvalidPositionTooSmall_LogsError() { // Arrange var doc = new SimpleDTOWithNestedDTO() { SimpleDTO = new SimpleDTO() { IntegerList = new List<int>() { 1, 2, 3 } } }; // create patch var patchDoc = new JsonPatchDocument<SimpleDTOWithNestedDTO>(); patchDoc.Add<int>(o => o.SimpleDTO.IntegerList, 4, -1); var logger = new TestErrorLogger<SimpleDTOWithNestedDTO>(); patchDoc.ApplyTo(doc, logger.LogErrorMessage); //Assert Assert.Equal( "For operation 'add' on array property at path '/simpledto/integerlist/-1', the index is negative.", logger.ErrorMessage); }
public void AddToNestedIntegerIList() { // Arrange var doc = new SimpleDTOWithNestedDTO() { SimpleDTOIList = new List<SimpleDTO> { new SimpleDTO { IntegerIList = new List<int>() { 1, 2, 3 } } } }; // create patch var patchDoc = new JsonPatchDocument<SimpleDTOWithNestedDTO>(); patchDoc.Add<int>(o => (List<int>)o.SimpleDTOIList[0].IntegerIList, 4, 0); // Act patchDoc.ApplyTo(doc); // Assert Assert.Equal(new List<int>() { 4, 1, 2, 3 }, doc.SimpleDTOIList[0].IntegerIList); }
public void MoveFromNonListToList() { // Arrange var doc = new SimpleDTOWithNestedDTO() { SimpleDTO = new SimpleDTO() { IntegerValue = 5, IntegerList = new List<int>() { 1, 2, 3 } } }; // create patch var patchDoc = new JsonPatchDocument<SimpleDTOWithNestedDTO>(); patchDoc.Move<int>(o => o.SimpleDTO.IntegerValue, o => o.SimpleDTO.IntegerList, 0); // Act patchDoc.ApplyTo(doc); // Assert Assert.Equal(0, doc.IntegerValue); Assert.Equal(new List<int>() { 5, 1, 2, 3 }, doc.SimpleDTO.IntegerList); }
public void Replace() { // Arrange var doc = new SimpleDTOWithNestedDTO() { SimpleDTO = new SimpleDTO() { StringProperty = "A", DecimalValue = 10 } }; // create patch var patchDoc = new JsonPatchDocument<SimpleDTOWithNestedDTO>(); patchDoc.Replace<string>(o => o.SimpleDTO.StringProperty, "B"); patchDoc.Replace(o => o.SimpleDTO.DecimalValue, 12); // Act patchDoc.ApplyTo(doc); // Assert Assert.Equal("B", doc.SimpleDTO.StringProperty); Assert.Equal(12, doc.SimpleDTO.DecimalValue); }
public void CopyWithSerialization() { // Arrange var doc = new SimpleDTOWithNestedDTO() { SimpleDTO = new SimpleDTO() { StringProperty = "A", AnotherStringProperty = "B" } }; // create patch var patchDoc = new JsonPatchDocument<SimpleDTOWithNestedDTO>(); patchDoc.Copy<string>(o => o.SimpleDTO.StringProperty, o => o.SimpleDTO.AnotherStringProperty); var serialized = JsonConvert.SerializeObject(patchDoc); var deserialized = JsonConvert.DeserializeObject<JsonPatchDocument<SimpleDTOWithNestedDTO>>(serialized); // Act deserialized.ApplyTo(doc); // Assert Assert.Equal("A", doc.SimpleDTO.AnotherStringProperty); }
public void MoveFomListToNonListBetweenHierarchy() { // Arrange var doc = new SimpleDTOWithNestedDTO() { SimpleDTO = new SimpleDTO() { IntegerList = new List<int>() { 1, 2, 3 } } }; // create patch var patchDoc = new JsonPatchDocument<SimpleDTOWithNestedDTO>(); patchDoc.Move<int>(o => o.SimpleDTO.IntegerList, 0, o => o.IntegerValue); // Act patchDoc.ApplyTo(doc); // Assert Assert.Equal(new List<int>() { 2, 3 }, doc.SimpleDTO.IntegerList); Assert.Equal(1, doc.IntegerValue); }
public void AddToNestedIntegerIListWithSerialization() { // Arrange var doc = new SimpleDTOWithNestedDTO() { SimpleDTOIList = new List<SimpleDTO> { new SimpleDTO { IntegerIList = new List<int>() { 1, 2, 3 } } } }; // create patch var patchDoc = new JsonPatchDocument<SimpleDTOWithNestedDTO>(); patchDoc.Add<int>(o => (List<int>)o.SimpleDTOIList[0].IntegerIList, 4, 0); var serialized = JsonConvert.SerializeObject(patchDoc); var deserialized = JsonConvert.DeserializeObject<JsonPatchDocument<SimpleDTOWithNestedDTO>>(serialized); // Act deserialized.ApplyTo(doc); // Assert Assert.Equal(new List<int>() { 4, 1, 2, 3 }, doc.SimpleDTOIList[0].IntegerIList); }
public void CopyToEndOfList() { // Arrange var doc = new SimpleDTOWithNestedDTO() { SimpleDTO = new SimpleDTO() { IntegerValue = 5, IntegerList = new List<int>() { 1, 2, 3 } } }; // create patch var patchDoc = new JsonPatchDocument<SimpleDTOWithNestedDTO>(); patchDoc.Copy<int>(o => o.SimpleDTO.IntegerValue, o => o.SimpleDTO.IntegerList); // Act patchDoc.ApplyTo(doc); // Assert Assert.Equal(new List<int>() { 1, 2, 3, 5 }, doc.SimpleDTO.IntegerList); }
public void ReplaceInListInvalid_PositionTooLarge_LogsError() { // Arrange var doc = new SimpleDTOWithNestedDTO() { SimpleDTO = new SimpleDTO() { IntegerList = new List<int>() { 1, 2, 3 } } }; // create patch var patchDoc = new JsonPatchDocument<SimpleDTOWithNestedDTO>(); patchDoc.Replace<int>(o => o.SimpleDTO.IntegerList, 5, 3); var logger = new TestErrorLogger<SimpleDTOWithNestedDTO>(); patchDoc.ApplyTo(doc, logger.LogErrorMessage); // Assert Assert.Equal( "For operation 'replace' on array property at path '/simpledto/integerlist/3', the index is " + "larger than the array size.", logger.ErrorMessage); }
public void ReplacePropertyInNestedObject() { // Arrange var doc = new SimpleDTOWithNestedDTO() { IntegerValue = 1 }; // create patch var patchDoc = new JsonPatchDocument<SimpleDTOWithNestedDTO>(); patchDoc.Replace<string>(o => o.NestedDTO.StringProperty, "B"); // Act patchDoc.ApplyTo(doc); // Assert Assert.Equal("B", doc.NestedDTO.StringProperty); }
public void ReplaceInListInvalidPositionTooSmall() { // Arrange var doc = new SimpleDTOWithNestedDTO() { SimpleDTO = new SimpleDTO() { IntegerList = new List<int>() { 1, 2, 3 } } }; // create patch var patchDoc = new JsonPatchDocument<SimpleDTOWithNestedDTO>(); patchDoc.Replace<int>(o => o.SimpleDTO.IntegerList, 5, -1); // Act & Assert var exception = Assert.Throws<JsonPatchException>(() => { patchDoc.ApplyTo(doc); }); Assert.Equal("For operation 'replace' on array property at path '/simpledto/integerlist/-1', the index is negative.", exception.Message); }
public void ReplaceInListInvalidInvalidPositionTooLargeWithSerialization() { // Arrange var doc = new SimpleDTOWithNestedDTO() { SimpleDTO = new SimpleDTO() { IntegerList = new List<int>() { 1, 2, 3 } } }; // create patch var patchDoc = new JsonPatchDocument<SimpleDTOWithNestedDTO>(); patchDoc.Replace<int>(o => o.SimpleDTO.IntegerList, 5, 3); var serialized = JsonConvert.SerializeObject(patchDoc); var deserialized = JsonConvert.DeserializeObject<JsonPatchDocument<SimpleDTOWithNestedDTO>>(serialized); // Act & Assert var exception = Assert.Throws<JsonPatchException>(() => { deserialized.ApplyTo(doc); }); Assert.Equal( "For operation 'replace' on array property at path '/simpledto/integerlist/3', the index is " + "larger than the array size.", exception.Message); }
public void ReplaceInList() { // Arrange var doc = new SimpleDTOWithNestedDTO() { SimpleDTO = new SimpleDTO() { IntegerList = new List<int>() { 1, 2, 3 } } }; // create patch var patchDoc = new JsonPatchDocument<SimpleDTOWithNestedDTO>(); patchDoc.Replace<int>(o => o.SimpleDTO.IntegerList, 5, 0); // Act patchDoc.ApplyTo(doc); // Assert Assert.Equal(new List<int>() { 5, 2, 3 }, doc.SimpleDTO.IntegerList); }
public void ReplaceFullListWithCollectionWithSerialization() { // Arrange var doc = new SimpleDTOWithNestedDTO() { SimpleDTO = new SimpleDTO() { IntegerList = new List<int>() { 1, 2, 3 } } }; // create patch var patchDoc = new JsonPatchDocument<SimpleDTOWithNestedDTO>(); patchDoc.Replace<IEnumerable<int>>(o => o.SimpleDTO.IntegerList, new Collection<int>() { 4, 5, 6 }); var serialized = JsonConvert.SerializeObject(patchDoc); var deserialized = JsonConvert.DeserializeObject<JsonPatchDocument<SimpleDTOWithNestedDTO>>(serialized); // Act deserialized.ApplyTo(doc); // Assert Assert.Equal(new List<int>() { 4, 5, 6 }, doc.SimpleDTO.IntegerList); }
public void ReplaceFullListWithCollection() { // Arrange var doc = new SimpleDTOWithNestedDTO() { SimpleDTO = new SimpleDTO() { IntegerList = new List<int>() { 1, 2, 3 } } }; // create patch var patchDoc = new JsonPatchDocument<SimpleDTOWithNestedDTO>(); patchDoc.Replace<IEnumerable<int>>(o => o.SimpleDTO.IntegerList, new Collection<int>() { 4, 5, 6 }); // Act patchDoc.ApplyTo(doc); // Assert Assert.Equal(new List<int>() { 4, 5, 6 }, doc.SimpleDTO.IntegerList); }
public void CopyInListWithSerialization() { // Arrange var doc = new SimpleDTOWithNestedDTO() { SimpleDTO = new SimpleDTO() { IntegerList = new List<int>() { 1, 2, 3 } } }; // create patch var patchDoc = new JsonPatchDocument<SimpleDTOWithNestedDTO>(); patchDoc.Copy<int>(o => o.SimpleDTO.IntegerList, 0, o => o.SimpleDTO.IntegerList, 1); var serialized = JsonConvert.SerializeObject(patchDoc); var deserialized = JsonConvert.DeserializeObject<JsonPatchDocument<SimpleDTOWithNestedDTO>>(serialized); // Act deserialized.ApplyTo(doc); // Assert Assert.Equal(new List<int>() { 1, 1, 2, 3 }, doc.SimpleDTO.IntegerList); }
public void SerializationTests() { // Arrange var doc = new SimpleDTOWithNestedDTO() { SimpleDTO = new SimpleDTO() { StringProperty = "A", DecimalValue = 10, DoubleValue = 10, FloatValue = 10, IntegerValue = 10 } }; // create patch var patchDoc = new JsonPatchDocument<SimpleDTOWithNestedDTO>(); patchDoc.Replace(o => o.SimpleDTO.StringProperty, "B"); patchDoc.Replace(o => o.SimpleDTO.DecimalValue, 12); patchDoc.Replace(o => o.SimpleDTO.DoubleValue, 12); patchDoc.Replace(o => o.SimpleDTO.FloatValue, 12); patchDoc.Replace(o => o.SimpleDTO.IntegerValue, 12); // serialize & deserialize var serialized = JsonConvert.SerializeObject(patchDoc); var deserizalized = JsonConvert.DeserializeObject<JsonPatchDocument<SimpleDTOWithNestedDTO>>(serialized); // Act deserizalized.ApplyTo(doc); // Assert Assert.Equal("B", doc.SimpleDTO.StringProperty); Assert.Equal(12, doc.SimpleDTO.DecimalValue); Assert.Equal(12, doc.SimpleDTO.DoubleValue); Assert.Equal(12, doc.SimpleDTO.FloatValue); Assert.Equal(12, doc.SimpleDTO.IntegerValue); }
public void AddToComplextTypeListSpecifyIndex() { // Arrange var doc = new SimpleDTOWithNestedDTO() { SimpleDTOList = new List<SimpleDTO>() { new SimpleDTO { StringProperty = "String1" }, new SimpleDTO { StringProperty = "String2" } } }; // create patch var patchDoc = new JsonPatchDocument<SimpleDTOWithNestedDTO>(); patchDoc.Add<string>(o => o.SimpleDTOList[0].StringProperty, "ChangedString1"); // Act patchDoc.ApplyTo(doc); // Assert Assert.Equal("ChangedString1", doc.SimpleDTOList[0].StringProperty); }
public void AddToListAppend() { // Arrange var doc = new SimpleDTOWithNestedDTO() { SimpleDTO = new SimpleDTO() { IntegerList = new List<int>() { 1, 2, 3 } } }; // create patch var patchDoc = new JsonPatchDocument<SimpleDTOWithNestedDTO>(); patchDoc.Add<int>(o => o.SimpleDTO.IntegerList, 4); // Act patchDoc.ApplyTo(doc); // Assert Assert.Equal(new List<int>() { 1, 2, 3, 4 }, doc.SimpleDTO.IntegerList); }
public void Move() { // Arrange var doc = new SimpleDTOWithNestedDTO() { SimpleDTO = new SimpleDTO() { StringProperty = "A", AnotherStringProperty = "B" } }; // create patch var patchDoc = new JsonPatchDocument<SimpleDTOWithNestedDTO>(); patchDoc.Move<string>(o => o.SimpleDTO.StringProperty, o => o.SimpleDTO.AnotherStringProperty); // Act patchDoc.ApplyTo(doc); // Assert Assert.Equal("A", doc.SimpleDTO.AnotherStringProperty); Assert.Equal(null, doc.SimpleDTO.StringProperty); }
public void AddToListInvalidPositionTooLarge() { // Arrange var doc = new SimpleDTOWithNestedDTO() { SimpleDTO = new SimpleDTO() { IntegerList = new List<int>() { 1, 2, 3 } } }; // create patch var patchDoc = new JsonPatchDocument<SimpleDTOWithNestedDTO>(); patchDoc.Add<int>(o => o.SimpleDTO.IntegerList, 4, 4); // Act & Assert var exception = Assert.Throws<JsonPatchException>(() => { patchDoc.ApplyTo(doc); }); Assert.Equal( "For operation 'add' on array property at path '/simpledto/integerlist/4', the index is " + "larger than the array size.", exception.Message); }
public void MoveFromListToEndOfList() { // Arrange var doc = new SimpleDTOWithNestedDTO() { SimpleDTO = new SimpleDTO() { IntegerList = new List<int>() { 1, 2, 3 } } }; // create patch var patchDoc = new JsonPatchDocument<SimpleDTOWithNestedDTO>(); patchDoc.Move<int>(o => o.SimpleDTO.IntegerList, 0, o => o.SimpleDTO.IntegerList); // Act patchDoc.ApplyTo(doc); // Assert Assert.Equal(new List<int>() { 2, 3, 1 }, doc.SimpleDTO.IntegerList); }
public void AddToListInvalidPositionTooSmallWithSerialization() { // Arrange var doc = new SimpleDTOWithNestedDTO() { SimpleDTO = new SimpleDTO() { IntegerList = new List<int>() { 1, 2, 3 } } }; // create patch var patchDoc = new JsonPatchDocument<SimpleDTOWithNestedDTO>(); patchDoc.Add<int>(o => o.SimpleDTO.IntegerList, 4, -1); var serialized = JsonConvert.SerializeObject(patchDoc); var deserialized = JsonConvert.DeserializeObject<JsonPatchDocument<SimpleDTOWithNestedDTO>>(serialized); // Act & Assert var exception = Assert.Throws<JsonPatchException>(() => { deserialized.ApplyTo(doc); }); Assert.Equal( "For operation 'add' on array property at path '/simpledto/integerlist/-1', the index is negative.", exception.Message); }
public void MoveFromNonListToListWithSerialization() { // Arrange var doc = new SimpleDTOWithNestedDTO() { SimpleDTO = new SimpleDTO() { IntegerValue = 5, IntegerList = new List<int>() { 1, 2, 3 } } }; // create patch var patchDoc = new JsonPatchDocument<SimpleDTOWithNestedDTO>(); patchDoc.Move<int>(o => o.SimpleDTO.IntegerValue, o => o.SimpleDTO.IntegerList, 0); var serialized = JsonConvert.SerializeObject(patchDoc); var deserialized = JsonConvert.DeserializeObject<JsonPatchDocument<SimpleDTOWithNestedDTO>>(serialized); // Act deserialized.ApplyTo(doc); // Assert Assert.Equal(0, doc.IntegerValue); Assert.Equal(new List<int>() { 5, 1, 2, 3 }, doc.SimpleDTO.IntegerList); }
public void AddToComplextTypeListSpecifyIndexWithSerialization() { // Arrange var doc = new SimpleDTOWithNestedDTO() { SimpleDTOList = new List<SimpleDTO>() { new SimpleDTO { StringProperty = "String1" }, new SimpleDTO { StringProperty = "String2" } } }; // create patch var patchDoc = new JsonPatchDocument<SimpleDTOWithNestedDTO>(); patchDoc.Add<string>(o => o.SimpleDTOList[0].StringProperty, "ChangedString1"); var serialized = JsonConvert.SerializeObject(patchDoc); var deserialized = JsonConvert.DeserializeObject<JsonPatchDocument<SimpleDTOWithNestedDTO>>(serialized); // Act deserialized.ApplyTo(doc); // Assert Assert.Equal("ChangedString1", doc.SimpleDTOList[0].StringProperty); }