Skip to content

Commit

Permalink
feature: user-menu: get rid of mock-require
Browse files Browse the repository at this point in the history
  • Loading branch information
coderaiser committed Mar 22, 2024
1 parent 4e32241 commit 401a669
Show file tree
Hide file tree
Showing 3 changed files with 13 additions and 21 deletions.
1 change: 1 addition & 0 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -188,6 +188,7 @@
"memfs": "^4.2.0",
"minor": "^1.2.2",
"mock-require": "^3.0.1",
"montag": "^1.2.1",
"morgan": "^1.6.1",
"multi-rename": "^2.0.0",
"nodemon": "^3.0.1",
Expand Down
11 changes: 8 additions & 3 deletions server/user-menu.js
Original file line number Diff line number Diff line change
@@ -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');

Expand All @@ -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();

Expand All @@ -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, '');

Expand Down Expand Up @@ -65,6 +68,7 @@ async function onGET({req, res, menuName}) {
if (e)
return sendDefaultMenu(res);

debugger;
const [parseError, result] = await transpile(source);

if (parseError)
Expand Down Expand Up @@ -108,3 +112,4 @@ async function transpile(source) {
],
});
}

22 changes: 4 additions & 18 deletions server/user-menu.spec.js
Original file line number Diff line number Diff line change
Expand Up @@ -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');
Expand All @@ -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();
Expand Down

0 comments on commit 401a669

Please sign in to comment.