overleaf/services/clsi/test/unit/js/DraftModeManagerTests.js
Antoine Clausse 7f48c67512 Add prefer-node-protocol ESLint rule (#21532)
* Add `unicorn/prefer-node-protocol`

* Fix `unicorn/prefer-node-protocol` ESLint errors

* Run `npm run format:fix`

* Add sandboxed-module sourceTransformers in mocha setups

Fix `no such file or directory, open 'node:fs'` in `sandboxed-module`

* Remove `node:` in the SandboxedModule requires

* Fix new linting errors with `node:`

GitOrigin-RevId: 68f6e31e2191fcff4cb8058dd0a6914c14f59926
2024-11-11 09:04:51 +00:00

44 lines
1.2 KiB
JavaScript

const Path = require('node:path')
const fsPromises = require('node:fs/promises')
const { expect } = require('chai')
const mockFs = require('mock-fs')
const SandboxedModule = require('sandboxed-module')
const MODULE_PATH = Path.join(__dirname, '../../../app/js/DraftModeManager')
describe('DraftModeManager', function () {
beforeEach(function () {
this.DraftModeManager = SandboxedModule.require(MODULE_PATH, {
requires: {
'fs/promises': fsPromises,
},
})
this.filename = '/mock/filename.tex'
this.contents = `\
\\documentclass{article}
\\begin{document}
Hello world
\\end{document}\
`
mockFs({
[this.filename]: this.contents,
})
})
afterEach(function () {
mockFs.restore()
})
describe('injectDraftMode', function () {
it('prepends a special command to the beginning of the file', async function () {
await this.DraftModeManager.promises.injectDraftMode(this.filename)
const contents = await fsPromises.readFile(this.filename, {
encoding: 'utf8',
})
expect(contents).to.equal(
'\\PassOptionsToPackage{draft}{graphicx}\\PassOptionsToPackage{draft}{graphics}' +
this.contents
)
})
})
})