Skip to content

Commit 9e18caa

Browse files
authored
chore: move more mocks to separate file (#10)
1 parent 677e83c commit 9e18caa

File tree

2 files changed

+34
-33
lines changed

2 files changed

+34
-33
lines changed

lib/__tests__/middleware.test.ts

Lines changed: 22 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -6,44 +6,34 @@ import { beforeEach, describe, expect, it, vi } from "vitest";
66

77
import { Config } from "../config.ts";
88
import { createMiddleware } from "../middleware.ts";
9-
import { mockLogger } from "./mocks.ts";
9+
import { createMockReq, createMockRes, mockLogger, mockNext } from "./mocks.ts";
1010

1111
vi.mock("fs");
1212
const mockCreateReadStream = vi.mocked(fs.createReadStream);
1313
const mockStatSync = vi.mocked(fs.statSync);
1414
const mockPipe = vi.fn();
1515

16-
const mockConfig: Config = [
16+
const testConfig: Config = [
1717
{
1818
pattern: /\/test-data\/(.*)/,
1919
resolve: (groups) => `../test-data/${groups[1]}`,
2020
},
2121
];
2222

23-
function mockReq(opts?: Partial<Connect.IncomingMessage>) {
24-
return { url: "/test-data/hello", ...opts } as Connect.IncomingMessage;
25-
}
26-
27-
function mockRes(opts?: Partial<ServerResponse<Connect.IncomingMessage>>) {
28-
return { end: vi.fn(), writeHead: vi.fn(), ...opts } as ServerResponse<Connect.IncomingMessage>;
29-
}
30-
31-
const mockNext = vi.fn() as Connect.NextFunction;
32-
3323
function expectedHeaders(length: number, type?: string) {
3424
return {
3525
"Content-Length": length,
3626
...(type && { "Content-Type": type }),
3727
};
3828
}
3929

40-
function expectYield(res: ReturnType<typeof mockRes>) {
30+
function expectYield(res: ServerResponse<Connect.IncomingMessage>) {
4131
expect(mockNext).toHaveBeenCalledOnce();
4232
expect(res.writeHead).not.toHaveBeenCalled();
4333
expect(res.end).not.toHaveBeenCalled();
4434
}
4535

46-
function expectNotFound(res: ReturnType<typeof mockRes>) {
36+
function expectNotFound(res: ServerResponse<Connect.IncomingMessage>) {
4737
expect(res.writeHead).toHaveBeenCalledWith(404);
4838
expect(res.end).toHaveBeenCalledOnce();
4939
expect(mockNext).not.toHaveBeenCalled();
@@ -65,8 +55,8 @@ describe("middleware", () => {
6555
},
6656
];
6757
const middleware = createMiddleware(config, mockLogger);
68-
const req = mockReq({ url: "/hello" });
69-
const res = mockRes();
58+
const req = createMockReq({ url: "/hello" });
59+
const res = createMockRes();
7060

7161
// when
7262
middleware(req, res, mockNext);
@@ -110,8 +100,8 @@ describe("middleware", () => {
110100
for (const test of tests) {
111101
// given
112102
mockStatSync.mockReturnValue({ size: test.size, isFile: () => true } as Stats);
113-
const req = mockReq({ url: test.url });
114-
const res = mockRes();
103+
const req = createMockReq({ url: test.url });
104+
const res = createMockRes();
115105

116106
// when
117107
middleware(req, res, mockNext);
@@ -127,9 +117,9 @@ describe("middleware", () => {
127117
it("returns a 404 if the resolved path cannot be opened", () => {
128118
// given
129119
mockStatSync.mockReturnValue(undefined);
130-
const middleware = createMiddleware(mockConfig, mockLogger);
131-
const req = mockReq();
132-
const res = mockRes();
120+
const middleware = createMiddleware(testConfig, mockLogger);
121+
const req = createMockReq();
122+
const res = createMockRes();
133123

134124
// when
135125
middleware(req, res, mockNext);
@@ -141,9 +131,9 @@ describe("middleware", () => {
141131
it("returns a 404 if the resolved path does not point to a file", () => {
142132
// given
143133
mockStatSync.mockReturnValue({ isFile: () => false } as Stats);
144-
const middleware = createMiddleware(mockConfig, mockLogger);
145-
const req = mockReq();
146-
const res = mockRes();
134+
const middleware = createMiddleware(testConfig, mockLogger);
135+
const req = createMockReq();
136+
const res = createMockRes();
147137

148138
// when
149139
middleware(req, res, mockNext);
@@ -154,9 +144,9 @@ describe("middleware", () => {
154144

155145
it("yields if the url is undefined", () => {
156146
// given
157-
const middleware = createMiddleware(mockConfig, mockLogger);
158-
const req = mockReq({ url: undefined });
159-
const res = mockRes();
147+
const middleware = createMiddleware(testConfig, mockLogger);
148+
const req = createMockReq({ url: undefined });
149+
const res = createMockRes();
160150

161151
// when
162152
middleware(req, res, mockNext);
@@ -168,8 +158,8 @@ describe("middleware", () => {
168158
it("yields if the config is empty", () => {
169159
// given
170160
const middleware = createMiddleware([], mockLogger);
171-
const req = mockReq();
172-
const res = mockRes();
161+
const req = createMockReq();
162+
const res = createMockRes();
173163

174164
// when
175165
middleware(req, res, mockNext);
@@ -180,9 +170,9 @@ describe("middleware", () => {
180170

181171
it("yields if none of the config patterns match", () => {
182172
// given
183-
const middleware = createMiddleware(mockConfig, mockLogger);
184-
const req = mockReq({ url: "/index.html" });
185-
const res = mockRes();
173+
const middleware = createMiddleware(testConfig, mockLogger);
174+
const req = createMockReq({ url: "/index.html" });
175+
const res = createMockRes();
186176

187177
// when
188178
middleware(req, res, mockNext);

lib/__tests__/mocks.ts

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
1-
import { Logger } from "vite";
1+
import { ServerResponse } from "http";
2+
import { Connect, Logger } from "vite";
23
import { vi } from "vitest";
34

45
export const mockLogger = vi.mocked<Logger>({
@@ -10,3 +11,13 @@ export const mockLogger = vi.mocked<Logger>({
1011
warnOnce: vi.fn(),
1112
error: vi.fn(),
1213
});
14+
15+
export function createMockReq(opts?: Partial<Connect.IncomingMessage>) {
16+
return { url: "/test-data/hello", ...opts } as Connect.IncomingMessage;
17+
}
18+
19+
export function createMockRes(opts?: Partial<ServerResponse<Connect.IncomingMessage>>) {
20+
return { end: vi.fn(), writeHead: vi.fn(), ...opts } as ServerResponse<Connect.IncomingMessage>;
21+
}
22+
23+
export const mockNext = vi.fn() as Connect.NextFunction;

0 commit comments

Comments
 (0)