소스 검색

test(reactivity): add tests for object with symbols (#969)

Carlos Rodrigues 6 년 전
부모
커밋
d7ae1d0244
2개의 변경된 파일32개의 추가작업 그리고 0개의 파일을 삭제
  1. 15 0
      packages/reactivity/__tests__/ref.spec.ts
  2. 17 0
      test-dts/ref.test-d.ts

+ 15 - 0
packages/reactivity/__tests__/ref.spec.ts

@@ -139,6 +139,21 @@ describe('reactivity/ref', () => {
     expect(tupleRef.value[4].value).toBe(1)
   })
 
+  it('should keep symbols', () => {
+    const customSymbol = Symbol()
+    const obj = {
+      [Symbol.asyncIterator]: { a: 1 },
+      [Symbol.unscopables]: { b: '1' },
+      [customSymbol]: { c: [1, 2, 3] }
+    }
+
+    const objRef = ref(obj)
+
+    expect(objRef.value[Symbol.asyncIterator]).toBe(obj[Symbol.asyncIterator])
+    expect(objRef.value[Symbol.unscopables]).toBe(obj[Symbol.unscopables])
+    expect(objRef.value[customSymbol]).toStrictEqual(obj[customSymbol])
+  })
+
   test('unref', () => {
     expect(unref(1)).toBe(1)
     expect(unref(ref(1))).toBe(1)

+ 17 - 0
test-dts/ref.test-d.ts

@@ -57,3 +57,20 @@ function bailType(arg: HTMLElement | Ref<HTMLElement>) {
 }
 const el = document.createElement('DIV')
 bailType(el)
+
+function withSymbol() {
+  const customSymbol = Symbol()
+  const obj = {
+    [Symbol.asyncIterator]: { a: 1 },
+    [Symbol.unscopables]: { b: '1' },
+    [customSymbol]: { c: [1, 2, 3] }
+  }
+
+  const objRef = ref(obj)
+
+  expectType<{ a: number }>(objRef.value[Symbol.asyncIterator])
+  expectType<{ b: string }>(objRef.value[Symbol.unscopables])
+  expectType<{ c: Array<number> }>(objRef.value[customSymbol])
+}
+
+withSymbol()