mock-doc.ts 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889
  1. import { ShareDoc } from '../../../../../types/share-doc'
  2. import { EventEmitter } from 'events'
  3. export const docId = 'test-doc'
  4. export function mockDocContent(content: string) {
  5. return `
  6. \\documentclass{article}
  7. \\title{Your Paper}
  8. \\author{You}
  9. \\begin{document}
  10. \\maketitle
  11. \\begin{abstract}
  12. Your abstract.
  13. \\end{abstracts}
  14. \\section{Introduction}
  15. Your introduction goes here!
  16. \\section{Results}
  17. Your results go here! \\cite{foo}
  18. ${content}
  19. \\end{document}`
  20. }
  21. const contentLines = Array.from(Array(100), (e, i) => `contentLine ${i}`)
  22. const defaultContent = mockDocContent(contentLines.join('\n'))
  23. const MAX_DOC_LENGTH = 2 * 1024 * 1024 // ol-maxDocLength
  24. class MockShareDoc extends EventEmitter {
  25. constructor(public text: string) {
  26. super()
  27. }
  28. getText() {
  29. return this.text
  30. }
  31. insert() {
  32. // do nothing
  33. }
  34. del() {
  35. // do nothing
  36. }
  37. }
  38. export const mockDoc = (content = defaultContent) => {
  39. const mockShareJSDoc: ShareDoc = new MockShareDoc(content)
  40. return {
  41. doc_id: docId,
  42. getSnapshot: () => {
  43. return content
  44. },
  45. attachToCM6: (cm6: any) => {
  46. cm6.attachShareJs(mockShareJSDoc, MAX_DOC_LENGTH)
  47. },
  48. detachFromCM6: () => {
  49. // Do nothing
  50. },
  51. on: () => {
  52. // Do nothing
  53. },
  54. off: () => {
  55. // Do nothing
  56. },
  57. ranges: {
  58. changes: [],
  59. comments: [],
  60. getIdSeed: () => '123',
  61. setIdSeed: () => {},
  62. getTrackedDeletesLength: () => 0,
  63. },
  64. setTrackChangesIdSeeds: () => {},
  65. getTrackingChanges: () => true,
  66. setTrackingChanges: () => {},
  67. getInflightOp: () => null,
  68. getPendingOp: () => null,
  69. }
  70. }