-
Notifications
You must be signed in to change notification settings - Fork 7
/
Copy pathmatch.test.ts
70 lines (64 loc) · 1.28 KB
/
match.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
// @ts-ignore TS6133
import { expect, test } from "@jest/globals";
import * as z from "../index";
test("match requset", () => {
const a = z.endpoint({
name: "A",
method: "GET",
path: [z.literal("a")],
query: {
next: z.parameter(z.string()),
},
responses: [
z.response({
status: 200,
}),
],
});
const b = z.endpoint({
name: "B",
method: "POST",
path: [z.literal("b")],
query: {
next: z.parameter(z.string().optional()),
},
responses: [
z.response({
status: 200,
body: [
z.body({
type: "application/json",
content: z.object({
b: z.string(),
}),
}),
z.body({
type: "plain/text",
content: z.object({
c: z.string(),
}),
}),
],
}),
],
});
const schema = z.union([a, b]);
const reqA: z.MatchRequest = {
method: "GET",
path: ["a"],
query: {
next: "a",
},
headers: {},
};
const reqB: z.MatchRequest = {
method: "POST",
path: ["b"],
query: {
next: undefined,
},
headers: {},
};
expect(z.matchRequest(schema, reqA)).toEqual(a);
expect(z.matchRequest(schema, reqB)).toEqual(b);
});