5180 fichiers 38.5 Mo 0 téléchargements 182 vues mis à jour il y a 5 heures ui
nitro-v36-with-renderer-v36 / src / api / utils / createBootSteps.test.ts
createBootSteps.test.ts 1 Ko Télécharger le fichier
import { describe, expect, it, vi } from 'vitest';
import { createBootSteps } from './createBootSteps';

describe('createBootSteps', () => {
    it('runs a step once and shares it', async () => {
        const run = createBootSteps();
        const task = vi.fn(async () => 1);

        await expect(Promise.all([run('a', task), run('a', task)])).resolves.toEqual([1, 1]);
        await run('a', task);

        expect(task).toHaveBeenCalledOnce();
    });

    it('retries a step that failed, and keeps the ones that finished', async () => {
        const run = createBootSteps();
        const done = vi.fn(async () => 'ok');
        const flaky = vi.fn().mockRejectedValueOnce(new Error('offline')).mockResolvedValueOnce('back');

        await run('done', done);
        await expect(run('flaky', flaky)).rejects.toThrow('offline');

        await expect(run('flaky', flaky)).resolves.toBe('back');
        await run('done', done);

        expect(flaky).toHaveBeenCalledTimes(2);
        expect(done).toHaveBeenCalledOnce();
    });
});
15Sujets
1Dépôts
20Membres
2En ligne
Profile
Inscrit
Dernière visite
Messages
0
Votes positifs
0
Votes négatifs
0

Nous utilisons des cookies pour assurer le bon fonctionnement du site et améliorer votre expérience. en savoir plus

Autoriser