Skip to content

Commit 92a0318

Browse files
committed
Add alias tests
1 parent 83035ee commit 92a0318

File tree

19 files changed

+336
-1
lines changed

19 files changed

+336
-1
lines changed

Diff for: test/programs/type-aliases-anonymous/main.ts

+7
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
export type MyExportString = string;
2+
type MyPrivateString = string;
3+
4+
export interface MyObject {
5+
export: MyExportString;
6+
private: MyPrivateString;
7+
}

Diff for: test/programs/type-aliases-anonymous/schema.json

+25
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
{
2+
"$schema": "http://json-schema.org/draft-04/schema#",
3+
"definitions": {
4+
"MyObject": {
5+
"type": "object",
6+
"properties": {
7+
"export": {
8+
"$ref": "#/definitions/MyExportString"
9+
},
10+
"private": {
11+
"type": "string"
12+
}
13+
},
14+
"required": [
15+
"export",
16+
"private"
17+
],
18+
"additionalProperties": false
19+
},
20+
"MyExportString": {
21+
"type": "string"
22+
}
23+
},
24+
"$ref": "#/definitions/MyObject"
25+
}

Diff for: test/programs/type-aliases-local-namespace/main.ts

+16
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
namespace A {
2+
export interface A { a: any; }
3+
}
4+
namespace B {
5+
export interface B { b: any; }
6+
}
7+
namespace C {
8+
import A = B.B;
9+
export interface C { c: A; }
10+
}
11+
namespace D {
12+
import A = C.C;
13+
export interface D { d: A; }
14+
}
15+
16+
export interface MyObject extends D.D {}
+44
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
{
2+
"$schema": "http://json-schema.org/draft-04/schema#",
3+
"definitions": {
4+
"B.B": {
5+
"properties": {
6+
"b": {
7+
}
8+
},
9+
"required": [
10+
"b"
11+
],
12+
"additionalProperties": false,
13+
"type": "object"
14+
},
15+
"C.C": {
16+
"properties": {
17+
"c": {
18+
"$ref": "#/definitions/B.B"
19+
}
20+
},
21+
"required": [
22+
"c"
23+
],
24+
"additionalProperties": false,
25+
"type": "object"
26+
},
27+
"D.D": {
28+
"properties": {
29+
"d": {
30+
"$ref": "#/definitions/C.C"
31+
}
32+
},
33+
"required": [
34+
"d"
35+
],
36+
"additionalProperties": false,
37+
"type": "object"
38+
},
39+
"MyObject": {
40+
"$ref": "#/definitions/D.D"
41+
}
42+
},
43+
"$ref": "#/definitions/MyObject"
44+
}

Diff for: test/programs/type-aliases-mixed/main.ts

+11
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
export type MyString = string;
2+
3+
export interface MySubObject {
4+
propA: number;
5+
propB: number;
6+
}
7+
8+
export interface MyObject {
9+
primitive: MyString;
10+
object: MySubObject;
11+
}

Diff for: test/programs/type-aliases-mixed/schema.json

+41
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
{
2+
"$schema": "http://json-schema.org/draft-04/schema#",
3+
"definitions": {
4+
"MyObject": {
5+
"properties": {
6+
"object": {
7+
"$ref": "#/definitions/MySubObject"
8+
},
9+
"primitive": {
10+
"$ref": "#/definitions/MyString"
11+
}
12+
},
13+
"required": [
14+
"primitive",
15+
"object"
16+
],
17+
"additionalProperties": false,
18+
"type": "object"
19+
},
20+
"MyString": {
21+
"type": "string"
22+
},
23+
"MySubObject": {
24+
"properties": {
25+
"propA": {
26+
"type": "number"
27+
},
28+
"propB": {
29+
"type": "number"
30+
}
31+
},
32+
"required": [
33+
"propA",
34+
"propB"
35+
],
36+
"additionalProperties": false,
37+
"type": "object"
38+
}
39+
},
40+
"$ref": "#/definitions/MyObject"
41+
}

Diff for: test/programs/type-aliases-object/main.ts

+7
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
2+
export interface MyObject {
3+
number: number;
4+
string: string;
5+
}
6+
7+
export type MyAlias = MyObject;

Diff for: test/programs/type-aliases-object/schema.json

+25
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
{
2+
"$schema": "http://json-schema.org/draft-04/schema#",
3+
"definitions": {
4+
"MyAlias": {
5+
"$ref": "#/definitions/MyObject"
6+
},
7+
"MyObject": {
8+
"properties": {
9+
"number": {
10+
"type": "number"
11+
},
12+
"string": {
13+
"type": "string"
14+
}
15+
},
16+
"required": [
17+
"number",
18+
"string"
19+
],
20+
"additionalProperties": false,
21+
"type": "object"
22+
}
23+
},
24+
"$ref": "#/definitions/MyAlias"
25+
}

Diff for: test/programs/type-aliases-primitive/main.ts

+1
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
export type MyString = string;

Diff for: test/programs/type-aliases-primitive/schema.json

