public static Operation Build(JObject jOperation) { var op = PatchDocument.CreateOperation((string)jOperation["op"]); op.Read(jOperation); return(op); }
public void CreateEmptyPatch() { var sample = GetSample2(); var sampletext = sample.ToString(); var patchDocument = new PatchDocument(); new JsonPatcher().Patch(ref sample, patchDocument); Assert.Equal(sampletext,sample.ToString()); }
public void Replace_a_property_value_with_a_new_value() { var sample = PatchTests.GetSample2(); var patchDocument = new PatchDocument(); var pointer = new JsonPointer("/books/0/author"); patchDocument.AddOperation(new ReplaceOperation() { Path = pointer, Value = new JValue("Bob Brown") }); new JsonPatcher().Patch(ref sample, patchDocument); Assert.Equal("Bob Brown", (string)pointer.Find(sample)); }
public void Remove_a_property() { var sample = PatchTests.GetSample2(); var patchDocument = new PatchDocument(); var pointer = new JsonPointer("/books/0/author"); patchDocument.AddOperation(new RemoveOperation() { Path = pointer }); new JsonPatcher().Patch(ref sample, patchDocument); Assert.Throws(typeof(ArgumentException), () => { pointer.Find(sample); }); }
public void Replace_a_property_value_with_an_object() { var sample = PatchTests.GetSample2(); var patchDocument = new PatchDocument(); var pointer = new JsonPointer("/books/0/author"); patchDocument.AddOperation(new ReplaceOperation() { Path = pointer, Value = new JObject(new[] { new JProperty("hello", "world") }) }); new JsonPatcher().Patch(ref sample, patchDocument); var newPointer = new JsonPointer("/books/0/author/hello"); Assert.Equal("world", (string)newPointer.Find(sample)); }
public static PatchDocument Load(JArray document) { var root = new PatchDocument(); if (document != null) { foreach (var jOperation in document.Children().Cast <JObject>()) { var op = Operation.Build(jOperation); root.AddOperation(op); } } return(root); }
public static PatchDocument Load(JArray document) { var root = new PatchDocument(); if (document != null) { foreach (var jOperation in document.Children().Cast<JObject>()) { var op = Operation.Build(jOperation); root.AddOperation(op); } } return root; }
public void Test_a_value() { var sample = PatchTests.GetSample2(); var patchDocument = new PatchDocument(); var pointer = new JsonPointer("/books/0/author"); patchDocument.AddOperation(new TestOperation() { Path = pointer, Value = new JValue("Billy Burton") }); Assert.Throws(typeof(InvalidOperationException), () => { var patcher = new JsonPatcher(); patcher.Patch(ref sample, patchDocument); }); }
public void Move_array_element() { var sample = PatchTests.GetSample2(); var patchDocument = new PatchDocument(); var frompointer = new JsonPointer("/books/1"); var topointer = new JsonPointer("/books/0/child"); patchDocument.AddOperation(new MoveOperation() { FromPath = frompointer, Path = topointer }); var patcher = new JsonPatcher(); patcher.Patch(ref sample, patchDocument); var result = topointer.Find(sample); Assert.IsType(typeof(JObject), result); }
public void Move_property() { var sample = PatchTests.GetSample2(); var patchDocument = new PatchDocument(); var frompointer = new JsonPointer("/books/0/author"); var topointer = new JsonPointer("/books/1/author"); patchDocument.AddOperation(new MoveOperation() { FromPath = frompointer, Path = topointer }); var patcher = new JsonPatcher(); patcher.Patch(ref sample, patchDocument); var result = (string)topointer.Find(sample); Assert.Equal("F. Scott Fitzgerald", result); }
public void Copy_property() { var sample = PatchTests.GetSample2(); var patchDocument = new PatchDocument(); var frompointer = new JsonPointer("/books/0/ISBN"); var topointer = new JsonPointer("/books/1/ISBN"); patchDocument.AddOperation(new AddOperation() { Path = frompointer, Value = new JValue("21123123") }); patchDocument.AddOperation(new CopyOperation() { FromPath = frompointer, Path = topointer }); var patcher = new JsonPatcher(); patcher.Patch(ref sample, patchDocument); var result = new JsonPointer("/books/1/ISBN").Find(sample); Assert.Equal("21123123", result); }
public void Add_an_non_existing_member_property() // Why isn't this replace? { var sample = PatchTests.GetSample2(); var patchDocument = new PatchDocument(); var pointer = new JsonPointer("/books/0/ISBN"); patchDocument.AddOperation(new AddOperation() { Path = pointer, Value = new JValue("213324234343") }); var patcher = new JsonPatcher(); patcher.Patch(ref sample, patchDocument); var result = (string)pointer.Find(sample); Assert.Equal("213324234343", result); }
public void Add_an_array_element() { var sample = PatchTests.GetSample2(); var patchDocument = new PatchDocument(); var pointer = new JsonPointer("/books"); patchDocument.AddOperation(new AddOperation() { Path = pointer, Value = new JObject(new[] { new JProperty("author", "James Brown") }) }); var patcher = new JsonPatcher(); patcher.Patch(ref sample, patchDocument); var list = sample["books"] as JArray; Assert.Equal(3, list.Count); }
public void Remove_an_array_element() { var sample = PatchTests.GetSample2(); var patchDocument = new PatchDocument(); var pointer = new JsonPointer("/books/0"); patchDocument.AddOperation(new RemoveOperation() { Path = pointer }); var patcher = new JsonPatcher(); patcher.Patch(ref sample, patchDocument); Assert.Throws(typeof(ArgumentException), () => { var x = pointer.Find("/books/1"); }); }
public void SerializePatchDocument() { var patchDoc = new PatchDocument( new Operation[] { new TestOperation() {Path = new JsonPointer("/a/b/c"), Value = new JValue("foo")}, new RemoveOperation() {Path = new JsonPointer("/a/b/c") }, new AddOperation() {Path = new JsonPointer("/a/b/c"), Value = new JArray(new JValue("foo"), new JValue("bar"))}, new ReplaceOperation() {Path = new JsonPointer("/a/b/c"), Value = new JValue(42)}, new MoveOperation() {FromPath = new JsonPointer("/a/b/c"), Path = new JsonPointer("/a/b/d") }, new CopyOperation() {FromPath = new JsonPointer("/a/b/d"), Path = new JsonPointer("/a/b/e") }, }); var outputstream = patchDoc.ToStream(); var output = new StreamReader(outputstream).ReadToEnd(); var jOutput = JToken.Parse(output); var jExpected = JToken.Parse(new StreamReader(this.GetType() .Assembly.GetManifestResourceStream(this.GetType(), "Samples.LoadTest1.json")).ReadToEnd()); Assert.True(JToken.DeepEquals(jExpected,jOutput)); }
private JsonMergePatchDiff(PatchDocument patchDocument, int jsonObjectHashCode) { _jsonMergePatch = patchDocument; _jsonObjectHashCode = jsonObjectHashCode; }