test.todo('componentProxy')
- test.todo('componentProps')
+ describe('componentProps', () => {
+ test.todo('should work')
+
+ test('should convert empty booleans to true', () => {
+ let b1: any, b2: any, b3: any
+
+ const Comp = defineComponent({
+ props: {
+ b1: Boolean,
+ b2: [Boolean, String],
+ b3: [String, Boolean]
+ },
+ setup(props) {
+ ;({ b1, b2, b3 } = props)
+ return () => ''
+ }
+ })
+
+ render(
+ h(Comp, <any>{ b1: '', b2: '', b3: '' }),
+ nodeOps.createElement('div')
+ )
+
+ expect(b1).toBe(true)
+ expect(b2).toBe(true)
+ expect(b3).toBe('')
+ })
+ })
describe('slots', () => {
test('should respect $stable flag', async () => {
const booleanIndex = getTypeIndex(Boolean, prop.type)
const stringIndex = getTypeIndex(String, prop.type)
prop[BooleanFlags.shouldCast] = booleanIndex > -1
- prop[BooleanFlags.shouldCastTrue] = booleanIndex < stringIndex
+ prop[BooleanFlags.shouldCastTrue] =
+ stringIndex < 0 || booleanIndex < stringIndex
// if the prop needs boolean casting or default value
if (booleanIndex > -1 || hasOwn(prop, 'default')) {
needCastKeys.push(normalizedKey)
return i
}
}
- } else if (isObject(expectedTypes)) {
+ } else if (isFunction(expectedTypes)) {
return isSameType(expectedTypes, type) ? 0 : -1
}
return -1