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) }) })