107 lines
2.4 KiB
TypeScript
107 lines
2.4 KiB
TypeScript
|
|
import {
|
||
|
|
buildSkillEnvSchema,
|
||
|
|
isSkillEnvSchemaEqual,
|
||
|
|
} from '../src/modules/netaclaw/service/skill_env_schema.js';
|
||
|
|
|
||
|
|
describe('buildSkillEnvSchema', () => {
|
||
|
|
it('uses skill.config.yaml env as the envSchema source of truth', () => {
|
||
|
|
const schema = buildSkillEnvSchema({
|
||
|
|
env: [
|
||
|
|
{
|
||
|
|
name: 'ARK_API_KEY',
|
||
|
|
required: true,
|
||
|
|
description: '火山方舟/豆包 OpenAI-compatible API Key',
|
||
|
|
},
|
||
|
|
{
|
||
|
|
name: 'DAMAGE_DETECT_MODEL',
|
||
|
|
required: true,
|
||
|
|
default: 'doubao-seed-2-0-pro-260215',
|
||
|
|
description: '用于环车旧伤候选检测的多模态模型 ID',
|
||
|
|
},
|
||
|
|
],
|
||
|
|
});
|
||
|
|
|
||
|
|
expect(schema).toEqual([
|
||
|
|
{
|
||
|
|
name: 'ARK_API_KEY',
|
||
|
|
required: true,
|
||
|
|
description: '火山方舟/豆包 OpenAI-compatible API Key',
|
||
|
|
default: undefined,
|
||
|
|
},
|
||
|
|
{
|
||
|
|
name: 'DAMAGE_DETECT_MODEL',
|
||
|
|
required: true,
|
||
|
|
description: '用于环车旧伤候选检测的多模态模型 ID',
|
||
|
|
default: 'doubao-seed-2-0-pro-260215',
|
||
|
|
},
|
||
|
|
]);
|
||
|
|
});
|
||
|
|
|
||
|
|
it('returns null when the skill has no env declaration', () => {
|
||
|
|
expect(buildSkillEnvSchema({})).toBeNull();
|
||
|
|
});
|
||
|
|
|
||
|
|
it('preserves empty-string defaults', () => {
|
||
|
|
expect(buildSkillEnvSchema({
|
||
|
|
env: [
|
||
|
|
{
|
||
|
|
name: 'OPTIONAL_PREFIX',
|
||
|
|
required: false,
|
||
|
|
default: '',
|
||
|
|
},
|
||
|
|
],
|
||
|
|
})).toEqual([
|
||
|
|
{
|
||
|
|
name: 'OPTIONAL_PREFIX',
|
||
|
|
required: false,
|
||
|
|
description: undefined,
|
||
|
|
default: '',
|
||
|
|
},
|
||
|
|
]);
|
||
|
|
});
|
||
|
|
});
|
||
|
|
|
||
|
|
describe('isSkillEnvSchemaEqual', () => {
|
||
|
|
it('treats schemas with the same items as equal', () => {
|
||
|
|
expect(isSkillEnvSchemaEqual(
|
||
|
|
[
|
||
|
|
{
|
||
|
|
name: 'DAMAGE_DETECT_MODEL',
|
||
|
|
required: true,
|
||
|
|
description: 'model',
|
||
|
|
default: '',
|
||
|
|
},
|
||
|
|
],
|
||
|
|
[
|
||
|
|
{
|
||
|
|
name: 'DAMAGE_DETECT_MODEL',
|
||
|
|
required: true,
|
||
|
|
description: 'model',
|
||
|
|
default: '',
|
||
|
|
},
|
||
|
|
],
|
||
|
|
)).toBe(true);
|
||
|
|
});
|
||
|
|
|
||
|
|
it('detects schema differences', () => {
|
||
|
|
expect(isSkillEnvSchemaEqual(
|
||
|
|
[
|
||
|
|
{
|
||
|
|
name: 'DAMAGE_DETECT_MODEL',
|
||
|
|
required: true,
|
||
|
|
description: 'model',
|
||
|
|
default: 'old-model',
|
||
|
|
},
|
||
|
|
],
|
||
|
|
[
|
||
|
|
{
|
||
|
|
name: 'DAMAGE_DETECT_MODEL',
|
||
|
|
required: true,
|
||
|
|
description: 'model',
|
||
|
|
default: 'new-model',
|
||
|
|
},
|
||
|
|
],
|
||
|
|
)).toBe(false);
|
||
|
|
});
|
||
|
|
});
|