UNPKG

jest-fs

Version:

Node.js fs module mock for Jest unit testing

69 lines (44 loc) 1.35 kB
const path = require('path'); const fs = jest.createMockFromModule('fs'); let filesystem = Object.create({}); const ls = (file) => { const dir = path.dirname(file); const files = filesystem[dir]; return files; }; fs.restore = () => { filesystem = Object.create({}); }; fs.writeFileSync = (file, content) => { const dir = path.dirname(file); if (!filesystem[dir]) { filesystem[dir] = []; } filesystem[dir].push({ name: path.basename(file), content, }); }; fs.readdirSync = (dir) => filesystem[dir] || []; fs.readFileSync = (file) => { const files = ls(file); const filename = path.basename(file); const foundFile = files.find((currentFile) => currentFile.name === filename); return foundFile.content; }; fs.existsSync = (file) => { const files = ls(file); const filename = path.basename(file); if (!files) { return false; } return !!files.find((currentFile) => currentFile.name === filename); }; fs.renameSync = (oldFile, newFile) => { const files = ls(oldFile); const oldFilename = path.basename(oldFile); const newFilename = path.basename(newFile); const fileIndex = files.findIndex((currentFile) => currentFile.name === oldFilename); files[fileIndex].name = newFilename; }; module.exports = fs;