const { test } = require('tap');
const sandbox = require('@log4js-node/sandboxed-module');

// passenger provides a non-functional cluster module,
// but it does not implement the event emitter functions
const passengerCluster = {
  disconnect() {
    return false;
  },
  fork() {
    return false;
  },
  setupMaster() {
    return false;
  },
  isWorker: true,
  isMaster: false,
  schedulingPolicy: false,
  settings: false,
  worker: false,
  workers: false,
};

const vcr = require('../../lib/appenders/recording');

const log4js = sandbox.require('../../lib/log4js', {
  requires: {
    cluster: passengerCluster,
    './appenders/recording': vcr,
  },
});

test('When running in Passenger', (batch) => {
  batch.test('it should still log', (t) => {
    log4js.configure({
      appenders: {
        vcr: { type: 'recording' },
      },
      categories: {
        default: { appenders: ['vcr'], level: 'info' },
      },
      disableClustering: true,
    });
    log4js.getLogger().info('This should still work');

    const events = vcr.replay();
    t.equal(events.length, 1);
    t.equal(events[0].data[0], 'This should still work');
    t.end();
  });

  batch.end();
});
