forked from vega/ts-json-schema-generator
/
valid-data-annotations.test.ts
78 lines (63 loc) · 3.07 KB
/
valid-data-annotations.test.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
import { assertValidSchema } from "./utils";
import * as annotationDefaultSamples from "./valid-data/annotation-default/samples";
describe("valid-data-annotations", () => {
it(
"annotation-custom",
assertValidSchema("annotation-custom", "MyObject", "basic", [
"customBooleanProperty",
"customNumberProperty",
"customStringProperty",
"customComplexProperty",
"customMultilineProperty",
"customUnquotedProperty",
])
);
it("annotation-empty-basic", assertValidSchema("annotation-empty", "MyObject", "basic", ["customEmptyAnnotation"]));
it(
"annotation-empty-extended",
assertValidSchema("annotation-empty", "MyObject", "extended", ["customEmptyAnnotation"])
);
it(
"annotation-deprecated-basic",
assertValidSchema("annotation-deprecated", "MyObject", "basic", ["deprecationMessage"])
);
it(
"annotation-deprecated-extended",
assertValidSchema("annotation-deprecated", "MyObject", "extended", ["deprecationMessage"])
);
it(
"annotation-description-override",
assertValidSchema("annotation-description-override", "MyObject", "extended", ["markdownDescription"])
);
it("annotation-comment", assertValidSchema("annotation-comment", "MyObject", "extended"));
it("annotation-default", function () {
// Without actually using the defaults.
assertValidSchema("annotation-default", "MyObject", "extended", [], undefined, {
validSamples: annotationDefaultSamples.validSamples,
invalidSamples: annotationDefaultSamples.invalidSamplesUnlessDefaults,
})();
// Having AJV use the defaults.
// Since AJV will mutate, make
// shallow copies.
const validWithDefaults = annotationDefaultSamples.invalidSamplesUnlessDefaults.map((sample) => ({
...sample,
}));
assertValidSchema("annotation-default", "MyObject", "extended", [], undefined, {
validSamples: validWithDefaults,
ajvOptions: { useDefaults: true },
})();
// The previously-invalid samples
// should now match the expected
// structure when all defaults are applied.
validWithDefaults.forEach((sample) => {
expect(sample).toEqual(annotationDefaultSamples.expectedAfterDefaults);
});
});
it("annotation-example", assertValidSchema("annotation-example", "MyObject", "extended"));
it("annotation-id", assertValidSchema("annotation-id", "MyObject", "extended", [], "Test"));
it("annotation-readOnly", assertValidSchema("annotation-readOnly", "MyObject", "basic"));
it("annotation-ref", assertValidSchema("annotation-ref", "MyObject", "extended"));
it("annotation-writeOnly", assertValidSchema("annotation-writeOnly", "MyObject", "basic"));
it("annotation-union-if-then", assertValidSchema("annotation-union-if-then", "Animal", "basic"));
it("annotation-nullable-definition", assertValidSchema("annotation-nullable-definition", "MyObject", "extended"));
});