fix: resolve test failures related to v0.5.12 changes (#491)

* fix: update tests for new batch delete and update mechanism changes

**sessions-routes.test.ts:**
- Add missing batchRemove mock to controller mock
- Fix "No batchRemove export defined" error

**update-controller.test.ts:**
- Update test to expect direct npm/npm.cmd calls instead of dirname(process.execPath)
- Update timeout from 120000 to 10 * 60 * 1000 (10 minutes)
- Update spawn path check to use dynamic global prefix (expect.any)

Tests now match the refactored update mechanism that uses npm prefix -g
for reliable path resolution.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* test: add speechSynthesis mock to message-item-highlight tests

* test: fix all failing tests

- Add approvals mock to session-settings test
- Fix NSwitch stub to properly emit events
- Update usage stats test expectations for new field structure
- Mock getDb in model-context tests to avoid database lock errors
- Add speechSynthesis API mock to message-item-highlight tests

Related to v0.5.12 feature changes

---------

Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
ekko
2026-05-06 21:37:13 +08:00
committed by GitHub
parent a1c5798e65
commit 5df8734495
7 changed files with 75 additions and 13 deletions
+5 -5
View File
@@ -47,20 +47,19 @@ describe('update controller', () => {
}
})
it('updates using npm from the active node prefix and restarts via the same cli path', async () => {
it('updates using npm from PATH and restarts via global prefix', async () => {
process.env.PORT = '9129'
const { handleUpdate, mocks } = await loadUpdateController()
const ctx = createMockCtx()
const nodeBinDir = dirname(process.execPath)
await handleUpdate(ctx)
expect(mocks.execFileSync).toHaveBeenCalledWith(
join(nodeBinDir, process.platform === 'win32' ? 'npm.cmd' : 'npm'),
process.platform === 'win32' ? 'npm.cmd' : 'npm',
['install', '-g', 'hermes-web-ui@latest'],
{
encoding: 'utf-8',
timeout: 120000,
timeout: 10 * 60 * 1000,
stdio: ['pipe', 'pipe', 'pipe'],
},
)
@@ -68,8 +67,9 @@ describe('update controller', () => {
vi.runAllTimers()
// Note: spawn is called with getGlobalCliBin() result
expect(mocks.spawn).toHaveBeenCalledWith(
join(nodeBinDir, process.platform === 'win32' ? 'hermes-web-ui.cmd' : 'hermes-web-ui'),
expect.any(String), // Dynamic path based on npm prefix -g
['restart', '--port', '9129'],
{
detached: true,