import assert from 'node:assert/strict'; import test from 'node:test'; import { createPluginsService } from '../plugins.service.js'; type Dependencies = Parameters[0]; function dependencies(overrides: Partial = {}): Dependencies { return { scanPlugins: () => [], readConfig: () => ({}), saveConfig: () => undefined, getPluginDirectory: () => null, getPluginsDirectory: () => '/plugins', resolveAsset: () => null, assetIsFile: () => false, contentType: () => 'text/plain', install: async () => ({ name: 'plugin', dirName: 'plugin' }), update: async () => ({ name: 'plugin', dirName: 'plugin' }), uninstall: async () => undefined, startServer: async () => 4000, stopServer: async () => undefined, getServerPort: () => undefined, isServerRunning: () => false, joinPath: (...parts) => parts.join('/'), logError: () => undefined, ...overrides, }; } test('setEnabled persists configuration and starts an enabled plugin server', async () => { const operations: string[] = []; const service = createPluginsService(dependencies({ scanPlugins: () => [{ name: 'demo', dirName: 'demo', server: { entry: 'server.js' } }], getPluginDirectory: () => '/plugins/demo', saveConfig: () => operations.push('save'), startServer: async () => { operations.push('start'); return 4000; }, })); await service.setEnabled('demo', true); assert.deepEqual(operations, ['save', 'start']); });