Skip to content

Commit

Permalink
Add tests for operation doc structure.
Browse files Browse the repository at this point in the history
  • Loading branch information
dave-shawley committed Nov 17, 2020
1 parent a7ef7e8 commit b44e7a2
Showing 1 changed file with 64 additions and 0 deletions.
64 changes: 64 additions & 0 deletions tests.py
Original file line number Diff line number Diff line change
Expand Up @@ -688,6 +688,69 @@ def test_creation_fails_with_invalid_patch(self):
jsonpatch.JsonPatch([{'op': 'add', 'path': 'foo', 'value': 'bar'}])


class UtilityMethodTests(unittest.TestCase):

def test_boolean_coercion(self):
empty_patch = jsonpatch.JsonPatch([])
self.assertFalse(empty_patch)

def test_patch_equality(self):
p = jsonpatch.JsonPatch([{'op': 'add', 'path': '/foo', 'value': 'bar'}])
q = jsonpatch.JsonPatch([{'op': 'add', 'path': '/foo', 'value': 'bar'}])
different_op = jsonpatch.JsonPatch([{'op': 'remove', 'path': '/foo'}])
different_path = jsonpatch.JsonPatch([{'op': 'add', 'path': '/bar', 'value': 'bar'}])
different_value = jsonpatch.JsonPatch([{'op': 'add', 'path': '/foo', 'value': 'foo'}])
self.assertNotEqual(p, different_op)
self.assertNotEqual(p, different_path)
self.assertNotEqual(p, different_value)
self.assertEqual(p, q)

def test_operation_equality(self):
add = jsonpatch.AddOperation({'path': '/new-element', 'value': 'new-value'})
add2 = jsonpatch.AddOperation({'path': '/new-element', 'value': 'new-value'})
rm = jsonpatch.RemoveOperation({'path': '/target'})
self.assertEqual(add, add2)
self.assertNotEqual(add, rm)

def test_add_operation_structure(self):
with self.assertRaises(jsonpatch.InvalidJsonPatch):
jsonpatch.AddOperation({'path': '/'}).apply({})

def test_replace_operation_structure(self):
with self.assertRaises(jsonpatch.InvalidJsonPatch):
jsonpatch.ReplaceOperation({'path': '/'}).apply({})

with self.assertRaises(jsonpatch.InvalidJsonPatch):
jsonpatch.ReplaceOperation({'path': '/top/-', 'value': 'foo'}).apply({'top': {'inner': 'value'}})

with self.assertRaises(jsonpatch.JsonPatchConflict):
jsonpatch.ReplaceOperation({'path': '/top/missing', 'value': 'foo'}).apply({'top': {'inner': 'value'}})

def test_move_operation_structure(self):
with self.assertRaises(jsonpatch.InvalidJsonPatch):
jsonpatch.MoveOperation({'path': '/target'}).apply({})

with self.assertRaises(jsonpatch.JsonPatchConflict):
jsonpatch.MoveOperation({'from': '/source', 'path': '/target'}).apply({})

def test_test_operation_structure(self):
with self.assertRaises(jsonpatch.JsonPatchTestFailed):
jsonpatch.TestOperation({'path': '/target'}).apply({})

with self.assertRaises(jsonpatch.InvalidJsonPatch):
jsonpatch.TestOperation({'path': '/target'}).apply({'target': 'value'})

def test_copy_operation_structure(self):
with self.assertRaises(jsonpatch.InvalidJsonPatch):
jsonpatch.CopyOperation({'path': '/target'}).apply({})

with self.assertRaises(jsonpatch.JsonPatchConflict):
jsonpatch.CopyOperation({'path': '/target', 'from': '/source'}).apply({})

with self.assertRaises(jsonpatch.JsonPatchConflict):
jsonpatch.CopyOperation({'path': '/target', 'from': '/source'}).apply({})


if __name__ == '__main__':
modules = ['jsonpatch']

Expand All @@ -704,6 +767,7 @@ def get_suite():
suite.addTest(unittest.makeSuite(OptimizationTests))
suite.addTest(unittest.makeSuite(JsonPointerTests))
suite.addTest(unittest.makeSuite(JsonPatchCreationTest))
suite.addTest(unittest.makeSuite(UtilityMethodTests))
return suite


Expand Down

0 comments on commit b44e7a2

Please sign in to comment.