64 lines
2.1 KiB
TypeScript
64 lines
2.1 KiB
TypeScript
import { beforeEach, describe, expect, it, vi } from 'vitest';
|
|
|
|
const fetchAppLocalPreferencesMock = vi.fn();
|
|
const updateAppLocalPreferencesMock = vi.fn();
|
|
|
|
vi.mock('@/lib/app-local-preferences', () => ({
|
|
fetchAppLocalPreferences: (...args: unknown[]) => fetchAppLocalPreferencesMock(...args),
|
|
updateAppLocalPreferences: (...args: unknown[]) => updateAppLocalPreferencesMock(...args),
|
|
}));
|
|
|
|
describe('quick tasks store app-local preference sync', () => {
|
|
beforeEach(async () => {
|
|
vi.resetModules();
|
|
vi.clearAllMocks();
|
|
window.localStorage.clear();
|
|
});
|
|
|
|
it('hydrates quick capabilities from app-level local preferences', async () => {
|
|
fetchAppLocalPreferencesMock.mockResolvedValue({
|
|
quickTasks: [{
|
|
id: 'quick-docx',
|
|
name: '写word文章',
|
|
description: '帮你写一个word文件',
|
|
skills: [{ id: 'docx', name: 'docx' }],
|
|
enabled: true,
|
|
showInComposer: true,
|
|
updatedAt: 1,
|
|
}],
|
|
});
|
|
|
|
const { useQuickTasksStore, syncQuickTasksWithAppLocalPreferences } = await import('@/stores/quick-tasks');
|
|
useQuickTasksStore.setState({ tasks: [] });
|
|
|
|
await syncQuickTasksWithAppLocalPreferences();
|
|
|
|
expect(useQuickTasksStore.getState().tasks).toMatchObject([
|
|
{ id: 'quick-docx', name: '写word文章', skills: [{ id: 'docx', name: 'docx' }] },
|
|
]);
|
|
});
|
|
|
|
it('pushes existing origin-local quick capabilities into app-level preferences', async () => {
|
|
fetchAppLocalPreferencesMock.mockResolvedValue({});
|
|
|
|
const { useQuickTasksStore, syncQuickTasksWithAppLocalPreferences } = await import('@/stores/quick-tasks');
|
|
useQuickTasksStore.setState({
|
|
tasks: [{
|
|
id: 'quick-design',
|
|
name: '做网页',
|
|
description: '用网页的方式帮你做介绍',
|
|
skills: [{ id: 'ui-ux-pro-max', name: 'ui-ux-pro-max' }],
|
|
enabled: true,
|
|
showInComposer: true,
|
|
updatedAt: 2,
|
|
}],
|
|
});
|
|
|
|
await syncQuickTasksWithAppLocalPreferences();
|
|
|
|
expect(updateAppLocalPreferencesMock).toHaveBeenCalledWith({
|
|
quickTasks: [expect.objectContaining({ id: 'quick-design', name: '做网页' })],
|
|
});
|
|
});
|
|
});
|