Skip to content

Commit 631df8b

Browse files
committed
test: improve printTree util
1 parent 0eb4024 commit 631df8b

File tree

2 files changed

+31
-18
lines changed

2 files changed

+31
-18
lines changed

src/tree/__tests__/tree.spec.ts

Lines changed: 17 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -480,11 +480,11 @@ describe('SchemaTree', () => {
480480
└─ children
481481
├─ 0
482482
│ └─ #/properties/foo
483-
│ ├─ type: undefined
483+
│ ├─ combiner: allOf
484484
│ └─ children
485485
│ ├─ 0
486486
│ │ └─ #/properties/foo/allOf/0
487-
│ │ ├─ type: undefined
487+
│ │ ├─ $ref: #/properties/foo
488488
│ │ └─ children
489489
│ └─ 1
490490
│ └─ #/properties/foo/allOf/1
@@ -496,10 +496,11 @@ describe('SchemaTree', () => {
496496
└─ 1
497497
└─ #/properties/bar
498498
├─ type: object
499+
├─ combiner: allOf
499500
└─ children
500501
└─ 0
501502
└─ #/properties/bar/allOf/0
502-
├─ type: undefined
503+
├─ $ref: #/properties/bar
503504
└─ children
504505
"
505506
`);
@@ -555,18 +556,19 @@ describe('SchemaTree', () => {
555556
├─ 0
556557
│ └─ #/properties/baz
557558
│ ├─ type: object
559+
│ ├─ combiner: allOf
558560
│ └─ children
559561
│ └─ 0
560562
│ └─ #/properties/baz/allOf/0
561-
│ ├─ type: undefined
563+
│ ├─ $ref: #/properties/baz
562564
│ └─ children
563565
├─ 1
564566
│ └─ #/properties/foo
565-
│ ├─ type: undefined
567+
│ ├─ combiner: allOf
566568
│ └─ children
567569
│ ├─ 0
568570
│ │ └─ #/properties/foo/allOf/0
569-
│ │ ├─ type: undefined
571+
│ │ ├─ $ref: #/properties/foo
570572
│ │ └─ children
571573
│ └─ 1
572574
│ └─ #/properties/foo/allOf/1
@@ -578,10 +580,11 @@ describe('SchemaTree', () => {
578580
└─ 2
579581
└─ #/properties/bar
580582
├─ type: object
583+
├─ combiner: allOf
581584
└─ children
582585
└─ 0
583586
└─ #/properties/bar/allOf/0
584-
├─ type: undefined
587+
├─ $ref: #/properties/bar
585588
└─ children
586589
"
587590
`);
@@ -660,18 +663,18 @@ describe('SchemaTree', () => {
660663
│ │ └─ children
661664
│ │ └─ 0
662665
│ │ └─ #/properties/baz/properties/address/properties/street
663-
│ │ ├─ type: undefined
666+
│ │ ├─ combiner: allOf
664667
│ │ └─ children
665668
│ │ └─ 0
666669
│ │ └─ #/properties/baz/properties/address/properties/street/allOf/0
667-
│ │ ├─ type: undefined
670+
│ │ ├─ $ref: #/properties/baz
668671
│ │ └─ children
669672
│ └─ 2
670673
│ └─ #/properties/baz/properties/name
671674
│ └─ type: string
672675
├─ 1
673676
│ └─ #/properties/foo
674-
│ ├─ type: undefined
677+
│ ├─ combiner: allOf
675678
│ └─ children
676679
│ ├─ 0
677680
│ │ └─ #/properties/foo/allOf/0
@@ -686,7 +689,7 @@ describe('SchemaTree', () => {
686689
│ │ └─ children
687690
│ │ └─ 0
688691
│ │ └─ #/properties/foo/allOf/0/properties/address/properties/street
689-
│ │ ├─ type: undefined
692+
│ │ ├─ $ref: #/properties/foo
690693
│ │ └─ children
691694
│ └─ 1
692695
│ └─ #/properties/foo/allOf/1
@@ -708,11 +711,11 @@ describe('SchemaTree', () => {
708711
│ └─ children
709712
│ └─ 0
710713
│ └─ #/properties/bar/properties/address/properties/street
711-
│ ├─ type: undefined
714+
│ ├─ combiner: allOf
712715
│ └─ children
713716
│ └─ 0
714717
│ └─ #/properties/bar/properties/address/properties/street/allOf/0
715-
│ ├─ type: undefined
718+
│ ├─ $ref: #/properties/bar
716719
│ └─ children
717720
└─ 2
718721
└─ #/properties/bar/properties/name
@@ -753,7 +756,7 @@ describe('SchemaTree', () => {
753756
expect(tree.populate.bind(tree)).not.toThrow();
754757
expect(printTree(tree)).toMatchInlineSnapshot(`
755758
"└─ #
756-
├─ type: undefined
759+
├─ combiner: allOf
757760
└─ children
758761
├─ 0
759762
│ └─ #/allOf/0

src/tree/__tests__/utils/printTree.ts

Lines changed: 14 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,8 @@ import { JSONSchema4TypeName } from 'json-schema';
55
import { getPrimaryType } from '../../../utils/getPrimaryType';
66
import { getNodeMetadata } from '../../metadata';
77
import { SchemaTree } from '../../tree';
8+
import { JSONSchema4CombinerName } from '../../../types';
9+
import { getCombiner } from '../../../utils/getCombiner';
810

911
const treeify = require('treeify');
1012

@@ -14,27 +16,35 @@ export function printTree(tree: SchemaTree) {
1416

1517
type PrintableNode = {
1618
[key in string]: {
17-
type: Optional<JSONSchema4TypeName | JSONSchema4TypeName[] | null>;
19+
type?: Optional<JSONSchema4TypeName | JSONSchema4TypeName[] | null>;
20+
combiner?: JSONSchema4CombinerName;
21+
$ref?: unknown;
1822
children?: PrintableNode[];
1923
};
2024
};
2125

2226
function prepareTree(node: TreeListNode): PrintableNode {
2327
const metadata = getNodeMetadata(node);
24-
const type = 'schema' in metadata ? getPrimaryType(metadata.schema) : null;
28+
const schema = 'schema' in metadata ? metadata.schema : null;
29+
const combiner = schema ? getCombiner(schema) : null;
30+
const type = schema ? getPrimaryType(schema) : null;
2531

2632
if (SchemaTree.getLevel(node) === 0) {
2733
return {
2834
'#': {
29-
type,
35+
...(type && { type }),
36+
...(combiner && { combiner }),
37+
...(schema && '$ref' in schema && { $ref: schema.$ref }),
3038
children: (node as TreeListParentNode).children.map(prepareTree),
3139
},
3240
};
3341
}
3442

3543
return {
3644
[pathToPointer(metadata.path)]: {
37-
type,
45+
...(type && { type }),
46+
...(combiner && { combiner }),
47+
...(schema && '$ref' in schema && { $ref: schema.$ref }),
3848
...('children' in node && { children: node.children.map(prepareTree) }),
3949
},
4050
};

0 commit comments

Comments
 (0)