]> git.ipfire.org Git - thirdparty/vuejs/core.git/commitdiff
test(runtime-core): inject from closest ancestor (#2329)
authorHunter <kltan69@gmail.com>
Tue, 13 Oct 2020 20:31:13 +0000 (04:31 +0800)
committerGitHub <noreply@github.com>
Tue, 13 Oct 2020 20:31:13 +0000 (16:31 -0400)
packages/runtime-core/__tests__/apiOptions.spec.ts

index ad2c7106a8059d30c2b0a3d89a52ed830a23c604..ab60ac7ca8275c02693e36d7e8437f9c6ee2657e 100644 (file)
@@ -888,6 +888,56 @@ describe('api: options', () => {
     expect(watchSpy.mock.calls[0].slice(0, 2)).toEqual(['hello', 'mixin3'])
   })
 
+  test('injection from closest ancestor', () => {
+    const Root = defineComponent({
+      provide: {
+        a: 'root'
+      },
+      render() {
+        return [h(Mid), ' ', h(MidWithProvide), ' ', h(MidWithMixinProvide)]
+      }
+    })
+
+    const Mid = {
+      render() {
+        return h(Child)
+      }
+    } as any
+
+    const MidWithProvide = {
+      provide: {
+        a: 'midWithProvide'
+      },
+      render() {
+        return h(Child)
+      }
+    } as any
+
+    const mixin = {
+      provide: {
+        a: 'midWithMixinProvide'
+      }
+    }
+
+    const MidWithMixinProvide = {
+      mixins: [mixin],
+      render() {
+        return h(Child)
+      }
+    } as any
+
+    const Child = {
+      inject: ['a'],
+      render() {
+        return this.a
+      }
+    } as any
+
+    expect(renderToString(h(Root))).toBe(
+      'root midWithProvide midWithMixinProvide'
+    )
+  })
+
   describe('warnings', () => {
     test('Expected a function as watch handler', () => {
       const Comp = {