mirror of
https://github.com/coderaiser/cloudcmd.git
synced 2026-01-23 02:35:49 +00:00
feature: user-menu: get rid of mock-require
This commit is contained in:
parent
4e32241d83
commit
401a669aca
3 changed files with 13 additions and 21 deletions
|
|
@ -1,7 +1,8 @@
|
|||
'use strict';
|
||||
|
||||
const once = require('once');
|
||||
const {homedir} = require('node:os');
|
||||
const {readFile} = require('node:fs/promises');
|
||||
const {readFile: _readFile, readFile} = require('node:fs/promises');
|
||||
|
||||
const {join} = require('node:path');
|
||||
|
||||
|
|
@ -13,13 +14,14 @@ const {codeframe} = require('putout');
|
|||
const putout = threadIt(require.resolve('putout'));
|
||||
|
||||
threadIt.init();
|
||||
|
||||
// warm up worker cache
|
||||
transpile('');
|
||||
|
||||
const URL = '/api/v1/user-menu';
|
||||
const DEFAULT_MENU_PATH = join(__dirname, '../static/user-menu.js');
|
||||
|
||||
module.exports = currify(async ({menuName}, req, res, next) => {
|
||||
module.exports = currify(async ({menuName, readFile = _readFile}, req, res, next) => {
|
||||
if (req.url.indexOf(URL))
|
||||
return next();
|
||||
|
||||
|
|
@ -30,12 +32,13 @@ module.exports = currify(async ({menuName}, req, res, next) => {
|
|||
req,
|
||||
res,
|
||||
menuName,
|
||||
readFile,
|
||||
});
|
||||
|
||||
next();
|
||||
});
|
||||
|
||||
async function onGET({req, res, menuName}) {
|
||||
async function onGET({req, res, menuName, readFile}) {
|
||||
const {dir} = req.query;
|
||||
const url = req.url.replace(URL, '');
|
||||
|
||||
|
|
@ -65,6 +68,7 @@ async function onGET({req, res, menuName}) {
|
|||
if (e)
|
||||
return sendDefaultMenu(res);
|
||||
|
||||
debugger;
|
||||
const [parseError, result] = await transpile(source);
|
||||
|
||||
if (parseError)
|
||||
|
|
@ -108,3 +112,4 @@ async function transpile(source) {
|
|||
],
|
||||
});
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -7,11 +7,9 @@ const {test, stub} = require('supertape');
|
|||
|
||||
const serveOnce = require('serve-once');
|
||||
const threadIt = require('thread-it');
|
||||
const {reRequire} = require('mock-require');
|
||||
|
||||
const userMenu = require('./user-menu');
|
||||
const {request} = serveOnce(userMenu);
|
||||
|
||||
const {readFileSync} = fs;
|
||||
|
||||
const userMenuPath = join(__dirname, '..', '.cloudcmd.menu.js');
|
||||
|
|
@ -37,51 +35,39 @@ test('cloudcmd: user menu', async (t) => {
|
|||
options,
|
||||
});
|
||||
|
||||
threadIt.terminate();
|
||||
|
||||
t.equal(userMenuFile, body);
|
||||
t.end();
|
||||
});
|
||||
|
||||
test('cloudcmd: user menu: io.mv', async (t) => {
|
||||
const readFile = stub().returns(fixtureMove);
|
||||
const options = {
|
||||
menuName: '.cloudcmd.menu.js',
|
||||
readFile,
|
||||
};
|
||||
|
||||
const {readFile} = fs.promises;
|
||||
|
||||
fs.promises.readFile = stub().returns(fixtureMove);
|
||||
const userMenu = reRequire('./user-menu');
|
||||
const {request} = serveOnce(userMenu);
|
||||
|
||||
const {body} = await request.get(`/api/v1/user-menu?dir=${__dirname}`, {
|
||||
options,
|
||||
});
|
||||
|
||||
threadIt.terminate();
|
||||
fs.promises.readFile = readFile;
|
||||
|
||||
t.equal(body, fixtureMoveFix);
|
||||
t.end();
|
||||
});
|
||||
|
||||
test('cloudcmd: user menu: io.cp', async (t) => {
|
||||
const readFile = stub().returns(fixtureCopy);
|
||||
const options = {
|
||||
menuName: '.cloudcmd.menu.js',
|
||||
readFile,
|
||||
};
|
||||
|
||||
const {readFile} = fs.promises;
|
||||
|
||||
fs.promises.readFile = stub().returns(fixtureCopy);
|
||||
const userMenu = reRequire('./user-menu');
|
||||
const {request} = serveOnce(userMenu);
|
||||
|
||||
const {body} = await request.get(`/api/v1/user-menu?dir=${__dirname}`, {
|
||||
options,
|
||||
});
|
||||
|
||||
threadIt.terminate();
|
||||
fs.promises.readFile = readFile;
|
||||
|
||||
t.equal(body, fixtureCopyFix);
|
||||
t.end();
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue