concurrently
Version:
Run commands concurrently
34 lines (33 loc) • 1.68 kB
JavaScript
import { beforeEach, expect, it } from 'vitest';
import { createMockInstance } from '../__fixtures__/create-mock-instance.js';
import { FakeCommand } from '../__fixtures__/fake-command.js';
import { Logger } from '../logger.js';
import { LogError } from './log-error.js';
let controller;
let logger;
let commands;
beforeEach(() => {
commands = [new FakeCommand(), new FakeCommand(), new FakeCommand()];
logger = createMockInstance(Logger);
controller = new LogError({ logger });
});
it('returns same commands', () => {
expect(controller.handle(commands)).toMatchObject({ commands });
});
it('logs the error event of each command', () => {
controller.handle(commands);
commands[0].error.next('error from command 0');
const error1 = new Error('test');
commands[1].error.next(error1);
// Testing Error without stack
const error2 = new Error('test');
error2.stack = '';
commands[2].error.next(error2);
expect(logger.logCommandEvent).toHaveBeenCalledTimes(6);
expect(logger.logCommandEvent).toHaveBeenCalledWith(`Error occurred when executing command: ${commands[0].command}`, commands[0]);
expect(logger.logCommandEvent).toHaveBeenCalledWith('error from command 0', commands[0]);
expect(logger.logCommandEvent).toHaveBeenCalledWith(`Error occurred when executing command: ${commands[1].command}`, commands[1]);
expect(logger.logCommandEvent).toHaveBeenCalledWith(error1.stack, commands[1]);
expect(logger.logCommandEvent).toHaveBeenCalledWith(`Error occurred when executing command: ${commands[2].command}`, commands[2]);
expect(logger.logCommandEvent).toHaveBeenCalledWith(String(error2), commands[2]);
});