Files
overleaf-cep/services/clsi/test/unit/js/DraftModeManager.test.js
Andrew Rumble cd7da983d1 Merge pull request #30232 from overleaf/ar/convert-clsi-to-es-modules
[clsi] convert to ES modules

GitOrigin-RevId: fb7fa52cc8f678ee31be352e62a5dff95e88008b
2026-01-22 09:06:23 +00:00

47 lines
1.2 KiB
JavaScript

import { vi, expect, describe, beforeEach, afterEach, it } from 'vitest'
import Path from 'node:path'
import fsPromises from 'node:fs/promises'
import mockFs from 'mock-fs'
const MODULE_PATH = Path.join(
import.meta.dirname,
'../../../app/js/DraftModeManager'
)
describe('DraftModeManager', () => {
beforeEach(async ctx => {
vi.doMock('node:fs/promises', () => ({
default: fsPromises,
}))
ctx.DraftModeManager = (await import(MODULE_PATH)).default
ctx.filename = '/mock/filename.tex'
ctx.contents = `\
\\documentclass{article}
\\begin{document}
Hello world
\\end{document}\
`
mockFs({
[ctx.filename]: ctx.contents,
})
})
afterEach(() => {
mockFs.restore()
})
describe('injectDraftMode', () => {
it('prepends a special command to the beginning of the file', async ctx => {
await ctx.DraftModeManager.promises.injectDraftMode(ctx.filename)
const contents = await fsPromises.readFile(ctx.filename, {
encoding: 'utf8',
})
expect(contents).to.equal(
'\\PassOptionsToPackage{draft}{graphicx}\\PassOptionsToPackage{draft}{graphics}' +
ctx.contents
)
})
})
})