fix(reactivity): Map/Set identity methods should work even if raw value contains reactive entries
fix #799
This commit is contained in:
@@ -348,5 +348,19 @@ describe('reactivity/collections', () => {
|
||||
map.set('foo', NaN)
|
||||
expect(mapSpy).toHaveBeenCalledTimes(1)
|
||||
})
|
||||
|
||||
it('should work with reactive keys in raw map', () => {
|
||||
const raw = new Map()
|
||||
const key = reactive({})
|
||||
raw.set(key, 1)
|
||||
const map = reactive(raw)
|
||||
|
||||
expect(map.has(key)).toBe(true)
|
||||
expect(map.get(key)).toBe(1)
|
||||
|
||||
expect(map.delete(key)).toBe(true)
|
||||
expect(map.has(key)).toBe(false)
|
||||
expect(map.get(key)).toBeUndefined()
|
||||
})
|
||||
})
|
||||
})
|
||||
|
||||
@@ -368,5 +368,17 @@ describe('reactivity/collections', () => {
|
||||
})
|
||||
expect(dummy).toBe(2)
|
||||
})
|
||||
|
||||
it('should work with reactive entries in raw set', () => {
|
||||
const raw = new Set()
|
||||
const entry = reactive({})
|
||||
raw.add(entry)
|
||||
const set = reactive(raw)
|
||||
|
||||
expect(set.has(entry)).toBe(true)
|
||||
|
||||
expect(set.delete(entry)).toBe(true)
|
||||
expect(set.has(entry)).toBe(false)
|
||||
})
|
||||
})
|
||||
})
|
||||
|
||||
@@ -67,6 +67,14 @@ describe('reactivity/reactive/Array', () => {
|
||||
expect(arr.lastIndexOf(observed, 1)).toBe(-1)
|
||||
})
|
||||
|
||||
test('Array identity methods should work if raw value contains reactive objects', () => {
|
||||
const raw = []
|
||||
const obj = reactive({})
|
||||
raw.push(obj)
|
||||
const arr = reactive(raw)
|
||||
expect(arr.includes(obj)).toBe(true)
|
||||
})
|
||||
|
||||
test('Array identity methods should be reactive', () => {
|
||||
const obj = {}
|
||||
const arr = reactive([obj, {}])
|
||||
|
||||
Reference in New Issue
Block a user