Skip to content

Commit

Permalink
test: tests for script setup helpers
Browse files Browse the repository at this point in the history
  • Loading branch information
yyx990803 committed Nov 26, 2020
1 parent 73cdb9d commit 426a6c9
Show file tree
Hide file tree
Showing 2 changed files with 53 additions and 4 deletions.
49 changes: 49 additions & 0 deletions packages/runtime-core/__tests__/apiSetupHelpers.spec.ts
Original file line number Diff line number Diff line change
@@ -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)
})
})
8 changes: 4 additions & 4 deletions packages/runtime-core/src/apiSetupHelpers.ts
Original file line number Diff line number Diff line change
Expand Up @@ -27,8 +27,8 @@ export function defineProps<
InferredProps = ExtractPropTypes<PP>
>(props?: PP): Readonly<TypeProps extends undefined ? InferredProps : TypeProps>
// implementation
export function defineProps(props?: any) {
if (__DEV__ && props) {
export function defineProps() {
if (__DEV__) {
warn(
`defineProps() is a compiler-hint helper that is only usable inside ` +
`<script setup> of a single file component. Its arguments should be ` +
Expand All @@ -45,8 +45,8 @@ export function defineEmit<
InferredEmit = EmitFn<E>
>(emitOptions?: E | EE[]): TypeEmit extends undefined ? InferredEmit : TypeEmit
// implementation
export function defineEmit(emitOptions?: any) {
if (__DEV__ && emitOptions) {
export function defineEmit() {
if (__DEV__) {
warn(
`defineEmit() is a compiler-hint helper that is only usable inside ` +
`<script setup> of a single file component. Its arguments should be ` +
Expand Down

0 comments on commit 426a6c9

Please sign in to comment.