feat: prepare Zhinian desktop client for pilot release

This commit is contained in:
inman
2026-04-29 10:23:20 +08:00
parent f9361e686a
commit 47b83b79fc
149 changed files with 15341 additions and 3590 deletions

View File

@@ -49,4 +49,28 @@ describe('cron store fetchJobs dedupe', () => {
expect(useCronStore.getState().jobs.map((job) => job.id)).toEqual(['job-1']);
});
it('normalizes object-wrapped job lists', async () => {
hostApiFetchMock.mockResolvedValueOnce({ jobs: [{ id: 'job-2' }] });
const { useCronStore } = await import('@/stores/cron');
useCronStore.setState({ jobs: [], loading: false, error: null });
await useCronStore.getState().fetchJobs();
expect(useCronStore.getState().jobs.map((job) => job.id)).toEqual(['job-2']);
expect(useCronStore.getState().error).toBeNull();
});
it('surfaces invalid job list responses without throwing map errors', async () => {
hostApiFetchMock.mockResolvedValueOnce({ success: false, error: 'Gateway unavailable' });
const { useCronStore } = await import('@/stores/cron');
useCronStore.setState({ jobs: [], loading: false, error: null });
await useCronStore.getState().fetchJobs();
expect(useCronStore.getState().jobs).toEqual([]);
expect(useCronStore.getState().error).toContain('Gateway unavailable');
});
});