UNPKG

@baseplate-dev/sync

Version:

Library for syncing Baseplate descriptions

61 lines 1.98 kB
import { TemplateExtractorContext } from '../runner/template-extractor-context.js'; /** * Mock API for testing plugin hook registration */ export function createMockPluginApi() { const registeredHooks = new Map(); const api = { registerHook(hook, callback) { const callbacks = registeredHooks.get(hook) ?? []; callbacks.push(callback); registeredHooks.set(hook, callbacks); }, }; return { api, getRegisteredHooks: () => registeredHooks, executeHooks: async (hook) => { const callbacks = registeredHooks.get(hook) ?? []; for (const callback of callbacks) { await callback(); } }, }; } /** * Creates a plugin instance for testing */ export async function createPluginInstance(plugin, context, api) { const mockApi = api ?? createMockPluginApi(); const pluginApi = 'api' in mockApi ? mockApi.api : mockApi; const instance = await plugin.getInstance({ context, api: pluginApi, }); const executeHooks = 'executeHooks' in mockApi ? mockApi.executeHooks : async () => { // No-op for external APIs }; return { instance, api: pluginApi, executeHooks, }; } /** * Helper to test plugin with dependencies */ export async function createPluginInstanceWithDependencies(plugin, context, dependencyInstances) { // Add dependency instances to context const mergedPlugins = new Map([...context.plugins, ...dependencyInstances]); const contextWithDependencies = new TemplateExtractorContext({ configLookup: context.configLookup, logger: context.logger, outputDirectory: context.outputDirectory, fileContainer: context.fileContainer, plugins: mergedPlugins, }); return createPluginInstance(plugin, contextWithDependencies); } //# sourceMappingURL=plugin-test-utils.js.map