hana 1.3.5 → 1.3.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/lib/hana.rb +2 -2
- data/test/json-patch-tests/tests.json +53 -3
- data/test/test_hana.rb +9 -0
- metadata +9 -8
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 5c03b78248bd570dcbfafd16008862ef61e649362caba2718e14379cdb91a0fb
|
4
|
+
data.tar.gz: b06a607921faf55826ab2f975707eb7d109cbcf9199358bda1d995b4f284bf40
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 9af7c351c9328b51235961633b65e06ddba40c90d758774b26cf2430295a4260f61ca9b36094759d8e0a77c25a498cf0b92ba5e5323472104331b6c08a8d8729
|
7
|
+
data.tar.gz: 30785df502dd77244272c26d3709772d8c6ab8fc57d3e693bbe576befae60db6b3c82285d51d5e002453a176fb7c7a18a92fa1829887c484bf9007a29fc34151
|
data/lib/hana.rb
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
3
|
module Hana
|
4
|
-
VERSION = '1.3.
|
4
|
+
VERSION = '1.3.6'
|
5
5
|
|
6
6
|
class Pointer
|
7
7
|
include Enumerable
|
@@ -233,7 +233,7 @@ module Hana
|
|
233
233
|
raise Patch::OutOfBoundsException if key >= obj.length
|
234
234
|
obj.delete_at key
|
235
235
|
else
|
236
|
-
raise Patch::IndexError unless obj
|
236
|
+
raise Patch::IndexError unless obj&.key? key
|
237
237
|
obj.delete key
|
238
238
|
end
|
239
239
|
end
|
@@ -214,6 +214,7 @@
|
|
214
214
|
|
215
215
|
{ "doc": {"foo": null},
|
216
216
|
"patch": [{"op": "test", "path": "/foo", "value": null}],
|
217
|
+
"expected": {"foo": null},
|
217
218
|
"comment": "null value should be valid obj property" },
|
218
219
|
|
219
220
|
{ "doc": {"foo": null},
|
@@ -243,14 +244,17 @@
|
|
243
244
|
|
244
245
|
{ "doc": {"foo": {"foo": 1, "bar": 2}},
|
245
246
|
"patch": [{"op": "test", "path": "/foo", "value": {"bar": 2, "foo": 1}}],
|
247
|
+
"expected": {"foo": {"foo": 1, "bar": 2}},
|
246
248
|
"comment": "test should pass despite rearrangement" },
|
247
249
|
|
248
250
|
{ "doc": {"foo": [{"foo": 1, "bar": 2}]},
|
249
251
|
"patch": [{"op": "test", "path": "/foo", "value": [{"bar": 2, "foo": 1}]}],
|
252
|
+
"expected": {"foo": [{"foo": 1, "bar": 2}]},
|
250
253
|
"comment": "test should pass despite (nested) rearrangement" },
|
251
254
|
|
252
255
|
{ "doc": {"foo": {"bar": [1, 2, 5, 4]}},
|
253
256
|
"patch": [{"op": "test", "path": "/foo", "value": {"bar": [1, 2, 5, 4]}}],
|
257
|
+
"expected": {"foo": {"bar": [1, 2, 5, 4]}},
|
254
258
|
"comment": "test should pass - no error" },
|
255
259
|
|
256
260
|
{ "doc": {"foo": {"bar": [1, 2, 5, 4]}},
|
@@ -264,7 +268,8 @@
|
|
264
268
|
|
265
269
|
{ "comment": "Empty-string element",
|
266
270
|
"doc": { "": 1 },
|
267
|
-
"patch": [{"op": "test", "path": "/", "value": 1}]
|
271
|
+
"patch": [{"op": "test", "path": "/", "value": 1}],
|
272
|
+
"expected": { "": 1 } },
|
268
273
|
|
269
274
|
{ "doc": {
|
270
275
|
"foo": ["bar", "baz"],
|
@@ -288,8 +293,23 @@
|
|
288
293
|
{"op": "test", "path": "/i\\j", "value": 5},
|
289
294
|
{"op": "test", "path": "/k\"l", "value": 6},
|
290
295
|
{"op": "test", "path": "/ ", "value": 7},
|
291
|
-
{"op": "test", "path": "/m~0n", "value": 8}]
|
292
|
-
|
296
|
+
{"op": "test", "path": "/m~0n", "value": 8}],
|
297
|
+
"expected": {
|
298
|
+
"": 0,
|
299
|
+
" ": 7,
|
300
|
+
"a/b": 1,
|
301
|
+
"c%d": 2,
|
302
|
+
"e^f": 3,
|
303
|
+
"foo": [
|
304
|
+
"bar",
|
305
|
+
"baz"
|
306
|
+
],
|
307
|
+
"g|h": 4,
|
308
|
+
"i\\j": 5,
|
309
|
+
"k\"l": 6,
|
310
|
+
"m~n": 8
|
311
|
+
}
|
312
|
+
},
|
293
313
|
{ "comment": "Move to same location has no effect",
|
294
314
|
"doc": {"foo": 1},
|
295
315
|
"patch": [{"op": "move", "from": "/foo", "path": "/foo"}],
|
@@ -363,6 +383,21 @@
|
|
363
383
|
"patch": [{"op": "add", "path": "/1e0", "value": "bar"}],
|
364
384
|
"error": "add op shouldn't add to array with bad number" },
|
365
385
|
|
386
|
+
{ "comment": "missing 'path' parameter",
|
387
|
+
"doc": {},
|
388
|
+
"patch": [ { "op": "add", "value": "bar" } ],
|
389
|
+
"error": "missing 'path' parameter" },
|
390
|
+
|
391
|
+
{ "comment": "'path' parameter with null value",
|
392
|
+
"doc": {},
|
393
|
+
"patch": [ { "op": "add", "path": null, "value": "bar" } ],
|
394
|
+
"error": "null is not valid value for 'path'" },
|
395
|
+
|
396
|
+
{ "comment": "invalid JSON Pointer token",
|
397
|
+
"doc": {},
|
398
|
+
"patch": [ { "op": "add", "path": "foo", "value": "bar" } ],
|
399
|
+
"error": "JSON Pointer should start with a slash" },
|
400
|
+
|
366
401
|
{ "comment": "missing 'value' parameter to add",
|
367
402
|
"doc": [ 1 ],
|
368
403
|
"patch": [ { "op": "add", "path": "/-" } ],
|
@@ -388,11 +423,21 @@
|
|
388
423
|
"patch": [ { "op": "copy", "path": "/-" } ],
|
389
424
|
"error": "missing 'from' parameter" },
|
390
425
|
|
426
|
+
{ "comment": "missing from location to copy",
|
427
|
+
"doc": { "foo": 1 },
|
428
|
+
"patch": [ { "op": "copy", "from": "/bar", "path": "/foo" } ],
|
429
|
+
"error": "missing 'from' location" },
|
430
|
+
|
391
431
|
{ "comment": "missing from parameter to move",
|
392
432
|
"doc": { "foo": 1 },
|
393
433
|
"patch": [ { "op": "move", "path": "" } ],
|
394
434
|
"error": "missing 'from' parameter" },
|
395
435
|
|
436
|
+
{ "comment": "missing from location to move",
|
437
|
+
"doc": { "foo": 1 },
|
438
|
+
"patch": [ { "op": "move", "from": "/bar", "path": "/foo" } ],
|
439
|
+
"error": "missing 'from' location" },
|
440
|
+
|
396
441
|
{ "comment": "duplicate ops",
|
397
442
|
"doc": { "foo": "bar" },
|
398
443
|
"patch": [ { "op": "add", "path": "/baz", "value": "qux",
|
@@ -420,6 +465,11 @@
|
|
420
465
|
"patch": [{"op": "remove", "path": "/baz"}],
|
421
466
|
"error": "removing a nonexistent field should fail" },
|
422
467
|
|
468
|
+
{ "comment": "Removing deep nonexistent path",
|
469
|
+
"doc": {"foo" : "bar"},
|
470
|
+
"patch": [{"op": "remove", "path": "/missing1/missing2"}],
|
471
|
+
"error": "removing a nonexistent field should fail" },
|
472
|
+
|
423
473
|
{ "comment": "Removing nonexistent index",
|
424
474
|
"doc": ["foo", "bar"],
|
425
475
|
"patch": [{"op": "remove", "path": "/2"}],
|
data/test/test_hana.rb
CHANGED
@@ -79,6 +79,15 @@ class TestHana < Hana::TestCase
|
|
79
79
|
end
|
80
80
|
end
|
81
81
|
|
82
|
+
def test_remove_deep_missing_path
|
83
|
+
patch = Hana::Patch.new [
|
84
|
+
{ 'op' => 'remove', 'path' => '/missing_key1/missing_key2' }
|
85
|
+
]
|
86
|
+
assert_raises(Hana::Patch::IndexError) do
|
87
|
+
patch.apply('foo' => 'bar')
|
88
|
+
end
|
89
|
+
end
|
90
|
+
|
82
91
|
def test_remove_missing_array_index
|
83
92
|
patch = Hana::Patch.new [
|
84
93
|
{ 'op' => 'remove', 'path' => '/1' }
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: hana
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.3.
|
4
|
+
version: 1.3.6
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Aaron Patterson
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2020-05-04 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: minitest
|
@@ -16,14 +16,14 @@ dependencies:
|
|
16
16
|
requirements:
|
17
17
|
- - "~>"
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: '5.
|
19
|
+
version: '5.14'
|
20
20
|
type: :development
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
24
|
- - "~>"
|
25
25
|
- !ruby/object:Gem::Version
|
26
|
-
version: '5.
|
26
|
+
version: '5.14'
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: rdoc
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
@@ -50,14 +50,14 @@ dependencies:
|
|
50
50
|
requirements:
|
51
51
|
- - "~>"
|
52
52
|
- !ruby/object:Gem::Version
|
53
|
-
version: '3.
|
53
|
+
version: '3.22'
|
54
54
|
type: :development
|
55
55
|
prerelease: false
|
56
56
|
version_requirements: !ruby/object:Gem::Requirement
|
57
57
|
requirements:
|
58
58
|
- - "~>"
|
59
59
|
- !ruby/object:Gem::Version
|
60
|
-
version: '3.
|
60
|
+
version: '3.22'
|
61
61
|
description: Implementation of [JSON Patch][1] and [JSON Pointer][2] RFC.
|
62
62
|
email:
|
63
63
|
- aaron@tenderlovemaking.com
|
@@ -84,7 +84,8 @@ files:
|
|
84
84
|
homepage: http://github.com/tenderlove/hana
|
85
85
|
licenses:
|
86
86
|
- MIT
|
87
|
-
metadata:
|
87
|
+
metadata:
|
88
|
+
homepage_uri: http://github.com/tenderlove/hana
|
88
89
|
post_install_message:
|
89
90
|
rdoc_options:
|
90
91
|
- "--main"
|
@@ -102,7 +103,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
102
103
|
- !ruby/object:Gem::Version
|
103
104
|
version: '0'
|
104
105
|
requirements: []
|
105
|
-
rubygems_version: 3.0.
|
106
|
+
rubygems_version: 3.2.0.pre1
|
106
107
|
signing_key:
|
107
108
|
specification_version: 4
|
108
109
|
summary: Implementation of [JSON Patch][1] and [JSON Pointer][2] RFC.
|