UNPKG

@applicaster/zapplicaster-cli

Version:

CLI Tool for the zapp app and Quick Brick project

94 lines (75 loc) 2.15 kB
const fs = jest.genMockFromModule("fs"); const _fs = jest.requireActual("fs"); const R = require("ramda"); function readdirSync(folder) { return _fs.readdirSync(folder); } function readdir(folder, callback) { const files = R.map(R.prop("fileName"), fs.__writenFiles); callback(null, files); } function writeFile() { const callback = R.last(arguments); const [fileName, content] = R.init(arguments); // eslint-disable-line no-unused-vars const __writtenFiles = { fileName, content, }; fs.__writenFiles.push(__writtenFiles); callback(null, __writtenFiles.content); } function getMockedFileContent(fileName) { return R.compose( R.unless(R.isNil, R.prop("content")), R.find(R.propEq("fileName", fileName)) )(fs.__writenFiles); } function readFile(fileName, callback) { callback(null, Buffer.from(getMockedFileContent(fileName))); } function readFileSync(fileName) { return Buffer.from(getMockedFileContent(fileName)); } function copyFile(_source, _destination, callback) { callback(null, { status: "ok" }); } function copyFileSync() { return { status: "ok" }; } function existsSync(path) { return R.includes(path, R.map(R.prop("fileName"), fs.__writenFiles)); } function statSync(fileName) { if (fileName === "not_a_file") { const error = new Error("ENOENT: no such file or directory"); error.code = "ENOENT"; throw error; } return { isFile: () => true, }; } function __addMockedFiles(fileName, content) { try { const json = JSON.stringify(content); fs.__writenFiles.push({ fileName, content: json }); } catch (e) { fs.__writenFiles.push({ fileName, content }); } } function __resetFiles() { fs.__writenFiles = []; } fs.__writenFiles = []; fs.__resetFiles = __resetFiles; fs.__addMockedFiles = __addMockedFiles; fs.readdirSync = readdirSync; fs.readdir = jest.fn(readdir); fs.writeFile = jest.fn(writeFile); fs.readFile = jest.fn(readFile); fs.readFileSync = jest.fn(readFileSync); fs.copyFile = jest.fn(copyFile); fs.copyFileSync = jest.fn(copyFileSync); fs.existsSync = jest.fn(existsSync); fs.statSync = jest.fn(statSync); module.exports = fs;