overleaf/services/web/test/frontend/features/source-editor/helpers/mock-doc.ts
Eric Mc Sween 8b4b454b97 Merge pull request #20052 from overleaf/em-tracked-deletes-limit
Include tracked deletes when limiting document size

GitOrigin-RevId: 9d7b2870001fb942eaa92db78993fee1ddb3937c
2024-08-27 08:04:31 +00:00

89 lines
1.6 KiB
TypeScript

import { ShareDoc } from '../../../../../types/share-doc'
import { EventEmitter } from 'events'
export const docId = 'test-doc'
export function mockDocContent(content: string) {
return `
\\documentclass{article}
\\title{Your Paper}
\\author{You}
\\begin{document}
\\maketitle
\\begin{abstract}
Your abstract.
\\end{abstracts}
\\section{Introduction}
Your introduction goes here!
\\section{Results}
Your results go here! \\cite{foo}
${content}
\\end{document}`
}
const contentLines = Array.from(Array(100), (e, i) => `contentLine ${i}`)
const defaultContent = mockDocContent(contentLines.join('\n'))
const MAX_DOC_LENGTH = 2 * 1024 * 1024 // ol-maxDocLength
class MockShareDoc extends EventEmitter {
constructor(public text: string) {
super()
}
getText() {
return this.text
}
insert() {
// do nothing
}
del() {
// do nothing
}
}
export const mockDoc = (content = defaultContent) => {
const mockShareJSDoc: ShareDoc = new MockShareDoc(content)
return {
doc_id: docId,
getSnapshot: () => {
return content
},
attachToCM6: (cm6: any) => {
cm6.attachShareJs(mockShareJSDoc, MAX_DOC_LENGTH)
},
detachFromCM6: () => {
// Do nothing
},
on: () => {
// Do nothing
},
off: () => {
// Do nothing
},
ranges: {
changes: [],
comments: [],
getIdSeed: () => '123',
setIdSeed: () => {},
getTrackedDeletesLength: () => 0,
},
setTrackChangesIdSeeds: () => {},
getTrackingChanges: () => true,
setTrackingChanges: () => {},
getInflightOp: () => null,
getPendingOp: () => null,
}
}