fix(search): tighten mock type cast for better type safety

Replace `as any` cast with `as unknown as ReturnType<typeof createMeiliClient>`
in the mock client factory. This preserves type safety without requiring the mock
to implement the full SDK interface.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-05-27 23:53:32 +05:30
parent dfa289d6b8
commit 1d6e1fb4da
4 changed files with 1258 additions and 7 deletions
+5 -1
View File
@@ -69,7 +69,11 @@
"Bash(npx jest *)", "Bash(npx jest *)",
"Bash(pnpm --filter @tower/worker test -- --testPathPattern=forward)", "Bash(pnpm --filter @tower/worker test -- --testPathPattern=forward)",
"Bash(pnpm --filter @tower/worker test -- forward.processor.test.ts)", "Bash(pnpm --filter @tower/worker test -- forward.processor.test.ts)",
"Bash(npm test *)" "Bash(npm test *)",
"Bash(grep -v \"^$\")",
"Bash(npm info *)",
"Bash(pnpm --filter @tower/search test)",
"Bash(pnpm --filter @tower/search build)"
] ]
} }
} }
File diff suppressed because it is too large Load Diff
+2 -1
View File
@@ -4,6 +4,7 @@ import {
indexMessage, indexMessage,
deleteMessage, deleteMessage,
MeiliDocument, MeiliDocument,
createMeiliClient,
} from './index'; } from './index';
function makeMockClient() { function makeMockClient() {
@@ -15,7 +16,7 @@ function makeMockClient() {
addDocuments: mockAddDocuments, addDocuments: mockAddDocuments,
deleteDocument: mockDeleteDocument, deleteDocument: mockDeleteDocument,
}); });
return { client: { index: mockIndex } as any, mockIndex, mockUpdateSettings, mockAddDocuments, mockDeleteDocument }; return { client: { index: mockIndex } as unknown as ReturnType<typeof createMeiliClient>, mockIndex, mockUpdateSettings, mockAddDocuments, mockDeleteDocument };
} }
describe('MESSAGES_INDEX', () => { describe('MESSAGES_INDEX', () => {
+32 -5
View File
@@ -80,7 +80,7 @@ importers:
version: 6.19.3(typescript@5.9.3) version: 6.19.3(typescript@5.9.3)
ts-jest: ts-jest:
specifier: ^29.0.0 specifier: ^29.0.0
version: 29.4.11(@babel/core@7.29.7)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.29.7))(jest-util@29.7.0)(jest@29.7.0(@types/node@22.19.19))(typescript@5.9.3) version: 29.4.11(@babel/core@7.29.7)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.29.7))(jest-util@29.7.0)(jest@29.7.0(@types/node@22.19.19)(ts-node@10.9.2(@types/node@22.19.19)(typescript@5.9.3)))(typescript@5.9.3)
typescript: typescript:
specifier: ^5.7.0 specifier: ^5.7.0
version: 5.9.3 version: 5.9.3
@@ -135,7 +135,7 @@ importers:
version: 4.3.0 version: 4.3.0
ts-jest: ts-jest:
specifier: ^29.0.0 specifier: ^29.0.0
version: 29.4.11(@babel/core@7.29.7)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.29.7))(jest-util@29.7.0)(jest@29.7.0(@types/node@22.19.19))(typescript@5.9.3) version: 29.4.11(@babel/core@7.29.7)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.29.7))(jest-util@29.7.0)(jest@29.7.0(@types/node@22.19.19)(ts-node@10.9.2(@types/node@22.19.19)(typescript@5.9.3)))(typescript@5.9.3)
typescript: typescript:
specifier: ^5.7.0 specifier: ^5.7.0
version: 5.9.3 version: 5.9.3
@@ -190,7 +190,7 @@ importers:
version: 6.19.3(typescript@5.9.3) version: 6.19.3(typescript@5.9.3)
ts-jest: ts-jest:
specifier: ^29.0.0 specifier: ^29.0.0
version: 29.4.11(@babel/core@7.29.7)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.29.7))(jest-util@29.7.0)(jest@29.7.0(@types/node@22.19.19))(typescript@5.9.3) version: 29.4.11(@babel/core@7.29.7)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.29.7))(jest-util@29.7.0)(jest@29.7.0(@types/node@22.19.19)(ts-node@10.9.2(@types/node@22.19.19)(typescript@5.9.3)))(typescript@5.9.3)
ts-node: ts-node:
specifier: ^10.9.0 specifier: ^10.9.0
version: 10.9.2(@types/node@22.19.19)(typescript@5.9.3) version: 10.9.2(@types/node@22.19.19)(typescript@5.9.3)
@@ -212,7 +212,7 @@ importers:
version: 29.7.0(@types/node@22.19.19)(ts-node@10.9.2(@types/node@22.19.19)(typescript@5.9.3)) version: 29.7.0(@types/node@22.19.19)(ts-node@10.9.2(@types/node@22.19.19)(typescript@5.9.3))
ts-jest: ts-jest:
specifier: ^29.0.0 specifier: ^29.0.0
version: 29.4.11(@babel/core@7.29.7)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.29.7))(jest-util@29.7.0)(jest@29.7.0(@types/node@22.19.19))(typescript@5.9.3) version: 29.4.11(@babel/core@7.29.7)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.29.7))(jest-util@29.7.0)(jest@29.7.0(@types/node@22.19.19)(ts-node@10.9.2(@types/node@22.19.19)(typescript@5.9.3)))(typescript@5.9.3)
typescript: typescript:
specifier: ^5.7.0 specifier: ^5.7.0
version: 5.9.3 version: 5.9.3
@@ -239,6 +239,28 @@ importers:
specifier: ^5.7.0 specifier: ^5.7.0
version: 5.9.3 version: 5.9.3
packages/search:
dependencies:
meilisearch:
specifier: ^0.44.0
version: 0.44.1
devDependencies:
'@types/jest':
specifier: ^29.0.0
version: 29.5.14
'@types/node':
specifier: ^22.0.0
version: 22.19.19
jest:
specifier: ^29.0.0
version: 29.7.0(@types/node@22.19.19)(ts-node@10.9.2(@types/node@22.19.19)(typescript@5.9.3))
ts-jest:
specifier: ^29.0.0
version: 29.4.11(@babel/core@7.29.7)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.29.7))(jest-util@29.7.0)(jest@29.7.0(@types/node@22.19.19)(ts-node@10.9.2(@types/node@22.19.19)(typescript@5.9.3)))(typescript@5.9.3)
typescript:
specifier: ^5.7.0
version: 5.9.3
packages/types: packages/types:
devDependencies: devDependencies:
typescript: typescript:
@@ -2759,6 +2781,9 @@ packages:
resolution: {integrity: sha512-aisnrDP4GNe06UcKFnV5bfMNPBUw4jsLGaWwWfnH3v02GnBuXX2MCVn5RbrWo0j3pczUilYblq7fQ7Nw2t5XKw==} resolution: {integrity: sha512-aisnrDP4GNe06UcKFnV5bfMNPBUw4jsLGaWwWfnH3v02GnBuXX2MCVn5RbrWo0j3pczUilYblq7fQ7Nw2t5XKw==}
engines: {node: '>= 0.8'} engines: {node: '>= 0.8'}
meilisearch@0.44.1:
resolution: {integrity: sha512-ZTZYBmomtRwjaWbvU8U8ct04g/YnrNOlvchogJOPgHcQIQBfjdbAvMJ8mLhuZEzpioYXIT6Cv+FcE150pc2+nw==}
memfs@3.5.3: memfs@3.5.3:
resolution: {integrity: sha512-UERzLsxzllchadvbPs5aolHh65ISpKpM+ccLbOJ8/vvpBKmAWf+la7dXFy7Mr0ySHbdHrFv5kGFCUHHe6GFEmw==} resolution: {integrity: sha512-UERzLsxzllchadvbPs5aolHh65ISpKpM+ccLbOJ8/vvpBKmAWf+la7dXFy7Mr0ySHbdHrFv5kGFCUHHe6GFEmw==}
engines: {node: '>= 4.0.0'} engines: {node: '>= 4.0.0'}
@@ -6588,6 +6613,8 @@ snapshots:
media-typer@1.1.0: {} media-typer@1.1.0: {}
meilisearch@0.44.1: {}
memfs@3.5.3: memfs@3.5.3:
dependencies: dependencies:
fs-monkey: 1.1.0 fs-monkey: 1.1.0
@@ -7354,7 +7381,7 @@ snapshots:
dependencies: dependencies:
punycode: 2.3.1 punycode: 2.3.1
ts-jest@29.4.11(@babel/core@7.29.7)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.29.7))(jest-util@29.7.0)(jest@29.7.0(@types/node@22.19.19))(typescript@5.9.3): ts-jest@29.4.11(@babel/core@7.29.7)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.29.7))(jest-util@29.7.0)(jest@29.7.0(@types/node@22.19.19)(ts-node@10.9.2(@types/node@22.19.19)(typescript@5.9.3)))(typescript@5.9.3):
dependencies: dependencies:
bs-logger: 0.2.6 bs-logger: 0.2.6
fast-json-stable-stringify: 2.1.0 fast-json-stable-stringify: 2.1.0