cloudcmd/test/server/root.js
2017-05-11 18:07:50 +03:00

68 lines
1.5 KiB
JavaScript

'use strict';
const path = require('path');
const test = require('tape');
const diff = require('sinon-called-with-diff');
const sinon = diff(require('sinon'));
const dir = path.join(__dirname, '..', '..', 'server');
const pathConfig = path.join(dir, 'config');
const pathRoot = `${dir}/root`;
const clean = (name) => {
delete require.cache[require.resolve(name)];
};
test('cloudcmd: root: config', (t) => {
clean(pathRoot);
const config = sinon.stub().returns(false);
const originalConfig = stub(pathConfig, config);
const root = require(pathRoot);
root('hello');
t.ok(config.calledWith('root'), 'should call config');
stub(pathConfig, originalConfig);
t.end();
});
test('cloudcmd: root: mellow', (t) => {
clean(pathRoot);
const config = sinon.stub().returns('');
const pathToWin = sinon.stub();
const mellow = {
pathToWin
};
const originalMellow = stub('mellow', mellow);
const originalConfig = stub(pathConfig, config);
const root = require(pathRoot);
const dir = 'hello';
const dirRoot = '/';
root(dir);
t.ok(pathToWin.calledWith(dir, dirRoot), 'should call mellow');
stub('mellow', originalMellow);
stub(pathConfig, originalConfig);
t.end();
});
function stub(name, data) {
const resolved = require.resolve(name);
const {exports} = require.cache[resolved];
require.cache[resolved].exports = data;
return exports;
}