3b3b6e8e69
- Implemented "copy" in terms of "add". - Added check for JSON Pointer array indices to make sure the complete reference token was processed. - Added test suite from https://github.com/json-patch/json-patch-tests
233 lines
3.9 KiB
JSON
Executable file
233 lines
3.9 KiB
JSON
Executable file
[
|
|
{
|
|
"comment": "4.1. add with missing object",
|
|
"doc": { "q": { "bar": 2 } },
|
|
"patch": [ {"op": "add", "path": "/a/b", "value": 1} ],
|
|
"error":
|
|
"path /a does not exist -- missing objects are not created recursively"
|
|
},
|
|
|
|
{
|
|
"comment": "A.1. Adding an Object Member",
|
|
"doc": {
|
|
"foo": "bar"
|
|
},
|
|
"patch": [
|
|
{ "op": "add", "path": "/baz", "value": "qux" }
|
|
],
|
|
"expected": {
|
|
"baz": "qux",
|
|
"foo": "bar"
|
|
}
|
|
},
|
|
|
|
{
|
|
"comment": "A.2. Adding an Array Element",
|
|
"doc": {
|
|
"foo": [ "bar", "baz" ]
|
|
},
|
|
"patch": [
|
|
{ "op": "add", "path": "/foo/1", "value": "qux" }
|
|
],
|
|
"expected": {
|
|
"foo": [ "bar", "qux", "baz" ]
|
|
}
|
|
},
|
|
|
|
{
|
|
"comment": "A.3. Removing an Object Member",
|
|
"doc": {
|
|
"baz": "qux",
|
|
"foo": "bar"
|
|
},
|
|
"patch": [
|
|
{ "op": "remove", "path": "/baz" }
|
|
],
|
|
"expected": {
|
|
"foo": "bar"
|
|
}
|
|
},
|
|
|
|
{
|
|
"comment": "A.4. Removing an Array Element",
|
|
"doc": {
|
|
"foo": [ "bar", "qux", "baz" ]
|
|
},
|
|
"patch": [
|
|
{ "op": "remove", "path": "/foo/1" }
|
|
],
|
|
"expected": {
|
|
"foo": [ "bar", "baz" ]
|
|
}
|
|
},
|
|
|
|
{
|
|
"comment": "A.5. Replacing a Value",
|
|
"doc": {
|
|
"baz": "qux",
|
|
"foo": "bar"
|
|
},
|
|
"patch": [
|
|
{ "op": "replace", "path": "/baz", "value": "boo" }
|
|
],
|
|
"expected": {
|
|
"baz": "boo",
|
|
"foo": "bar"
|
|
}
|
|
},
|
|
|
|
{
|
|
"comment": "A.6. Moving a Value",
|
|
"doc": {
|
|
"foo": {
|
|
"bar": "baz",
|
|
"waldo": "fred"
|
|
},
|
|
"qux": {
|
|
"corge": "grault"
|
|
}
|
|
},
|
|
"patch": [
|
|
{ "op": "move", "from": "/foo/waldo", "path": "/qux/thud" }
|
|
],
|
|
"expected": {
|
|
"foo": {
|
|
"bar": "baz"
|
|
},
|
|
"qux": {
|
|
"corge": "grault",
|
|
"thud": "fred"
|
|
}
|
|
}
|
|
},
|
|
|
|
{
|
|
"comment": "A.7. Moving an Array Element",
|
|
"doc": {
|
|
"foo": [ "all", "grass", "cows", "eat" ]
|
|
},
|
|
"patch": [
|
|
{ "op": "move", "from": "/foo/1", "path": "/foo/3" }
|
|
],
|
|
"expected": {
|
|
"foo": [ "all", "cows", "eat", "grass" ]
|
|
}
|
|
|
|
},
|
|
|
|
{
|
|
"comment": "A.8. Testing a Value: Success",
|
|
"doc": {
|
|
"baz": "qux",
|
|
"foo": [ "a", 2, "c" ]
|
|
},
|
|
"patch": [
|
|
{ "op": "test", "path": "/baz", "value": "qux" },
|
|
{ "op": "test", "path": "/foo/1", "value": 2 }
|
|
],
|
|
"expected": {
|
|
"baz": "qux",
|
|
"foo": [ "a", 2, "c" ]
|
|
}
|
|
},
|
|
|
|
{
|
|
"comment": "A.9. Testing a Value: Error",
|
|
"doc": {
|
|
"baz": "qux"
|
|
},
|
|
"patch": [
|
|
{ "op": "test", "path": "/baz", "value": "bar" }
|
|
],
|
|
"error": "string not equivalent"
|
|
},
|
|
|
|
{
|
|
"comment": "A.10. Adding a nested Member Object",
|
|
"doc": {
|
|
"foo": "bar"
|
|
},
|
|
"patch": [
|
|
{ "op": "add", "path": "/child", "value": { "grandchild": { } } }
|
|
],
|
|
"expected": {
|
|
"foo": "bar",
|
|
"child": {
|
|
"grandchild": {
|
|
}
|
|
}
|
|
}
|
|
},
|
|
|
|
{
|
|
"comment": "A.11. Ignoring Unrecognized Elements",
|
|
"doc": {
|
|
"foo":"bar"
|
|
},
|
|
"patch": [
|
|
{ "op": "add", "path": "/baz", "value": "qux", "xyz": 123 }
|
|
],
|
|
"expected": {
|
|
"foo":"bar",
|
|
"baz":"qux"
|
|
}
|
|
},
|
|
|
|
{
|
|
"comment": "A.12. Adding to a Non-existent Target",
|
|
"doc": {
|
|
"foo": "bar"
|
|
},
|
|
"patch": [
|
|
{ "op": "add", "path": "/baz/bat", "value": "qux" }
|
|
],
|
|
"error": "add to a non-existent target"
|
|
},
|
|
|
|
{
|
|
"comment": "A.13 Invalid JSON Patch Document",
|
|
"doc": {
|
|
"foo": "bar"
|
|
},
|
|
"patch": [
|
|
{ "op": "add", "path": "/baz", "value": "qux", "op": "remove" }
|
|
],
|
|
"error": "operation has two 'op' members",
|
|
"disabled": true
|
|
},
|
|
|
|
{
|
|
"comment": "A.14. ~ Escape Ordering",
|
|
"doc": {
|
|
"/": 9,
|
|
"~1": 10
|
|
},
|
|
"patch": [{"op": "test", "path": "/~01", "value": 10}],
|
|
"expected": {
|
|
"/": 9,
|
|
"~1": 10
|
|
}
|
|
},
|
|
|
|
{
|
|
"comment": "A.15. Comparing Strings and Numbers",
|
|
"doc": {
|
|
"/": 9,
|
|
"~1": 10
|
|
},
|
|
"patch": [{"op": "test", "path": "/~01", "value": "10"}],
|
|
"error": "number is not equal to string"
|
|
},
|
|
|
|
{
|
|
"comment": "A.16. Adding an Array Value",
|
|
"doc": {
|
|
"foo": ["bar"]
|
|
},
|
|
"patch": [{ "op": "add", "path": "/foo/-", "value": ["abc", "def"] }],
|
|
"expected": {
|
|
"foo": ["bar", ["abc", "def"]]
|
|
}
|
|
}
|
|
|
|
]
|