'use strict';

const path = require('path');
const fsp = require('fs').promises;
const spawn = require('child-process-ext/spawn');
const fixturesEngine = require('../fixtures/programmatic');

const serverlessExec = require('../serverlessBinary');

describe('test/integration/plugin-install.test.js', function () {
  this.timeout(1000 * 60 * 10); // Involves time-taking npm install

  let serviceDir;
  before(async () => {
    serviceDir = (
      await fixturesEngine.setup('function', {
        // Unresolved variables should not block "plugin install" command
        configExt: { variablesResolutionMode: '20210326', custom: { foo: '${foo:bar}' } },
      })
    ).servicePath;
    await spawn(serverlessExec, ['plugin', 'install', '-n', 'serverless-offline'], {
      cwd: serviceDir,
    });
  });

  it('should install plugin', async () => {
    await fsp.access(path.resolve(serviceDir, 'node_modules/serverless-offline'));
  });
});
