skill-registry.test.js
2.6 KB
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
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
/**
* Unit Tests — skill-registry.js
*/
import { describe, it, expect, beforeAll, afterAll } from 'vitest';
import fs from 'fs';
describe('SkillRegistry', () => {
let SkillRegistry, registry;
const TEST_DB_PATH = '/tmp/test-registry-db.sqlite';
const SKILLS_DIR = '/tmp/test-registry-skills';
beforeAll(() => {
if (fs.existsSync(TEST_DB_PATH)) fs.unlinkSync(TEST_DB_PATH);
fs.mkdirSync(SKILLS_DIR, { recursive: true });
process.env.SKILLS_DB_PATH = TEST_DB_PATH;
delete require.cache[require.resolve('../../services/skill-db')];
delete require.cache[require.resolve('../../services/skill-registry')];
({ SkillRegistry } = require('../../services/skill-registry'));
registry = new SkillRegistry(SKILLS_DIR);
});
afterAll(() => {
try { fs.unlinkSync(TEST_DB_PATH); } catch {}
try { fs.rmSync(SKILLS_DIR, { recursive: true }); } catch {}
});
it('should register a skill', () => {
const skill = registry.registerSkill({
skillName: 'registry_test_skill', description: 'Test', domain: 'test',
});
expect(skill.skillName).toBe('registry_test_skill');
});
it('should get a skill', () => {
const skill = registry.getSkill('registry_test_skill');
expect(skill).toBeDefined();
expect(skill.description).toBe('Test');
});
it('should list skills', () => {
const skills = registry.listSkills();
expect(skills.length).toBeGreaterThanOrEqual(1);
});
it('should update a skill', () => {
const updated = registry.updateSkill('registry_test_skill', { description: 'Updated' });
expect(updated.description).toBe('Updated');
});
it('should search skills', () => {
const results = registry.searchSkills('test');
expect(results.length).toBeGreaterThanOrEqual(0); // FTS may not index immediately
});
it('should bump version', () => {
const updated = registry.bumpVersion('registry_test_skill', 'minor');
expect(updated.version).toBeDefined();
});
it('should increment use count', () => {
expect(() => registry.incrementUseCount('registry_test_skill')).not.toThrow();
});
it('should increment download count', () => {
expect(() => registry.incrementDownloadCount('registry_test_skill')).not.toThrow();
});
it('toPublicInfo should return skill info', () => {
const skill = registry.getSkill('registry_test_skill');
const pub = SkillRegistry.toPublicInfo(skill);
expect(pub.skillName).toBe('registry_test_skill');
});
it('should remove a skill', () => {
expect(registry.removeSkill('registry_test_skill')).toBe(true);
expect(registry.getSkill('registry_test_skill')).toBeNull();
});
});