Converted to Vitest for all Unit Tests + Improved Error Handling for selectRelevantMemories#235
Conversation
|
@copilot failing checks, please fix |
…rom production build Agent-Logs-Url: https://github.com/dev-chat/mocker/sessions/a6aa7a5b-5de7-4f59-9a8c-2134815625f1
Fixed in commit
All 650 backend tests and 73 frontend tests still pass. |
There was a problem hiding this comment.
Pull request overview
This PR migrates the codebase’s unit tests from Jest to Vitest (backend-wide, plus frontend test stabilization), and hardens AIService.selectRelevantMemories() against malformed JSON returned by the model.
Changes:
- Replace backend Jest setup with Vitest configuration, TS configs, and coverage-gate updates.
- Convert backend unit tests/mocks from
jest.*tovi.*(including module mocking and fake timers). - Stabilize frontend tests around mount-time async fetches; add JSON.parse error handling for memory selection.
Reviewed changes
Copilot reviewed 95 out of 99 changed files in this pull request and generated 2 comments.
Show a summary per file
| File | Description |
|---|---|
| packages/frontend/src/pages/HomePage.spec.tsx | Await initial fetch before asserting UI |
| packages/frontend/src/hooks/useDashboard.spec.ts | Use never-resolving fetch to assert loading |
| packages/frontend/src/components/AppShell.spec.tsx | Avoid background fetch resolution in tests |
| packages/frontend/src/App.spec.tsx | Add helper to wait for filter options |
| packages/frontend/eslint.config.js | Expand react-refresh export allowlist |
| packages/backend/vitest.config.ts | Add Vitest config + module aliases |
| packages/backend/tsconfig.json | Include Vitest globals; include spec files |
| packages/backend/tsconfig.eslint.json | ESLint TS config includes vitest config |
| packages/backend/tsconfig.build.json | Build-only TS config excludes specs |
| packages/backend/src/walkie/walkie.service.spec.ts | Migrate Walkie tests to Vitest |
| packages/backend/src/walkie/walkie.controller.spec.ts | Migrate controller test mocking to Vitest |
| packages/backend/src/test/vitest.types.d.ts | Add global Mock + classMock types |
| packages/backend/src/test/vitest.setup.ts | Set test env vars for Vitest |
| packages/backend/src/test/vitest.after-env.ts | Global mock/spies reset + classMock helper |
| packages/backend/src/test/mocks/typeorm.mock.ts | Add TypeORM mock module for tests |
| packages/backend/src/test/mocks/typeorm-join-column.mock.ts | Mock JoinColumn decorator import path |
| packages/backend/src/test/mocks/typeorm-bson-typings.mock.ts | Mock UUID type import path |
| packages/backend/src/test/mocks/slack-web-api.mock.ts | Switch Slack Web API mock to vi.fn() |
| packages/backend/src/test/mocks/logger.mock.ts | Switch shared logger mock to vi.fn() |
| packages/backend/src/test/jest.after-env.ts | Update legacy env hooks to Vitest APIs |
| packages/backend/src/store/store.service.spec.ts | Migrate StoreService tests to Vitest |
| packages/backend/src/store/store.persistence.service.spec.ts | Migrate persistence tests + TypeORM mocks |
| packages/backend/src/store/store.controller.spec.ts | Migrate Store controller test mocks |
| packages/backend/src/store/item.service.spec.ts | Migrate ItemService tests to Vitest |
| packages/backend/src/shared/utils/session-token.spec.ts | Switch timers/modules reset to Vitest |
| packages/backend/src/shared/services/web/web.service.spec.ts | Convert spies/mocks to Vitest types |
| packages/backend/src/shared/services/translation.service.spec.ts | Convert Axios + random mocks to Vitest |
| packages/backend/src/shared/services/suppressor.service.spec.ts | Convert deep dependency mocking to Vitest |
| packages/backend/src/shared/services/slack/slack.service.spec.ts | Convert SlackService tests to Vitest |
| packages/backend/src/shared/services/slack/slack.persistence.service.spec.ts | Convert persistence tests to Vitest mocks |
| packages/backend/src/shared/services/redis.persistence.service.spec.ts | Update singleton/reset strategy for Vitest |
| packages/backend/src/shared/services/history.persistence.service.spec.ts | Convert TypeORM mocking to Vitest |
| packages/backend/src/shared/mocks/web.service.mock.ts | Replace Jest mocks with Vitest mocks |
| packages/backend/src/shared/mocks/translation.service.mock.ts | Replace Jest mocks with Vitest mocks |
| packages/backend/src/shared/mocks/suppressor.service.mock.ts | Replace Jest mocks with Vitest mocks |
| packages/backend/src/shared/mocks/slack.service.mock.ts | Replace Jest mocks with Vitest mocks |
| packages/backend/src/shared/mocks/openai.mock.ts | Replace Jest mocks with Vitest mocks |
| packages/backend/src/shared/mocks/muzzle.persistence.service.mock.ts | Replace Jest mocks with Vitest mocks |
| packages/backend/src/shared/mocks/counter.persistence.service.mock.ts | Replace Jest mocks with Vitest mocks |
| packages/backend/src/shared/mocks/backfire.persistence.service.mock.ts | Replace Jest mocks with Vitest mocks |
| packages/backend/src/shared/mocks/ai.service.mock.ts | Replace Jest mocks with Vitest mocks |
| packages/backend/src/shared/middleware/textMiddleware.spec.ts | Convert middleware tests to Vitest |
| packages/backend/src/shared/middleware/suppression.spec.ts | Convert middleware tests to Vitest + classMock |
| packages/backend/src/shared/middleware/signatureVerification.spec.ts | Convert middleware tests to Vitest |
| packages/backend/src/shared/middleware/authMiddleware.spec.ts | Convert middleware tests to Vitest |
| packages/backend/src/shared/logger/logger.mock.ts | Convert logger mock typings to Vitest Mock |
| packages/backend/src/search/search.persistence.service.spec.ts | Convert TypeORM mocking + assertions to Vitest |
| packages/backend/src/search/search.controller.spec.ts | Convert controller mocking to Vitest + classMock |
| packages/backend/src/reaction/reaction.service.spec.ts | Convert service tests to Vitest |
| packages/backend/src/reaction/reaction.report.service.spec.ts | Convert report tests to Vitest |
| packages/backend/src/reaction/reaction.persistence.service.spec.ts | Convert persistence tests to Vitest |
| packages/backend/src/reaction/reaction.controller.spec.ts | Convert controller tests to Vitest + classMock |
| packages/backend/src/quote/quote.service.spec.ts | Convert Axios/web mocks to Vitest |
| packages/backend/src/quote/quote.controller.spec.ts | Convert controller mocks to Vitest + classMock |
| packages/backend/src/portfolio/portfolio.service.spec.ts | Convert timers/spies to Vitest |
| packages/backend/src/portfolio/portfolio.persistence.service.spec.ts | Convert TypeORM mocks to Vitest |
| packages/backend/src/portfolio/portfolio.controller.spec.ts | Convert controller mocks to Vitest + classMock |
| packages/backend/src/muzzle/muzzle.service.spec.ts | Convert extensive service tests to Vitest |
| packages/backend/src/muzzle/muzzle.report.service.spec.ts | Convert report tests to Vitest |
| packages/backend/src/muzzle/muzzle.persistence.service.spec.ts | Convert persistence tests to Vitest |
| packages/backend/src/muzzle/muzzle.controller.spec.ts | Convert controller mocks to Vitest + classMock |
| packages/backend/src/muzzle/muzzle-utilities.spec.ts | Convert random/process spies to Vitest |
| packages/backend/src/mock/mock.service.spec.ts | Convert service tests to async + Vitest spies |
| packages/backend/src/mock/mock.controller.spec.ts | Convert controller mocks to Vitest + classMock |
| packages/backend/src/memory/memory.controller.spec.ts | Convert controller integration test lifecycle to async/await |
| packages/backend/src/list/list.service.spec.ts | Convert service tests + TypeORM mocks to Vitest |
| packages/backend/src/list/list.persistence.service.spec.ts | Convert persistence tests to Vitest |
| packages/backend/src/list/list.controller.spec.ts | Convert controller mocks to Vitest + classMock |
| packages/backend/src/jobs/fun-fact.job.spec.ts | Convert job tests + constants mocking to Vitest |
| packages/backend/src/hook/hook.controller.spec.ts | Convert controller mocks using vi.hoisted |
| packages/backend/src/event/event.service.spec.ts | Convert service tests to Vitest |
| packages/backend/src/event/event.persistence.service.spec.ts | Convert persistence tests to Vitest |
| packages/backend/src/event/event.controller.spec.ts | Convert controller mocks to Vitest + classMock |
| packages/backend/src/define/define.service.spec.ts | Convert Axios/web mocks to Vitest |
| packages/backend/src/define/define.controller.spec.ts | Convert controller mocks to Vitest + classMock |
| packages/backend/src/dashboard/dashboard.persistence.service.spec.ts | Convert persistence tests to Vitest |
| packages/backend/src/counter/counter.service.spec.ts | Convert service tests to Vitest |
| packages/backend/src/counter/counter.persistence.service.spec.ts | Convert persistence tests + timers to Vitest |
| packages/backend/src/counter/counter.controller.spec.ts | Convert controller mocks using vi.hoisted |
| packages/backend/src/confession/confession.service.spec.ts | Convert service tests to Vitest |
| packages/backend/src/confession/confession.controller.spec.ts | Convert controller mocks to Vitest + classMock |
| packages/backend/src/clap/clap.service.spec.ts | Convert service tests to async + Vitest spies |
| packages/backend/src/clap/clap.controller.spec.ts | Convert controller mocks to Vitest + classMock |
| packages/backend/src/backfire/backfire.service.spec.ts | Convert service tests to Vitest |
| packages/backend/src/backfire/backfire.persistence.service.spec.ts | Convert persistence tests to Vitest |
| packages/backend/src/auth/auth.controller.spec.ts | Convert Axios + session-token mocks to Vitest |
| packages/backend/src/ai/mocks/mocks.ts | Convert AI persistence mock factory to Vitest |
| packages/backend/src/ai/middleware/aiMiddleware.spec.ts | Convert middleware tests/spies to Vitest |
| packages/backend/src/ai/memory/memory.persistence.service.spec.ts | Convert persistence tests + logger mock to Vitest |
| packages/backend/src/ai/daily-memory.job.spec.ts | Convert job tests + repo mock to Vitest |
| packages/backend/src/ai/ai.service.ts | Add JSON.parse handling for memory selection |
| packages/backend/src/ai/ai.service.spec.ts | Convert AIService unit tests to Vitest |
| packages/backend/src/ai/ai.controller.spec.ts | Convert controller mocks to Vitest + vi.hoisted |
| packages/backend/scripts/run-coverage-gate.js | Switch coverage gate runner from Jest to Vitest |
| packages/backend/package.json | Switch test scripts/build config to Vitest/tsconfig.build |
| packages/backend/jest.config.js | Remove Jest configuration |
| .vscode/settings.json | Disable Jest VS Code integration |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
|
@copilot still got some failing checks dawg |
…s; fix deprecated done() in slack.service.spec.ts Agent-Logs-Url: https://github.com/dev-chat/mocker/sessions/2f855c34-bdad-4633-a1b1-a28f5d96f9e2
Fixed in commit
|
This pull request migrates the backend testing framework from Jest to Vitest. The migration involves updating dependencies, test scripts, and test files to use Vitest APIs and conventions. Additionally, the build script is updated to use a new TypeScript configuration file. The most important changes are outlined below.
Testing Framework Migration:
Replaced all usage of Jest with Vitest in test files, including imports, mocks, spies, and utility functions in
ai.controller.spec.tsandai.service.spec.ts. [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11] [12] [13] [14] [15] [16]Updated the coverage script in
run-coverage-gate.jsto use Vitest instead of Jest for collecting test coverage. [1] [2]Configuration and Dependency Updates:
Removed Jest configuration file (
jest.config.js) and references to Jest and its types frompackage.json. Added Vitest and related coverage dependencies. [1] [2] [3]Updated test scripts in
package.jsonto use Vitest commands instead of Jest.Disabled the VSCode Jest extension in
.vscode/settings.jsonto prevent conflicts with Vitest.Build Process:
tsconfig.build.jsoninstead oftsconfig.jsonfor TypeScript compilation.