DraftModeManager.test.js 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. import { vi, expect, describe, beforeEach, afterEach, it } from 'vitest'
  2. import Path from 'node:path'
  3. import fs from 'node:fs'
  4. import fsPromises from 'node:fs/promises'
  5. import os from 'node:os'
  6. const MODULE_PATH = Path.join(
  7. import.meta.dirname,
  8. '../../../app/js/DraftModeManager'
  9. )
  10. describe('DraftModeManager', () => {
  11. beforeEach(async ctx => {
  12. vi.doMock('node:fs/promises', () => ({
  13. default: fsPromises,
  14. }))
  15. ctx.DraftModeManager = (await import(MODULE_PATH)).default
  16. ctx.tmpDir = fs.mkdtempSync(Path.join(os.tmpdir(), 'draft-mode-test-'))
  17. ctx.filename = Path.join(ctx.tmpDir, 'filename.tex')
  18. ctx.contents = `\
  19. \\documentclass{article}
  20. \\begin{document}
  21. Hello world
  22. \\end{document}\
  23. `
  24. fs.writeFileSync(ctx.filename, ctx.contents)
  25. })
  26. afterEach(ctx => {
  27. fs.rmSync(ctx.tmpDir, { recursive: true })
  28. })
  29. describe('injectDraftMode', () => {
  30. it('prepends a special command to the beginning of the file', async ctx => {
  31. await ctx.DraftModeManager.promises.injectDraftMode(ctx.filename)
  32. const contents = await fsPromises.readFile(ctx.filename, {
  33. encoding: 'utf8',
  34. })
  35. expect(contents).to.equal(
  36. '\\PassOptionsToPackage{draft}{graphicx}\\PassOptionsToPackage{draft}{graphics}' +
  37. ctx.contents
  38. )
  39. })
  40. })
  41. })