]> git.ipfire.org Git - thirdparty/vuejs/core.git/commitdiff
test: add test for resolveAsset (#273)
authorCr <631807682@qq.com>
Mon, 14 Oct 2019 15:56:02 +0000 (23:56 +0800)
committerEvan You <yyx990803@gmail.com>
Mon, 14 Oct 2019 15:56:02 +0000 (11:56 -0400)
packages/runtime-core/__tests__/helpers/resolveAssets.spec.ts [new file with mode: 0644]

diff --git a/packages/runtime-core/__tests__/helpers/resolveAssets.spec.ts b/packages/runtime-core/__tests__/helpers/resolveAssets.spec.ts
new file mode 100644 (file)
index 0000000..77d6162
--- /dev/null
@@ -0,0 +1,94 @@
+import {
+  mockWarn,
+  createApp,
+  nodeOps,
+  resolveComponent,
+  resolveDirective,
+  Component,
+  Directive
+} from '@vue/runtime-test'
+
+describe('resolveAssets', () => {
+  test('should work', () => {
+    const app = createApp()
+    const FooBar = () => null
+    const BarBaz = { mounted: () => null }
+
+    let component1: Component
+    let component2: Component
+    let component3: Component
+    let component4: Component
+    let directive1: Directive
+    let directive2: Directive
+    let directive3: Directive
+    let directive4: Directive
+
+    const Root = {
+      components: {
+        FooBar: FooBar
+      },
+      directives: {
+        BarBaz: BarBaz
+      },
+      setup() {
+        return () => {
+          component1 = resolveComponent('FooBar')!
+          directive1 = resolveDirective('BarBaz')!
+          // camelize
+          component2 = resolveComponent('Foo-bar')!
+          directive2 = resolveDirective('Bar-baz')!
+          // capitalize
+          component3 = resolveComponent('fooBar')!
+          directive3 = resolveDirective('barBaz')!
+          // camelize and capitalize
+          component4 = resolveComponent('foo-bar')!
+          directive4 = resolveDirective('bar-baz')!
+        }
+      }
+    }
+
+    const root = nodeOps.createElement('div')
+    app.mount(Root, root)
+    expect(component1!).toBe(FooBar)
+    expect(component2!).toBe(FooBar)
+    expect(component3!).toBe(FooBar)
+    expect(component4!).toBe(FooBar)
+
+    expect(directive1!).toBe(BarBaz)
+    expect(directive2!).toBe(BarBaz)
+    expect(directive3!).toBe(BarBaz)
+    expect(directive4!).toBe(BarBaz)
+  })
+
+  describe('warning', () => {
+    mockWarn()
+
+    test('used outside render() or setup()', () => {
+      resolveComponent('foo')
+      expect(
+        'resolveComponent can only be used in render() or setup().'
+      ).toHaveBeenWarned()
+
+      resolveDirective('foo')
+      expect(
+        'resolveDirective can only be used in render() or setup().'
+      ).toHaveBeenWarned()
+    })
+
+    test('not exist', () => {
+      const app = createApp()
+      const Root = {
+        setup() {
+          resolveComponent('foo')
+          resolveDirective('bar')
+          return () => null
+        }
+      }
+
+      const root = nodeOps.createElement('div')
+      app.mount(Root, root)
+      expect('Failed to resolve component: foo').toHaveBeenWarned()
+      expect('Failed to resolve directive: bar').toHaveBeenWarned()
+    })
+  })
+})