@@ -747,7 +747,7 @@ TEST(JSONSchema_transformer, rereference_not_hit) {
747
747
EXPECT_EQ (document, expected);
748
748
}
749
749
750
- TEST (JSONSchema_transformer, rereference_not_fixed ) {
750
+ TEST (JSONSchema_transformer, rereference_not_fixed_ref ) {
751
751
sourcemeta::core::SchemaTransformer bundle;
752
752
bundle.add <ExampleRuleDefinitionsToDefsNoRereference>();
753
753
@@ -791,6 +791,79 @@ TEST(JSONSchema_transformer, rereference_not_fixed) {
791
791
EXPECT_EQ (document, expected);
792
792
}
793
793
794
+ TEST (JSONSchema_transformer, rereference_not_fixed_id) {
795
+ sourcemeta::core::SchemaTransformer bundle;
796
+ bundle.add <ExampleRuleRemoveIdentifiers>();
797
+
798
+ sourcemeta::core::JSON document = sourcemeta::core::parse_json (R"JSON( {
799
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
800
+ "$id": "https://example.com",
801
+ "$ref": "helper",
802
+ "$defs": {
803
+ "helper": {
804
+ "$id": "helper"
805
+ }
806
+ }
807
+ })JSON" );
808
+
809
+ TestTransformTraces entries;
810
+ const bool result =
811
+ bundle.apply (document, sourcemeta::core::schema_official_walker,
812
+ sourcemeta::core::schema_official_resolver,
813
+ transformer_callback_trace (entries));
814
+
815
+ EXPECT_TRUE (result);
816
+ EXPECT_EQ (entries.size (), 0 );
817
+
818
+ // The reference is now just treated as an external one
819
+
820
+ const sourcemeta::core::JSON expected = sourcemeta::core::parse_json (R"JSON( {
821
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
822
+ "$ref": "helper",
823
+ "$defs": {
824
+ "helper": {}
825
+ }
826
+ })JSON" );
827
+
828
+ EXPECT_EQ (document, expected);
829
+ }
830
+
831
+ TEST (JSONSchema_transformer, rereference_not_fixed_anchor) {
832
+ sourcemeta::core::SchemaTransformer bundle;
833
+ bundle.add <ExampleRuleRemoveIdentifiers>();
834
+
835
+ sourcemeta::core::JSON document = sourcemeta::core::parse_json (R"JSON( {
836
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
837
+ "$ref": "#helper",
838
+ "$defs": {
839
+ "helper": {
840
+ "$anchor": "helper"
841
+ }
842
+ }
843
+ })JSON" );
844
+
845
+ TestTransformTraces entries;
846
+ const bool result =
847
+ bundle.apply (document, sourcemeta::core::schema_official_walker,
848
+ sourcemeta::core::schema_official_resolver,
849
+ transformer_callback_trace (entries));
850
+
851
+ EXPECT_TRUE (result);
852
+ EXPECT_EQ (entries.size (), 0 );
853
+
854
+ // The reference is now just treated as an external one
855
+
856
+ const sourcemeta::core::JSON expected = sourcemeta::core::parse_json (R"JSON( {
857
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
858
+ "$ref": "#helper",
859
+ "$defs": {
860
+ "helper": {}
861
+ }
862
+ })JSON" );
863
+
864
+ EXPECT_EQ (document, expected);
865
+ }
866
+
794
867
TEST (JSONSchema_transformer, rereference_fixed_1) {
795
868
sourcemeta::core::SchemaTransformer bundle;
796
869
bundle.add <ExampleRuleDefinitionsToDefsWithRereference>();
0 commit comments