94 lines
2.2 KiB
TypeScript
94 lines
2.2 KiB
TypeScript
|
|
import { NetaClawToolRegistryService } from '../src/modules/netaclaw/service/tool_registry.js';
|
||
|
|
|
||
|
|
describe('NetaClawToolRegistryService', () => {
|
||
|
|
let service: NetaClawToolRegistryService;
|
||
|
|
|
||
|
|
beforeEach(() => {
|
||
|
|
service = new NetaClawToolRegistryService();
|
||
|
|
});
|
||
|
|
|
||
|
|
it('keeps governance fields from db during catalog sync', async () => {
|
||
|
|
const save = jest.fn().mockResolvedValue(undefined);
|
||
|
|
service.toolRepo = {
|
||
|
|
find: jest.fn().mockResolvedValue([
|
||
|
|
{
|
||
|
|
id: 1,
|
||
|
|
name: 'clarify',
|
||
|
|
label: '自定义澄清',
|
||
|
|
description: '自定义描述',
|
||
|
|
toolset: 'interaction',
|
||
|
|
visibility: 'tool',
|
||
|
|
capability: 'text',
|
||
|
|
status: 0,
|
||
|
|
isCore: 0,
|
||
|
|
canDisable: 1,
|
||
|
|
supportsPromptHint: 1,
|
||
|
|
promptHint: 'custom',
|
||
|
|
sort: 30,
|
||
|
|
extra: { source: 'db' },
|
||
|
|
},
|
||
|
|
]),
|
||
|
|
create: jest.fn((data: any) => data),
|
||
|
|
save,
|
||
|
|
} as any;
|
||
|
|
|
||
|
|
await service.syncCatalogToDb();
|
||
|
|
|
||
|
|
expect(save).toHaveBeenCalledWith(
|
||
|
|
expect.arrayContaining([
|
||
|
|
expect.objectContaining({
|
||
|
|
name: 'clarify',
|
||
|
|
label: '自定义澄清',
|
||
|
|
description: '自定义描述',
|
||
|
|
status: 0,
|
||
|
|
isCore: 0,
|
||
|
|
canDisable: 1,
|
||
|
|
promptHint: 'custom',
|
||
|
|
sort: 30,
|
||
|
|
extra: { source: 'db' },
|
||
|
|
}),
|
||
|
|
])
|
||
|
|
);
|
||
|
|
});
|
||
|
|
|
||
|
|
it('allows updating isCore and canDisable from tool management', async () => {
|
||
|
|
const current = {
|
||
|
|
id: 1,
|
||
|
|
name: 'clarify',
|
||
|
|
label: 'clarify',
|
||
|
|
description: 'old',
|
||
|
|
toolset: 'interaction',
|
||
|
|
visibility: 'tool',
|
||
|
|
capability: 'text',
|
||
|
|
status: 1,
|
||
|
|
isCore: 1,
|
||
|
|
canDisable: 0,
|
||
|
|
supportsPromptHint: 1,
|
||
|
|
promptHint: null,
|
||
|
|
sort: 0,
|
||
|
|
extra: null,
|
||
|
|
};
|
||
|
|
const save = jest.fn().mockResolvedValue(undefined);
|
||
|
|
service.toolRepo = {
|
||
|
|
findOneBy: jest.fn().mockResolvedValue(current),
|
||
|
|
save,
|
||
|
|
} as any;
|
||
|
|
|
||
|
|
await service.update({
|
||
|
|
id: 1,
|
||
|
|
isCore: 0,
|
||
|
|
canDisable: 1,
|
||
|
|
status: 0,
|
||
|
|
});
|
||
|
|
|
||
|
|
expect(save).toHaveBeenCalledWith(
|
||
|
|
expect.objectContaining({
|
||
|
|
id: 1,
|
||
|
|
isCore: 0,
|
||
|
|
canDisable: 1,
|
||
|
|
status: 0,
|
||
|
|
})
|
||
|
|
);
|
||
|
|
});
|
||
|
|
});
|