mirror of
https://github.com/yjs/yjs.git
synced 2026-01-08 15:33:53 -05:00
first tests on attributed events
This commit is contained in:
34
tests/attribution.tests.js
Normal file
34
tests/attribution.tests.js
Normal file
@@ -0,0 +1,34 @@
|
||||
/**
|
||||
* Testing if encoding/decoding compatibility and integration compatibility is given.
|
||||
* We expect that the document always looks the same, even if we upgrade the integration algorithm, or add additional encoding approaches.
|
||||
*
|
||||
* The v1 documents were generated with Yjs v13.2.0 based on the randomisized tests.
|
||||
*/
|
||||
|
||||
import * as Y from '../src/index.js'
|
||||
import * as t from 'lib0/testing'
|
||||
import * as delta from '../src/utils/Delta.js'
|
||||
|
||||
/**
|
||||
* @param {t.TestCase} _tc
|
||||
*/
|
||||
export const testAttributedEvents = _tc => {
|
||||
const ydoc = new Y.Doc()
|
||||
const ytext = ydoc.getText()
|
||||
ytext.insert(0, 'hello world')
|
||||
const v1 = Y.cloneDoc(ydoc)
|
||||
ydoc.transact(() => {
|
||||
ytext.delete(6, 5)
|
||||
})
|
||||
let am = Y.createAttributionManagerFromDiff(v1, ydoc)
|
||||
const c1 = ytext.getDelta(am)
|
||||
t.compare(c1, delta.createTextDelta().insert('hello ').insert('world', null, { delete: [] }))
|
||||
let calledObserver = false
|
||||
ytext.observe(event => {
|
||||
const d = event.getDelta(am)
|
||||
t.compare(d, delta.createTextDelta().retain(11).insert('!', null, { insert: [] }))
|
||||
calledObserver = true
|
||||
})
|
||||
ytext.insert(11, '!')
|
||||
t.assert(calledObserver)
|
||||
}
|
||||
@@ -14,6 +14,7 @@ import * as relativePositions from './relativePositions.tests.js'
|
||||
import * as delta from './delta.tests.js'
|
||||
import * as idset from './IdSet.tests.js'
|
||||
import * as idmap from './IdMap.tests.js'
|
||||
import * as attribution from './attribution.tests.js'
|
||||
|
||||
import { runTests } from 'lib0/testing'
|
||||
import { isBrowser, isNode } from 'lib0/environment'
|
||||
@@ -24,7 +25,7 @@ if (isBrowser) {
|
||||
}
|
||||
|
||||
const tests = {
|
||||
doc, map, array, text, xml, encoding, undoredo, compatibility, snapshot, updates, relativePositions, delta, idset, idmap
|
||||
doc, map, array, text, xml, encoding, undoredo, compatibility, snapshot, updates, relativePositions, delta, idset, idmap, attribution
|
||||
}
|
||||
|
||||
const run = async () => {
|
||||
|
||||
Reference in New Issue
Block a user