]> git.ipfire.org Git - thirdparty/vuejs/core.git/commitdiff
test(reactivity): test case for #6358 (#6376)
authorlidlanca <8693091+lidlanca@users.noreply.github.com>
Thu, 29 Aug 2024 06:20:04 +0000 (02:20 -0400)
committerGitHub <noreply@github.com>
Thu, 29 Aug 2024 06:20:04 +0000 (14:20 +0800)
packages/reactivity/__tests__/ref.spec.ts

index 0158ca0f64ace06e61c716babd6426156b61cb7a..56863471ad512ae694e4c1a1e93ea95aa8f7e6fe 100644 (file)
@@ -43,6 +43,32 @@ describe('reactivity/ref', () => {
     expect(fn).toHaveBeenCalledTimes(2)
   })
 
+  it('ref wrapped in reactive should not track internal _value access', () => {
+    const a = ref(1)
+    const b = reactive(a)
+    let calls = 0
+    let dummy
+
+    effect(() => {
+      calls++
+      dummy = b.value // this will observe both b.value and a.value access
+    })
+    expect(calls).toBe(1)
+    expect(dummy).toBe(1)
+
+    // mutating a.value should only trigger effect once
+    calls = 0
+    a.value = 3
+    expect(calls).toBe(1)
+    expect(dummy).toBe(3)
+
+    // mutating b.value should trigger the effect twice. (once for a.value change and once for b.value change)
+    calls = 0
+    b.value = 5
+    expect(calls).toBe(2)
+    expect(dummy).toBe(5)
+  })
+
   it('should make nested properties reactive', () => {
     const a = ref({
       count: 1,