working flat observers over arrays + test
This commit is contained in:
parent
2c60c4a130
commit
5dcf2d7610
@ -122,12 +122,12 @@ export const testObserveMapUpdate = tc => {
|
||||
const { testConnector, users, map0, map1 } = init(tc, { users: 2 })
|
||||
map0.set('a', 'value')
|
||||
const link0 = /** @type {Y.WeakLink<String>} */ (map0.link('a'))
|
||||
map0.set('b', link0)
|
||||
/**
|
||||
* @type {any}
|
||||
*/
|
||||
let target0
|
||||
link0.observe((e) => target0 = e.target)
|
||||
map0.set('b', link0)
|
||||
|
||||
testConnector.flushAllMessages()
|
||||
|
||||
@ -153,12 +153,12 @@ export const testObserveMapDelete = tc => {
|
||||
const { testConnector, users, map0, map1 } = init(tc, { users: 2 })
|
||||
map0.set('a', 'value')
|
||||
const link0 = /** @type {Y.WeakLink<String>} */ (map0.link('a'))
|
||||
map0.set('b', link0)
|
||||
/**
|
||||
* @type {any}
|
||||
*/
|
||||
let target0
|
||||
link0.observe((e) => target0 = e.target)
|
||||
map0.set('b', link0)
|
||||
|
||||
testConnector.flushAllMessages()
|
||||
|
||||
@ -176,74 +176,35 @@ export const testObserveMapDelete = tc => {
|
||||
testConnector.flushAllMessages()
|
||||
t.compare(target1.deref(), undefined)
|
||||
}
|
||||
|
||||
/**
|
||||
* @param {t.TestCase} tc
|
||||
*/
|
||||
const testObserveMapLinkMapRemove = tc => {
|
||||
const doc = new Y.Doc()
|
||||
const map1 = doc.getMap('map1')
|
||||
const map2 = doc.getMap('map2')
|
||||
export const testObserveArray = tc => {
|
||||
const { testConnector, array0, array1 } = init(tc, { users: 2 })
|
||||
array0.insert(0, ['A','B','C'])
|
||||
const link0 = /** @type {Y.WeakLink<String>} */ (array0.link(1))
|
||||
array0.insert(0, [link0])
|
||||
/**
|
||||
* @type {Map<string, { action: 'add' | 'update' | 'delete', oldValue: any, newValue: any }>}
|
||||
* @type {any}
|
||||
*/
|
||||
let keys
|
||||
map1.observe((e) => keys = e.keys)
|
||||
let target0
|
||||
link0.observe((e) => target0 = e.target)
|
||||
|
||||
map2.set('key', 'value1')
|
||||
const link = map2.link('key')
|
||||
map1.set('other-key', link)
|
||||
testConnector.flushAllMessages()
|
||||
|
||||
keys = /** @type {any} */ (null)
|
||||
map2.delete('key')
|
||||
|
||||
t.compare(keys.get('key'), { action:'delete', oldValue: 'value1', newValue: null })
|
||||
}
|
||||
|
||||
/**
|
||||
* @param {t.TestCase} tc
|
||||
*/
|
||||
const testObserveArrayLinkMapRemove = tc => {
|
||||
const doc = new Y.Doc()
|
||||
const array = doc.getArray('array')
|
||||
const map = doc.getMap('map')
|
||||
let link1 = /** @type {Y.WeakLink<String>} */ (array1.get(0))
|
||||
t.compare(link1.deref(), 'B')
|
||||
/**
|
||||
* @type {Array<any>}
|
||||
* @type {any}
|
||||
*/
|
||||
let delta
|
||||
array.observe((e) => delta = e.delta)
|
||||
let target1
|
||||
link1.observe((e) => target1 = e.target)
|
||||
|
||||
map.set('key', 'value1')
|
||||
const link = map.link('key')
|
||||
array.insert(0, [link])
|
||||
array0.delete(2)
|
||||
t.compare(target0.deref(), undefined)
|
||||
|
||||
delta = /** @type {any} */ (null)
|
||||
map.delete('key')
|
||||
|
||||
t.compare(delta, [{ delete: 1 }])
|
||||
}
|
||||
|
||||
/**
|
||||
* @param {t.TestCase} tc
|
||||
*/
|
||||
const testObserveArrayLinkMapUpdate = tc => {
|
||||
const doc = new Y.Doc()
|
||||
const array = doc.getArray('array')
|
||||
const map = doc.getMap('map')
|
||||
/**
|
||||
* @type {Array<any>}
|
||||
*/
|
||||
let delta
|
||||
array.observe((e) => delta = e.delta)
|
||||
|
||||
map.set('key', 'value1')
|
||||
const link = map.link('key')
|
||||
array.insert(0, [link])
|
||||
|
||||
delta = /** @type {any} */ (null)
|
||||
map.set('key', 'value2')
|
||||
|
||||
t.compare(delta, [{ delete: 1 }, { insert: 'value2' }])
|
||||
testConnector.flushAllMessages()
|
||||
t.compare(target1.deref(), undefined)
|
||||
}
|
||||
|
||||
/**
|
||||
|
Loading…
x
Reference in New Issue
Block a user