-
-
Notifications
You must be signed in to change notification settings - Fork 29
/
adapter.fetch.spec.ts
152 lines (150 loc) · 5.25 KB
/
adapter.fetch.spec.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
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
import { createServerAdapter } from '../src';
import { createTestContainer } from './create-test-container';
describe('adapter.fetch', () => {
createTestContainer(({ Request }) => {
// Request as first parameter
it('should accept Request as a first argument', async () => {
const handleRequest = jest.fn();
const adapter = createServerAdapter(handleRequest, Request);
const request = new Request('http://localhost:8080');
await adapter(request);
expect(handleRequest).toHaveBeenCalledWith(request, expect.anything());
});
it('should accept additional parameters as server context', async () => {
const handleRequest = jest.fn();
const adapter = createServerAdapter<{
foo: string;
}>(handleRequest, Request);
const request = new Request('http://localhost:8080');
const additionalCtx = { foo: 'bar' };
await adapter.fetch(request, additionalCtx);
expect(handleRequest).toHaveBeenCalledWith(request, expect.objectContaining(additionalCtx));
});
// URL as first parameter
it('should accept URL as a first argument', async () => {
const handleRequest = jest.fn();
const adapter = createServerAdapter(handleRequest, Request);
const url = new URL('http://localhost:8080');
await adapter.fetch(url);
expect(handleRequest).toHaveBeenCalledWith(
expect.objectContaining({
url: url.toString(),
}),
expect.anything()
);
});
it('should accept URL without a RequestInit but with an additional context', async () => {
const handleRequest = jest.fn();
const adapter = createServerAdapter<{
foo: string;
}>(handleRequest, Request);
const url = new URL('http://localhost:8080');
const additionalCtx = { foo: 'bar' };
await adapter.fetch(url, additionalCtx);
expect(handleRequest).toHaveBeenCalledWith(
expect.objectContaining({
url: url.toString(),
}),
expect.objectContaining(additionalCtx)
);
});
it('should accept URL with a RequestInit', async () => {
const handleRequest = jest.fn();
const adapter = createServerAdapter(handleRequest, Request);
const url = new URL('http://localhost:8080');
const init = {
method: 'POST',
};
await adapter.fetch(url, init);
expect(handleRequest).toHaveBeenCalledWith(
expect.objectContaining({
url: url.toString(),
method: init.method,
}),
expect.anything()
);
});
it('should accept URL with a RequestInit and additional parameters as server context', async () => {
const handleRequest = jest.fn();
const adapter = createServerAdapter<{
foo: string;
}>(handleRequest, Request);
const url = new URL('http://localhost:8080');
const init = {
method: 'POST',
};
const additionalCtx = { foo: 'bar' };
await adapter.fetch(url, init, additionalCtx);
expect(handleRequest).toHaveBeenCalledWith(
expect.objectContaining({
url: url.toString(),
method: init.method,
}),
expect.objectContaining(additionalCtx)
);
});
// String as first parameter
it('should accept string as a first argument', async () => {
const handleRequest = jest.fn();
const adapter = createServerAdapter(handleRequest, Request);
const url = 'http://localhost:8080/';
await adapter.fetch(url);
expect(handleRequest).toHaveBeenCalledWith(
expect.objectContaining({
url,
}),
expect.anything()
);
});
it('should accept string without a RequestInit but with an additional context', async () => {
const handleRequest = jest.fn();
const adapter = createServerAdapter<{
foo: string;
}>(handleRequest, Request);
const url = 'http://localhost:8080/';
const additionalCtx = { foo: 'bar' };
await adapter.fetch(url, additionalCtx);
expect(handleRequest).toHaveBeenCalledWith(
expect.objectContaining({
url,
}),
expect.objectContaining(additionalCtx)
);
});
it('should accept string with a RequestInit', async () => {
const handleRequest = jest.fn();
const adapter = createServerAdapter(handleRequest, Request);
const url = 'http://localhost:8080/';
const init = {
method: 'POST',
};
await adapter.fetch(url, init);
expect(handleRequest).toHaveBeenCalledWith(
expect.objectContaining({
url,
method: init.method,
}),
expect.anything()
);
});
it('should accept string with a RequestInit and additional parameters as server context', async () => {
const handleRequest = jest.fn();
const adapter = createServerAdapter<{
foo: string;
}>(handleRequest, Request);
const url = 'http://localhost:8080/';
const init = {
method: 'POST',
};
const additionalCtx = { foo: 'bar' };
await adapter.fetch(url, init, additionalCtx);
expect(handleRequest).toHaveBeenCalledWith(
expect.objectContaining({
url,
method: init.method,
}),
expect.objectContaining(additionalCtx)
);
});
});
});