jan/core/src/browser/extensions/engines/EngineManager.test.ts
hiento09 3287e8b300
chore: enable test coverage (#5710)
* chore: enable test coverage
2025-07-07 11:24:13 +07:00

110 lines
3.3 KiB
TypeScript

/**
* @jest-environment jsdom
*/
import { EngineManager } from './EngineManager'
import { AIEngine } from './AIEngine'
import { InferenceEngine } from '../../../types'
// @ts-ignore
class MockAIEngine implements AIEngine {
provider: string
constructor(provider: string) {
this.provider = provider
}
}
describe('EngineManager', () => {
let engineManager: EngineManager
beforeEach(() => {
engineManager = new EngineManager()
})
test('should register an engine', () => {
const engine = new MockAIEngine('testProvider')
// @ts-ignore
engineManager.register(engine)
expect(engineManager.engines.get('testProvider')).toBe(engine)
})
test('should retrieve a registered engine by provider', () => {
const engine = new MockAIEngine('testProvider')
// @ts-ignore
engineManager.register(engine)
// @ts-ignore
const retrievedEngine = engineManager.get<MockAIEngine>('testProvider')
expect(retrievedEngine).toBe(engine)
})
test('should return undefined for an unregistered provider', () => {
// @ts-ignore
const retrievedEngine = engineManager.get<MockAIEngine>('nonExistentProvider')
expect(retrievedEngine).toBeUndefined()
})
describe('cortex engine migration', () => {
test.skip('should map nitro to cortex engine', () => {
const cortexEngine = new MockAIEngine(InferenceEngine.cortex)
// @ts-ignore
engineManager.register(cortexEngine)
// @ts-ignore
const retrievedEngine = engineManager.get<MockAIEngine>(InferenceEngine.nitro)
expect(retrievedEngine).toBe(cortexEngine)
})
test.skip('should map cortex_llamacpp to cortex engine', () => {
const cortexEngine = new MockAIEngine(InferenceEngine.cortex)
// @ts-ignore
engineManager.register(cortexEngine)
// @ts-ignore
const retrievedEngine = engineManager.get<MockAIEngine>(InferenceEngine.cortex_llamacpp)
expect(retrievedEngine).toBe(cortexEngine)
})
test.skip('should map cortex_onnx to cortex engine', () => {
const cortexEngine = new MockAIEngine(InferenceEngine.cortex)
// @ts-ignore
engineManager.register(cortexEngine)
// @ts-ignore
const retrievedEngine = engineManager.get<MockAIEngine>(InferenceEngine.cortex_onnx)
expect(retrievedEngine).toBe(cortexEngine)
})
test.skip('should map cortex_tensorrtllm to cortex engine', () => {
const cortexEngine = new MockAIEngine(InferenceEngine.cortex)
// @ts-ignore
engineManager.register(cortexEngine)
// @ts-ignore
const retrievedEngine = engineManager.get<MockAIEngine>(InferenceEngine.cortex_tensorrtllm)
expect(retrievedEngine).toBe(cortexEngine)
})
})
describe('singleton instance', () => {
test('should return the window.core.engineManager if available', () => {
const mockEngineManager = new EngineManager()
// @ts-ignore
window.core = { engineManager: mockEngineManager }
const instance = EngineManager.instance()
expect(instance).toBe(mockEngineManager)
// Clean up
// @ts-ignore
delete window.core
})
test('should create a new instance if window.core.engineManager is not available', () => {
// @ts-ignore
delete window.core
const instance = EngineManager.instance()
expect(instance).toBeInstanceOf(EngineManager)
})
})
})