@baseplate-dev/sync
Version:
Library for syncing Baseplate descriptions
52 lines • 2.22 kB
JavaScript
import { createTestLogger } from '#src/tests/logger.test-utils.js';
import { TemplateExtractorConfigLookup, TemplateExtractorContext, TemplateExtractorFileContainer, } from '../index.js';
/**
* Creates a mock TemplateExtractorContext for testing plugins
*/
export async function createMockContext(options = {}) {
const { outputDirectory = '/test-output', packageMap = new Map(), plugins = new Map(), logger = createTestLogger(), } = options;
const configLookup = new TemplateExtractorConfigLookup(packageMap);
const fileContainer = new TemplateExtractorFileContainer([
...packageMap.values(),
]);
// Initialize the config lookup
await configLookup.initialize();
return new TemplateExtractorContext({
configLookup,
outputDirectory,
plugins: plugins,
fileContainer,
logger,
});
}
/**
* Helper to add extractor config to a mock context
* This bypasses the normal initialization flow and directly adds to the cache
*/
export function addMockExtractorConfig(context, generatorName, config) {
// Access the private cache directly for testing
// eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/no-unsafe-assignment
const configLookup = context.configLookup;
// eslint-disable-next-line @typescript-eslint/no-unsafe-member-access, @typescript-eslint/no-explicit-any
const cache = configLookup.extractorConfigCache;
const [packageName, generatorBaseName] = generatorName.includes('#')
? generatorName.split('#')
: ['test-package', generatorName];
cache.set(generatorName, {
config: {
name: config.name,
templates: config.templates ?? {},
extractors: config.extractors ?? {},
},
generatorDirectory: config.generatorDirectory ?? `/test-generators/${generatorBaseName}`,
packageName: config.packageName ?? packageName,
packagePath: config.packagePath ?? `/test-packages/${packageName}`,
});
}
/**
* Helper to create mock template path roots metadata
*/
export function createMockPathsMetadata(pathRoots) {
return JSON.stringify(pathRoots);
}
//# sourceMappingURL=mock-context.js.map