Skip to content

Commit bd773c8

Browse files
committed
[WIP] Add many more e2e TypeScript usage checks
Signed-off-by: Juan Cruz Viotti <[email protected]>
1 parent 0fc9218 commit bd773c8

File tree

13 files changed

+2041
-8
lines changed

13 files changed

+2041
-8
lines changed
Lines changed: 293 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,293 @@
1+
import {
2+
AllTypes,
3+
AllTypes_Properties_ObjectField,
4+
AllTypes_Properties_NestedTypes,
5+
AllTypes_Properties_MultiType,
6+
AllTypes_Properties_ArrayField
7+
} from "./expected";
8+
9+
const minimal: AllTypes = {
10+
stringField: "hello",
11+
numberField: 3.14,
12+
integerField: 42,
13+
booleanField: true,
14+
nullField: null,
15+
arrayField: [ "a", "b", "c" ],
16+
objectField: {}
17+
};
18+
19+
const complete: AllTypes = {
20+
stringField: "hello",
21+
numberField: -123.456,
22+
integerField: 0,
23+
booleanField: false,
24+
nullField: null,
25+
arrayField: [],
26+
objectField: { nested: "value" },
27+
multiType: "string value",
28+
nestedTypes: {
29+
deepBoolean: true,
30+
deepNull: null,
31+
deepInteger: 100
32+
}
33+
};
34+
35+
const multiTypeString: AllTypes = {
36+
stringField: "test",
37+
numberField: 1,
38+
integerField: 1,
39+
booleanField: true,
40+
nullField: null,
41+
arrayField: [],
42+
objectField: {},
43+
multiType: "hello world"
44+
};
45+
46+
const multiTypeNumber: AllTypes = {
47+
stringField: "test",
48+
numberField: 1,
49+
integerField: 1,
50+
booleanField: true,
51+
nullField: null,
52+
arrayField: [],
53+
objectField: {},
54+
multiType: 42.5
55+
};
56+
57+
const multiTypeNull: AllTypes = {
58+
stringField: "test",
59+
numberField: 1,
60+
integerField: 1,
61+
booleanField: true,
62+
nullField: null,
63+
arrayField: [],
64+
objectField: {},
65+
multiType: null
66+
};
67+
68+
const invalidStringField: AllTypes = {
69+
// @ts-expect-error
70+
stringField: 123,
71+
numberField: 1,
72+
integerField: 1,
73+
booleanField: true,
74+
nullField: null,
75+
arrayField: [],
76+
objectField: {}
77+
};
78+
79+
const invalidNumberField: AllTypes = {
80+
stringField: "test",
81+
// @ts-expect-error
82+
numberField: "3.14",
83+
integerField: 1,
84+
booleanField: true,
85+
nullField: null,
86+
arrayField: [],
87+
objectField: {}
88+
};
89+
90+
const invalidIntegerField: AllTypes = {
91+
stringField: "test",
92+
numberField: 1,
93+
// @ts-expect-error
94+
integerField: "42",
95+
booleanField: true,
96+
nullField: null,
97+
arrayField: [],
98+
objectField: {}
99+
};
100+
101+
const invalidBooleanField: AllTypes = {
102+
stringField: "test",
103+
numberField: 1,
104+
integerField: 1,
105+
// @ts-expect-error
106+
booleanField: "true",
107+
nullField: null,
108+
arrayField: [],
109+
objectField: {}
110+
};
111+
112+
const invalidNullFieldString: AllTypes = {
113+
stringField: "test",
114+
numberField: 1,
115+
integerField: 1,
116+
booleanField: true,
117+
// @ts-expect-error
118+
nullField: "not null",
119+
arrayField: [],
120+
objectField: {}
121+
};
122+
123+
const invalidNullFieldUndefined: AllTypes = {
124+
stringField: "test",
125+
numberField: 1,
126+
integerField: 1,
127+
booleanField: true,
128+
// @ts-expect-error
129+
nullField: undefined,
130+
arrayField: [],
131+
objectField: {}
132+
};
133+
134+
const invalidArrayItems: AllTypes = {
135+
stringField: "test",
136+
numberField: 1,
137+
integerField: 1,
138+
booleanField: true,
139+
nullField: null,
140+
// @ts-expect-error
141+
arrayField: [ 1, 2, 3 ],
142+
objectField: {}
143+
};
144+
145+
// @ts-expect-error
146+
const missingRequired: AllTypes = {
147+
stringField: "test",
148+
numberField: 1,
149+
integerField: 1,
150+
booleanField: true,
151+
nullField: null,
152+
arrayField: []
153+
};
154+
155+
const invalidMultiType: AllTypes = {
156+
stringField: "test",
157+
numberField: 1,
158+
integerField: 1,
159+
booleanField: true,
160+
nullField: null,
161+
arrayField: [],
162+
objectField: {},
163+
// @ts-expect-error
164+
multiType: true
165+
};
166+
167+
const invalidMultiTypeArray: AllTypes = {
168+
stringField: "test",
169+
numberField: 1,
170+
integerField: 1,
171+
booleanField: true,
172+
nullField: null,
173+
arrayField: [],
174+
objectField: {},
175+
// @ts-expect-error
176+
multiType: [ 1, 2, 3 ]
177+
};
178+
179+
const invalidObjectFieldExtra: AllTypes = {
180+
stringField: "test",
181+
numberField: 1,
182+
integerField: 1,
183+
booleanField: true,
184+
nullField: null,
185+
arrayField: [],
186+
objectField: {
187+
nested: "ok",
188+
// @ts-expect-error
189+
extra: "not allowed"
190+
}
191+
};
192+
193+
const invalidObjectFieldType: AllTypes = {
194+
stringField: "test",
195+
numberField: 1,
196+
integerField: 1,
197+
booleanField: true,
198+
nullField: null,
199+
arrayField: [],
200+
objectField: {
201+
// @ts-expect-error
202+
nested: 123
203+
}
204+
};
205+
206+
const invalidNestedTypesExtra: AllTypes = {
207+
stringField: "test",
208+
numberField: 1,
209+
integerField: 1,
210+
booleanField: true,
211+
nullField: null,
212+
arrayField: [],
213+
objectField: {},
214+
nestedTypes: {
215+
deepBoolean: true,
216+
// @ts-expect-error
217+
extra: "not allowed"
218+
}
219+
};
220+
221+
const invalidNestedTypesBoolean: AllTypes = {
222+
stringField: "test",
223+
numberField: 1,
224+
integerField: 1,
225+
booleanField: true,
226+
nullField: null,
227+
arrayField: [],
228+
objectField: {},
229+
nestedTypes: {
230+
// @ts-expect-error
231+
deepBoolean: "yes"
232+
}
233+
};
234+
235+
const invalidNestedTypesNull: AllTypes = {
236+
stringField: "test",
237+
numberField: 1,
238+
integerField: 1,
239+
booleanField: true,
240+
nullField: null,
241+
arrayField: [],
242+
objectField: {},
243+
nestedTypes: {
244+
// @ts-expect-error
245+
deepNull: "null"
246+
}
247+
};
248+
249+
const invalidNestedTypesInteger: AllTypes = {
250+
stringField: "test",
251+
numberField: 1,
252+
integerField: 1,
253+
booleanField: true,
254+
nullField: null,
255+
arrayField: [],
256+
objectField: {},
257+
nestedTypes: {
258+
// @ts-expect-error
259+
deepInteger: "100"
260+
}
261+
};
262+
263+
const invalidRootExtra: AllTypes = {
264+
stringField: "test",
265+
numberField: 1,
266+
integerField: 1,
267+
booleanField: true,
268+
nullField: null,
269+
arrayField: [],
270+
objectField: {},
271+
// @ts-expect-error
272+
unknownField: "not allowed"
273+
};
274+
275+
const arrayField: AllTypes_Properties_ArrayField = [ "a", "b" ];
276+
// @ts-expect-error
277+
const invalidArrayFieldType: AllTypes_Properties_ArrayField = [ 1, 2 ];
278+
279+
const multiType1: AllTypes_Properties_MultiType = "string";
280+
const multiType2: AllTypes_Properties_MultiType = 42;
281+
const multiType3: AllTypes_Properties_MultiType = null;
282+
// @ts-expect-error
283+
const invalidMultiTypeStandalone: AllTypes_Properties_MultiType = true;
284+
285+
const objectField: AllTypes_Properties_ObjectField = {};
286+
const objectField2: AllTypes_Properties_ObjectField = { nested: "value" };
287+
// @ts-expect-error
288+
const invalidObjectFieldStandalone: AllTypes_Properties_ObjectField = { nested: 123 };
289+
290+
const nestedTypes: AllTypes_Properties_NestedTypes = {};
291+
const nestedTypes2: AllTypes_Properties_NestedTypes = { deepBoolean: false, deepNull: null, deepInteger: 50 };
292+
// @ts-expect-error
293+
const invalidNestedTypesStandalone: AllTypes_Properties_NestedTypes = { deepBoolean: "yes" };

0 commit comments

Comments
 (0)