def test_01(self): a = {'foo': 'bar'} b = {} self.assertEqual(jsonpatch_from_diff(a, b), [{ 'op': 'remove', 'path': '/foo' }])
def test_04(self): a = ['foo'] b = [] self.assertEqual(jsonpatch_from_diff(a, b), [{ 'op': 'remove', 'path': '/0' }])
def test_04(self): a = ['boo'] b = ['foo'] self.assertEqual(jsonpatch_from_diff(a, b), [{ 'op': 'replace', 'path': '/0', 'value': 'foo' }])
def test_03(self): a = [] b = ['foo'] self.assertEqual(jsonpatch_from_diff(a, b), [{ 'op': 'add', 'path': '/0', 'value': 'foo' }])
def test_02(self): a = {'foo': 'boo'} b = {'foo': 'bar'} self.assertEqual(jsonpatch_from_diff(a, b), [{ 'op': 'replace', 'path': '/foo', 'value': 'bar' }])
def test_14(self): a = {'a': {'s': 'v', 'b': {'c': [1, {'changeme': 'foo'}]}}} b = {'a': {'s': 'v', 'b': {'c': [1, {'changeme': 'bar'}]}}} self.assertEqual(jsonpatch_from_diff(a, b), [{ 'op': 'replace', 'path': '/a/b/c/1/changeme', 'value': 'bar' }])
def test_10(self): a = {} b = {"foo": "foo/bar~boo"} self.assertEqual(jsonpatch_from_diff(a, b), [{ 'op': 'add', 'path': '/foo', 'value': 'foo/bar~boo' }])
def test_00(self): a = {} b = {'foo': 'bar'} self.assertEqual(jsonpatch_from_diff(a, b), [{ 'op': 'add', 'path': '/foo', 'value': 'bar' }])
def test_06(self): a = ['a', 'c'] b = ['b'] self.assertEqual(jsonpatch_from_diff(a, b), [{ 'op': 'replace', 'path': '/0', 'value': 'b' }, { 'op': 'remove', 'path': '/1' }])
def test_09(self): a = {'context': {'a': 'nocopy'}} b = {'context': {'b': 'nocopy'}} self.assertEqual(jsonpatch_from_diff(a, b), [{ 'op': 'remove', 'path': '/context/a' }, { 'op': 'add', 'path': '/context/b', 'value': 'nocopy' }])
def test_08(self): a = {'a': 'nocopy'} b = {'b': 'nocopy'} self.assertEqual(jsonpatch_from_diff(a, b), [{ 'op': 'remove', 'path': '/a' }, { 'op': 'add', 'path': '/b', 'value': 'nocopy' }])
def test_13(self): a = {'a': {'s': 'v', 'b': {'c': [1, 2]}}} b = {'a': {'s': 'v', 'b': {'c': [2, 1]}}} self.assertEqual(jsonpatch_from_diff(a, b), [{ 'op': 'replace', 'path': '/a/b/c/0', 'value': 2 }, { 'op': 'replace', 'path': '/a/b/c/1', 'value': 1 }])
def test_05(self): a = {'changeme': 'a', 'removeme': 'a'} b = {'changeme': 'b', 'addme': 'b'} self.assertEqual(jsonpatch_from_diff(a, b), [{ 'op': 'replace', 'path': '/changeme', 'value': 'b' }, { 'op': 'remove', 'path': '/removeme' }, { 'op': 'add', 'path': '/addme', 'value': 'b' }])
def test_11(self): a = {'a': {'changeme': 1}, 'b': {'removeme': 'foo', 'keep': 'bar'}} b = {'a': {'changeme': 2}, 'b': {'keep': 'bar', 'addme': 'b'}} self.assertEqual(jsonpatch_from_diff(a, b), [{ 'op': 'replace', 'path': '/a/changeme', 'value': 2 }, { 'op': 'remove', 'path': '/b/removeme' }, { 'op': 'add', 'path': '/b/addme', 'value': 'b' }])
def test_12(self): a = {'removeme': {'a': 1, 'c': {'a': [1, 2]}}} b = {'addme': {'a': 1, 'c': {'a': [1, 2]}}} self.assertEqual(jsonpatch_from_diff(a, b), [{ 'op': 'remove', 'path': '/removeme' }, { 'op': 'add', 'path': '/addme', 'value': { 'a': 1, 'c': { 'a': [1, 2] } } }])
def test_15(self): # update an array inside a dictionary inside an array a = [{'a': 1, 'b': 2, 'c': {'foo': 'bar'}, 'd': [1, 2, 3]}] b = [{'d': [1, 2, 3, 4]}] self.assertEqual(jsonpatch_from_diff(a, b), [ { 'op': 'remove', 'path': '/0/a' }, { 'op': 'remove', 'path': '/0/b' }, { 'op': 'remove', 'path': '/0/c' }, { 'op': 'add', 'path': '/0/d/3', 'value': 4 }, ])