|
|
@@ -0,0 +1,49 @@
|
|
|
+import {
|
|
|
+ defineComponent,
|
|
|
+ h,
|
|
|
+ nodeOps,
|
|
|
+ render,
|
|
|
+ SetupContext
|
|
|
+} from '@vue/runtime-test'
|
|
|
+import { defineEmit, defineProps, useContext } from '../src/apiSetupHelpers'
|
|
|
+
|
|
|
+describe('SFC <script setup> helpers', () => {
|
|
|
+ test('should warn runtime usage', () => {
|
|
|
+ defineProps()
|
|
|
+ expect(`defineProps() is a compiler-hint`).toHaveBeenWarned()
|
|
|
+
|
|
|
+ defineEmit()
|
|
|
+ expect(`defineEmit() is a compiler-hint`).toHaveBeenWarned()
|
|
|
+ })
|
|
|
+
|
|
|
+ test('useContext (no args)', () => {
|
|
|
+ let ctx: SetupContext | undefined
|
|
|
+ const Comp = {
|
|
|
+ setup() {
|
|
|
+ ctx = useContext()
|
|
|
+ return () => {}
|
|
|
+ }
|
|
|
+ }
|
|
|
+ render(h(Comp), nodeOps.createElement('div'))
|
|
|
+ expect(ctx).toMatchObject({
|
|
|
+ attrs: {},
|
|
|
+ slots: {}
|
|
|
+ })
|
|
|
+ expect(typeof ctx!.emit).toBe('function')
|
|
|
+ })
|
|
|
+
|
|
|
+ test('useContext (with args)', () => {
|
|
|
+ let ctx: SetupContext | undefined
|
|
|
+ let ctxArg: SetupContext | undefined
|
|
|
+ const Comp = defineComponent({
|
|
|
+ setup(_, _ctxArg) {
|
|
|
+ ctx = useContext()
|
|
|
+ ctxArg = _ctxArg
|
|
|
+ return () => {}
|
|
|
+ }
|
|
|
+ })
|
|
|
+ render(h(Comp), nodeOps.createElement('div'))
|
|
|
+ expect(ctx).toBeDefined()
|
|
|
+ expect(ctx).toBe(ctxArg)
|
|
|
+ })
|
|
|
+})
|