From 0a0ed54fb94ff8ea9fcce2047d6ffc7511b247fa Mon Sep 17 00:00:00 2001 From: Suprith KG Date: Sat, 17 Aug 2024 04:57:01 +0530 Subject: [PATCH] Add ref case for Draft 6 to Draft 7 transform (#53) Co-authored-by: Juan Cruz Viotti --- ...001-ref-and-adjecent-keywords-present.json | 10 ++++++ .../to-draft7/002-ref-and-x-ref-present.json | 10 ++++++ ...003-correct-sideeffects-ref-transform.json | 9 ++++++ ...04-unknown-in-previous-draft-comment.json} | 0 ... => 005-unknown-in-previous-draft-if.json} | 0 ...> 006-unknown-in-previous-draft-then.json} | 0 ...> 007-unknown-in-previous-draft-else.json} | 0 ...wn-in-previous-draft-contentEncoding.json} | 0 ...n-in-previous-draft-contentMediaType.json} | 0 ...0-unknown-in-previous-draft-readOnly.json} | 0 ...-unknown-in-previous-draft-writeOnly.json} | 0 .../{009-schema.json => 012-schema.json} | 0 test/from-draft6/to-draft7/ref.json | 31 +++++++++++++++++++ 13 files changed, 60 insertions(+) create mode 100644 rules/from-draft6/to-draft7/001-ref-and-adjecent-keywords-present.json create mode 100644 rules/from-draft6/to-draft7/002-ref-and-x-ref-present.json create mode 100644 rules/from-draft6/to-draft7/003-correct-sideeffects-ref-transform.json rename rules/from-draft6/to-draft7/{001-unknown-in-previous-draft-comment.json => 004-unknown-in-previous-draft-comment.json} (100%) rename rules/from-draft6/to-draft7/{002-unknown-in-previous-draft-if.json => 005-unknown-in-previous-draft-if.json} (100%) rename rules/from-draft6/to-draft7/{003-unknown-in-previous-draft-then.json => 006-unknown-in-previous-draft-then.json} (100%) rename rules/from-draft6/to-draft7/{004-unknown-in-previous-draft-else.json => 007-unknown-in-previous-draft-else.json} (100%) rename rules/from-draft6/to-draft7/{005-unknown-in-previous-draft-contentEncoding.json => 008-unknown-in-previous-draft-contentEncoding.json} (100%) rename rules/from-draft6/to-draft7/{006-unknown-in-previous-draft-contentMediaType.json => 009-unknown-in-previous-draft-contentMediaType.json} (100%) rename rules/from-draft6/to-draft7/{007-unknown-in-previous-draft-readOnly.json => 010-unknown-in-previous-draft-readOnly.json} (100%) rename rules/from-draft6/to-draft7/{008-unknown-in-previous-draft-writeOnly.json => 011-unknown-in-previous-draft-writeOnly.json} (100%) rename rules/from-draft6/to-draft7/{009-schema.json => 012-schema.json} (100%) create mode 100644 test/from-draft6/to-draft7/ref.json diff --git a/rules/from-draft6/to-draft7/001-ref-and-adjecent-keywords-present.json b/rules/from-draft6/to-draft7/001-ref-and-adjecent-keywords-present.json new file mode 100644 index 0000000..d83a1f8 --- /dev/null +++ b/rules/from-draft6/to-draft7/001-ref-and-adjecent-keywords-present.json @@ -0,0 +1,10 @@ +{ + "vocabulary": "core", + "condition": [ + { "operation": "has-key", "path": [], "value": "$ref" }, + { "operation": "type-is", "path": [ {} ], "value": [ "array", "boolean", "integer", "number", "object", "string" ] } + ], + "transform": [ + { "operation": "prefix-until-unique", "path": [ {} ], "value": "x-" } + ] +} diff --git a/rules/from-draft6/to-draft7/002-ref-and-x-ref-present.json b/rules/from-draft6/to-draft7/002-ref-and-x-ref-present.json new file mode 100644 index 0000000..5e482fa --- /dev/null +++ b/rules/from-draft6/to-draft7/002-ref-and-x-ref-present.json @@ -0,0 +1,10 @@ +{ + "vocabulary": "core", + "condition": [ + { "operation": "has-key", "path": [], "value": "$ref" }, + { "operation": "has-key", "path": [], "value": "x-$ref" } + ], + "transform": [ + { "operation": "prefix-until-unique", "path": [ "x-$ref" ], "value": "x-" } + ] +} diff --git a/rules/from-draft6/to-draft7/003-correct-sideeffects-ref-transform.json b/rules/from-draft6/to-draft7/003-correct-sideeffects-ref-transform.json new file mode 100644 index 0000000..56ba6d3 --- /dev/null +++ b/rules/from-draft6/to-draft7/003-correct-sideeffects-ref-transform.json @@ -0,0 +1,9 @@ +{ + "vocabulary": "core", + "condition": [ + { "operation": "has-key", "path": [], "value": "x-$ref" } + ], + "transform": [ + { "operation": "move", "to": [ "$ref" ], "from": [ "x-$ref" ] } + ] +} diff --git a/rules/from-draft6/to-draft7/001-unknown-in-previous-draft-comment.json b/rules/from-draft6/to-draft7/004-unknown-in-previous-draft-comment.json similarity index 100% rename from rules/from-draft6/to-draft7/001-unknown-in-previous-draft-comment.json rename to rules/from-draft6/to-draft7/004-unknown-in-previous-draft-comment.json diff --git a/rules/from-draft6/to-draft7/002-unknown-in-previous-draft-if.json b/rules/from-draft6/to-draft7/005-unknown-in-previous-draft-if.json similarity index 100% rename from rules/from-draft6/to-draft7/002-unknown-in-previous-draft-if.json rename to rules/from-draft6/to-draft7/005-unknown-in-previous-draft-if.json diff --git a/rules/from-draft6/to-draft7/003-unknown-in-previous-draft-then.json b/rules/from-draft6/to-draft7/006-unknown-in-previous-draft-then.json similarity index 100% rename from rules/from-draft6/to-draft7/003-unknown-in-previous-draft-then.json rename to rules/from-draft6/to-draft7/006-unknown-in-previous-draft-then.json diff --git a/rules/from-draft6/to-draft7/004-unknown-in-previous-draft-else.json b/rules/from-draft6/to-draft7/007-unknown-in-previous-draft-else.json similarity index 100% rename from rules/from-draft6/to-draft7/004-unknown-in-previous-draft-else.json rename to rules/from-draft6/to-draft7/007-unknown-in-previous-draft-else.json diff --git a/rules/from-draft6/to-draft7/005-unknown-in-previous-draft-contentEncoding.json b/rules/from-draft6/to-draft7/008-unknown-in-previous-draft-contentEncoding.json similarity index 100% rename from rules/from-draft6/to-draft7/005-unknown-in-previous-draft-contentEncoding.json rename to rules/from-draft6/to-draft7/008-unknown-in-previous-draft-contentEncoding.json diff --git a/rules/from-draft6/to-draft7/006-unknown-in-previous-draft-contentMediaType.json b/rules/from-draft6/to-draft7/009-unknown-in-previous-draft-contentMediaType.json similarity index 100% rename from rules/from-draft6/to-draft7/006-unknown-in-previous-draft-contentMediaType.json rename to rules/from-draft6/to-draft7/009-unknown-in-previous-draft-contentMediaType.json diff --git a/rules/from-draft6/to-draft7/007-unknown-in-previous-draft-readOnly.json b/rules/from-draft6/to-draft7/010-unknown-in-previous-draft-readOnly.json similarity index 100% rename from rules/from-draft6/to-draft7/007-unknown-in-previous-draft-readOnly.json rename to rules/from-draft6/to-draft7/010-unknown-in-previous-draft-readOnly.json diff --git a/rules/from-draft6/to-draft7/008-unknown-in-previous-draft-writeOnly.json b/rules/from-draft6/to-draft7/011-unknown-in-previous-draft-writeOnly.json similarity index 100% rename from rules/from-draft6/to-draft7/008-unknown-in-previous-draft-writeOnly.json rename to rules/from-draft6/to-draft7/011-unknown-in-previous-draft-writeOnly.json diff --git a/rules/from-draft6/to-draft7/009-schema.json b/rules/from-draft6/to-draft7/012-schema.json similarity index 100% rename from rules/from-draft6/to-draft7/009-schema.json rename to rules/from-draft6/to-draft7/012-schema.json diff --git a/test/from-draft6/to-draft7/ref.json b/test/from-draft6/to-draft7/ref.json new file mode 100644 index 0000000..2901c2c --- /dev/null +++ b/test/from-draft6/to-draft7/ref.json @@ -0,0 +1,31 @@ +[ + { + "title": "$ref present in schema, with adjacent keywords", + "from": { + "$id": "http://example.com", + "properties": { + "foo": { + "$ref": "/bar", + "type": "string", + "$id": "zoo" + }, + "bar": { + "$id": "bar" + } + } + }, + "to": { + "$id": "http://example.com", + "properties": { + "foo": { + "$ref": "/bar", + "x-type": "string", + "x-$id": "zoo" + }, + "bar": { + "$id": "bar" + } + } + } + } +]