mirror of
https://github.com/EKKOLearnAI/hermes-web-ui.git
synced 2026-07-16 05:30:20 +00:00
89 lines
2.7 KiB
TypeScript
89 lines
2.7 KiB
TypeScript
import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest'
|
|
|
|
describe('MCU devices store', () => {
|
|
let db: any = null
|
|
|
|
beforeEach(async () => {
|
|
vi.resetModules()
|
|
const { DatabaseSync } = await import('node:sqlite')
|
|
db = new DatabaseSync(':memory:')
|
|
vi.doMock('../../packages/server/src/db/index', () => ({
|
|
getDb: () => db,
|
|
getStoragePath: () => ':memory:',
|
|
}))
|
|
const { initAllHermesTables } = await import('../../packages/server/src/db/hermes/schemas')
|
|
initAllHermesTables()
|
|
})
|
|
|
|
afterEach(() => {
|
|
db?.close()
|
|
db = null
|
|
vi.doUnmock('../../packages/server/src/db/index')
|
|
vi.resetModules()
|
|
})
|
|
|
|
it('stores official and unofficial MCU devices', async () => {
|
|
const { createMcuDevice, listMcuDevices } = await import('../../packages/server/src/db/hermes/mcu-devices-store')
|
|
|
|
const official = createMcuDevice({
|
|
name: 'Official Box',
|
|
deviceCode: 'official-code',
|
|
isOfficial: true,
|
|
})
|
|
const unofficial = createMcuDevice({
|
|
name: 'Unofficial Box',
|
|
deviceCode: 'unofficial-code',
|
|
isOfficial: false,
|
|
})
|
|
|
|
expect(official.is_official).toBe(true)
|
|
expect(unofficial.is_official).toBe(false)
|
|
expect(listMcuDevices().map(device => device.device_code).sort()).toEqual(['official-code', 'unofficial-code'])
|
|
})
|
|
|
|
it('rejects duplicate device codes', async () => {
|
|
const { createMcuDevice } = await import('../../packages/server/src/db/hermes/mcu-devices-store')
|
|
|
|
createMcuDevice({
|
|
name: 'Box',
|
|
deviceCode: 'duplicate-code',
|
|
isOfficial: true,
|
|
})
|
|
|
|
expect(() => createMcuDevice({
|
|
name: 'Box 2',
|
|
deviceCode: 'duplicate-code',
|
|
isOfficial: false,
|
|
})).toThrow('mcu_device_exists')
|
|
})
|
|
|
|
it('updates device name only', async () => {
|
|
const { createMcuDevice, updateMcuDeviceName } = await import('../../packages/server/src/db/hermes/mcu-devices-store')
|
|
|
|
const created = createMcuDevice({
|
|
name: 'Old Name',
|
|
deviceCode: 'editable-code',
|
|
isOfficial: true,
|
|
})
|
|
const updated = updateMcuDeviceName(created.id, 'New Name')
|
|
|
|
expect(updated.name).toBe('New Name')
|
|
expect(updated.device_code).toBe('editable-code')
|
|
expect(updated.is_official).toBe(true)
|
|
})
|
|
|
|
it('deletes MCU devices', async () => {
|
|
const { createMcuDevice, deleteMcuDevice, listMcuDevices } = await import('../../packages/server/src/db/hermes/mcu-devices-store')
|
|
|
|
const created = createMcuDevice({
|
|
name: 'Delete Me',
|
|
deviceCode: 'delete-code',
|
|
isOfficial: false,
|
|
})
|
|
|
|
expect(deleteMcuDevice(created.id)).toBe(true)
|
|
expect(deleteMcuDevice(created.id)).toBe(false)
|
|
expect(listMcuDevices()).toEqual([])
|
|
})
|
|
})
|