feat: update desktop workflows and app center
This commit is contained in:
@@ -7,6 +7,7 @@ import { useSkillsStore } from '@/stores/skills';
|
||||
import { useQuickTasksStore } from '@/stores/quick-tasks';
|
||||
import i18n from '@/i18n';
|
||||
import type { YinianConfigSnapshot, YinianLocalSkill } from '../../shared/yinian';
|
||||
import type { QuickTaskConfig } from '@/stores/quick-tasks';
|
||||
|
||||
const toastSuccessMock = vi.fn();
|
||||
const toastErrorMock = vi.fn();
|
||||
@@ -68,6 +69,19 @@ function clickCapabilityTab(label: '服务下发' | '本地安装') {
|
||||
fireEvent.click(screen.getByRole('button', { name: new RegExp(`^${label}\\s+\\d+$`) }));
|
||||
}
|
||||
|
||||
function createQuickTask(overrides: Partial<QuickTaskConfig> = {}): QuickTaskConfig {
|
||||
return {
|
||||
id: 'quick-daily-report',
|
||||
name: '生成日报',
|
||||
description: '生成每日经营日报',
|
||||
skills: [{ id: 'daily-report', name: '日报生成助手' }],
|
||||
enabled: true,
|
||||
showInComposer: true,
|
||||
updatedAt: 1,
|
||||
...overrides,
|
||||
};
|
||||
}
|
||||
|
||||
describe('YinianSkills page', () => {
|
||||
beforeEach(async () => {
|
||||
vi.clearAllMocks();
|
||||
@@ -197,6 +211,38 @@ describe('YinianSkills page', () => {
|
||||
expect(screen.getByText('/tmp/openclaw/skills/local-summary')).toBeInTheDocument();
|
||||
});
|
||||
|
||||
it('keeps quick capability management on the capability packs page', () => {
|
||||
useYinianStore.setState({
|
||||
config: createConfig({
|
||||
entitlements: [
|
||||
{
|
||||
skillId: 'daily-report',
|
||||
name: '日报生成助手',
|
||||
version: '1.0.0',
|
||||
enabled: true,
|
||||
category: 'reporting',
|
||||
triggers: ['manual'],
|
||||
},
|
||||
],
|
||||
}),
|
||||
});
|
||||
useQuickTasksStore.setState({ tasks: [createQuickTask()] });
|
||||
|
||||
render(<YinianSkills />);
|
||||
|
||||
expect(screen.getByTestId('yinian-skills-tab-quickTasks')).toHaveTextContent('快捷能力配置');
|
||||
expect(screen.getByText('生成日报')).toBeInTheDocument();
|
||||
|
||||
fireEvent.click(screen.getByTitle('编辑'));
|
||||
fireEvent.change(screen.getByPlaceholderText('能力名称,例如:生成日报'), {
|
||||
target: { value: '每日经营日报' },
|
||||
});
|
||||
fireEvent.click(screen.getByRole('button', { name: '保存快捷能力' }));
|
||||
|
||||
expect(useQuickTasksStore.getState().tasks[0].name).toBe('每日经营日报');
|
||||
expect(toastSuccessMock).toHaveBeenCalledWith('快捷能力已更新');
|
||||
});
|
||||
|
||||
it('hides OpenClaw built-in skills from local capability packs by default', () => {
|
||||
useSkillsStore.setState({
|
||||
skills: [
|
||||
|
||||
Reference in New Issue
Block a user