feat(apiOptions): add warning for duplicated properties declared by options (#329)
This commit is contained in:
@@ -575,5 +575,263 @@ describe('api: options', () => {
|
||||
'Computed property "foo" was assigned to but it has no setter.'
|
||||
).toHaveBeenWarned()
|
||||
})
|
||||
|
||||
test('data property is already declared in props', () => {
|
||||
const Comp = {
|
||||
props: { foo: Number },
|
||||
data: {
|
||||
foo: 1
|
||||
},
|
||||
render() {}
|
||||
}
|
||||
|
||||
const root = nodeOps.createElement('div')
|
||||
render(h(Comp), root)
|
||||
expect(
|
||||
`Data property "foo" is already defined in Props.`
|
||||
).toHaveBeenWarned()
|
||||
})
|
||||
|
||||
test('computed property is already declared in data', () => {
|
||||
const Comp = {
|
||||
data: {
|
||||
foo: 1
|
||||
},
|
||||
computed: {
|
||||
foo() {}
|
||||
},
|
||||
render() {}
|
||||
}
|
||||
|
||||
const root = nodeOps.createElement('div')
|
||||
render(h(Comp), root)
|
||||
expect(
|
||||
`Computed property "foo" is already defined in Data.`
|
||||
).toHaveBeenWarned()
|
||||
})
|
||||
|
||||
test('computed property is already declared in props', () => {
|
||||
const Comp = {
|
||||
props: { foo: Number },
|
||||
computed: {
|
||||
foo() {}
|
||||
},
|
||||
render() {}
|
||||
}
|
||||
|
||||
const root = nodeOps.createElement('div')
|
||||
render(h(Comp), root)
|
||||
expect(
|
||||
`Computed property "foo" is already defined in Props.`
|
||||
).toHaveBeenWarned()
|
||||
})
|
||||
|
||||
test('methods property is not a function', () => {
|
||||
const Comp = {
|
||||
methods: {
|
||||
foo: 1
|
||||
},
|
||||
render() {}
|
||||
}
|
||||
|
||||
const root = nodeOps.createElement('div')
|
||||
render(h(Comp), root)
|
||||
expect(
|
||||
`Method "foo" has type "number" in the component definition. ` +
|
||||
`Did you reference the function correctly?`
|
||||
).toHaveBeenWarned()
|
||||
})
|
||||
|
||||
test('methods property is already declared in data', () => {
|
||||
const Comp = {
|
||||
data: {
|
||||
foo: 2
|
||||
},
|
||||
methods: {
|
||||
foo() {}
|
||||
},
|
||||
render() {}
|
||||
}
|
||||
|
||||
const root = nodeOps.createElement('div')
|
||||
render(h(Comp), root)
|
||||
expect(
|
||||
`Methods property "foo" is already defined in Data.`
|
||||
).toHaveBeenWarned()
|
||||
})
|
||||
|
||||
test('methods property is already declared in props', () => {
|
||||
const Comp = {
|
||||
props: {
|
||||
foo: Number
|
||||
},
|
||||
methods: {
|
||||
foo() {}
|
||||
},
|
||||
render() {}
|
||||
}
|
||||
|
||||
const root = nodeOps.createElement('div')
|
||||
render(h(Comp), root)
|
||||
expect(
|
||||
`Methods property "foo" is already defined in Props.`
|
||||
).toHaveBeenWarned()
|
||||
})
|
||||
|
||||
test('methods property is already declared in computed', () => {
|
||||
const Comp = {
|
||||
computed: {
|
||||
foo: {
|
||||
get() {},
|
||||
set() {}
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
foo() {}
|
||||
},
|
||||
render() {}
|
||||
}
|
||||
|
||||
const root = nodeOps.createElement('div')
|
||||
render(h(Comp), root)
|
||||
expect(
|
||||
`Methods property "foo" is already defined in Computed.`
|
||||
).toHaveBeenWarned()
|
||||
})
|
||||
|
||||
test('inject property is already declared in data', () => {
|
||||
const Comp = {
|
||||
data() {
|
||||
return {
|
||||
a: 1
|
||||
}
|
||||
},
|
||||
provide() {
|
||||
return {
|
||||
a: this.a
|
||||
}
|
||||
},
|
||||
render() {
|
||||
return [h(ChildA)]
|
||||
}
|
||||
} as any
|
||||
const ChildA = {
|
||||
data() {
|
||||
return {
|
||||
a: 1
|
||||
}
|
||||
},
|
||||
inject: ['a'],
|
||||
render() {
|
||||
return this.a
|
||||
}
|
||||
} as any
|
||||
|
||||
const root = nodeOps.createElement('div')
|
||||
render(h(Comp), root)
|
||||
expect(
|
||||
`Inject property "a" is already defined in Data.`
|
||||
).toHaveBeenWarned()
|
||||
})
|
||||
|
||||
test('inject property is already declared in props', () => {
|
||||
const Comp = {
|
||||
data() {
|
||||
return {
|
||||
a: 1
|
||||
}
|
||||
},
|
||||
provide() {
|
||||
return {
|
||||
a: this.a
|
||||
}
|
||||
},
|
||||
render() {
|
||||
return [h(ChildA)]
|
||||
}
|
||||
} as any
|
||||
const ChildA = {
|
||||
props: { a: Number },
|
||||
inject: ['a'],
|
||||
render() {
|
||||
return this.a
|
||||
}
|
||||
} as any
|
||||
|
||||
const root = nodeOps.createElement('div')
|
||||
render(h(Comp), root)
|
||||
expect(
|
||||
`Inject property "a" is already defined in Props.`
|
||||
).toHaveBeenWarned()
|
||||
})
|
||||
|
||||
test('inject property is already declared in computed', () => {
|
||||
const Comp = {
|
||||
data() {
|
||||
return {
|
||||
a: 1
|
||||
}
|
||||
},
|
||||
provide() {
|
||||
return {
|
||||
a: this.a
|
||||
}
|
||||
},
|
||||
render() {
|
||||
return [h(ChildA)]
|
||||
}
|
||||
} as any
|
||||
const ChildA = {
|
||||
computed: {
|
||||
a: {
|
||||
get() {},
|
||||
set() {}
|
||||
}
|
||||
},
|
||||
inject: ['a'],
|
||||
render() {
|
||||
return this.a
|
||||
}
|
||||
} as any
|
||||
|
||||
const root = nodeOps.createElement('div')
|
||||
render(h(Comp), root)
|
||||
expect(
|
||||
`Inject property "a" is already defined in Computed.`
|
||||
).toHaveBeenWarned()
|
||||
})
|
||||
|
||||
test('inject property is already declared in methods', () => {
|
||||
const Comp = {
|
||||
data() {
|
||||
return {
|
||||
a: 1
|
||||
}
|
||||
},
|
||||
provide() {
|
||||
return {
|
||||
a: this.a
|
||||
}
|
||||
},
|
||||
render() {
|
||||
return [h(ChildA)]
|
||||
}
|
||||
} as any
|
||||
const ChildA = {
|
||||
methods: {
|
||||
a: () => null
|
||||
},
|
||||
inject: ['a'],
|
||||
render() {
|
||||
return this.a
|
||||
}
|
||||
} as any
|
||||
|
||||
const root = nodeOps.createElement('div')
|
||||
render(h(Comp), root)
|
||||
expect(
|
||||
`Inject property "a" is already defined in Methods.`
|
||||
).toHaveBeenWarned()
|
||||
})
|
||||
})
|
||||
})
|
||||
|
||||
Reference in New Issue
Block a user