+9
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
{
2+
"$schema": "http://json-schema.org/draft-04/schema#",
3+
"definitions": {
4+
"MyString": {
5+
"type": "string"
6+
}
7+
},
8+
"$ref": "#/definitions/MyString"
9+
}
+6
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
interface MyObject {
2+
alias: MyAlias;
3+
self: MyObject;
4+
}
5+
6+
export type MyAlias = MyObject;
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
{
2+
"$schema": "http://json-schema.org/draft-04/schema#",
3+
"definitions": {
4+
"MyAlias": {
5+
"$ref": "#/definitions/interface-0"
6+
},
7+
"interface-0": {
8+
"type": "object",
9+
"properties": {
10+
"alias": {
11+
"$ref": "#/definitions/MyAlias"
12+
},
13+
"self": {
14+
"$ref": "#/definitions/interface-0"
15+
}
16+
},
17+
"required": [
18+
"alias",
19+
"self"
20+
],
21+
"additionalProperties": false
22+
}
23+
},
24+
"$ref": "#/definitions/MyAlias"
25+
}

Diff for: test/programs/type-aliases-recursive-export/main.ts

+6
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
export interface MyObject {
2+
alias: MyAlias;
3+
self: MyObject;
4+
}
5+
6+
export type MyAlias = MyObject;
+25
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
{
2+
"$schema": "http://json-schema.org/draft-04/schema#",
3+
"definitions": {
4+
"MyAlias": {
5+
"$ref": "#/definitions/MyObject"
6+
},
7+
"MyObject": {
8+
"type": "object",
9+
"properties": {
10+
"alias": {
11+
"$ref": "#/definitions/MyAlias"
12+
},
13+
"self": {
14+
"$ref": "#/definitions/MyObject"
15+
}
16+
},
17+
"required": [
18+
"alias",
19+
"self"
20+
],
21+
"additionalProperties": false
22+
}
23+
},
24+
"$ref": "#/definitions/MyObject"
25+
}

Diff for: test/programs/type-aliases-tuple/main.ts

+1
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
export type MyTuple = [string, number];

Diff for: test/programs/type-aliases-tuple/schema.json

+28
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
{
2+
"$schema": "http://json-schema.org/draft-04/schema#",
3+
"definitions": {
4+
"MyTuple": {
5+
"type": "array",
6+
"items": [
7+
{
8+
"type": "string"
9+
},
10+
{
11+
"type": "number"
12+
}
13+
],
14+
"additionalItems": {
15+
"anyOf": [
16+
{
17+
"type": "string"
18+
},
19+
{
20+
"type": "number"
21+
}
22+
]
23+
},
24+
"minItems": 2
25+
}
26+
},
27+
"$ref": "#/definitions/MyTuple"
28+
}

Diff for: test/programs/type-aliases-union/main.ts

+8
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
2+
type BasicArray = (string | number)[];
3+
4+
export interface MyObject {
5+
array: BasicArray;
6+
}
7+
8+
export type MyUnion = (string | MyObject)[];

Diff for: test/programs/type-aliases-union/schema.json

+37
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
{
2+
"$schema": "http://json-schema.org/draft-04/schema#",
3+
"definitions": {
4+
"MyUnion": {
5+
"type": "array",
6+
"items": {
7+
"anyOf": [
8+
{
9+
"type": "string"
10+
},
11+
{
12+
"$ref": "#/definitions/MyObject"
13+
}
14+
]
15+
}
16+
},
17+
"MyObject": {
18+
"type": "object",
19+
"properties": {
20+
"array": {
21+
"type": "array",
22+
"items": {
23+
"type": [
24+
"string",
25+
"number"
26+
]
27+
}
28+
}
29+
},
30+
"required": [
31+
"array"
32+
],
33+
"additionalProperties": false
34+
}
35+
},
36+
"$ref": "#/definitions/MyUnion"
37+
}

Diff for: test/schema.test.ts

+14-1
Original file line numberDiff line numberDiff line change
@@ -95,6 +95,18 @@ describe("schema", () => {
9595
assertSchema("type-no-aliases-recursive-topref", "MyAlias", {
9696
aliasRef: false
9797
});
98+
99+
/*
100+
assertSchema("type-aliases-primitive", "MyString");
101+
assertSchema("type-aliases-object", "MyAlias");
102+
assertSchema("type-aliases-mixed", "MyObject");
103+
assertSchema("type-aliases-union", "MyUnion");
104+
assertSchema("type-aliases-tuple", "MyTuple");
105+
assertSchema("type-aliases-anonymous", "MyObject");
106+
assertSchema("type-aliases-local-namespace", "MyObject");
107+
assertSchema("type-aliases-recursive-anonymous", "MyAlias");
108+
assertSchema("type-aliases-recursive-export", "MyObject");
109+
*/
98110
});
99111

100112
describe("enums", () => {
@@ -158,7 +170,8 @@ describe("schema", () => {
158170

159171
assertSchema("module-interface-single", "MyObject");
160172

161-
assertSchema("interface-extra-props", "MyObject");
173+
// not supported yet #116
174+
// assertSchema("interface-extra-props", "MyObject");
162175

163176
// not supported right now
164177
// assertSchema("module-interface-deep", "Def");

0 commit comments

Comments
 (0)