Spaces:
Sleeping
Sleeping
File size: 1,719 Bytes
a5d1c1b 61b1da1 a5d1c1b 67978ff a5d1c1b 67978ff a5d1c1b 67978ff a5d1c1b 67978ff a5d1c1b | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 | import { describe, it, expect, beforeEach, afterEach } from 'vitest';
import fs from 'node:fs';
import path from 'node:path';
import os from 'node:os';
import { materializeService } from '../src/services/materialize-service.js';
import { cacheService } from '../src/services/cache-service.js';
describe('MaterializeService', () => {
let testDir: string;
beforeEach(() => {
testDir = fs.mkdtempSync(path.join(os.tmpdir(), 'evb-mat-test-'));
});
afterEach(() => {
fs.rmSync(testDir, { recursive: true, force: true });
});
it('materializes skill into universal .agents environment by default', () => {
cacheService.writeCachedFile(
testDir,
'skills/db-migrate/SKILL.md',
'---\nname: db-migrate\n---\n# DB Migration Runbook'
);
const result = materializeService.materialize(testDir, 'db-migrate');
expect(result.targetAgent).toBe('agents');
expect(result.filesCopied).toBe(1);
const destFile = path.join(testDir, '.agents', 'skills', 'db-migrate', 'SKILL.md');
expect(fs.existsSync(destFile)).toBe(true);
expect(fs.readFileSync(destFile, 'utf8')).toContain('DB Migration Runbook');
});
it('materializes skill into Cursor environment as .mdc rule when requested', () => {
cacheService.writeCachedFile(
testDir,
'skills/testing/SKILL.md',
'# Testing Guideline'
);
const result = materializeService.materialize(testDir, 'testing', { target: 'cursor' });
expect(result.targetAgent).toBe('cursor');
const destFile = path.join(testDir, '.cursor', 'rules', 'testing.mdc');
expect(fs.existsSync(destFile)).toBe(true);
expect(fs.readFileSync(destFile, 'utf8')).toContain('Testing Guideline');
});
});
|