feat: prepare Zhinian desktop client for pilot release
This commit is contained in:
@@ -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');
|
||||
});
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user