fix: throw error when inserting menu items out-of-range (#17401)
* fix: throw error when inserting menu items out-of-range * also check pos < 0
This commit is contained in:
parent
f09f43a4a9
commit
db29978fe0
2 changed files with 24 additions and 0 deletions
|
@ -110,6 +110,12 @@ Menu.prototype.insert = function (pos, item) {
|
||||||
throw new TypeError('Invalid item')
|
throw new TypeError('Invalid item')
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (pos < 0) {
|
||||||
|
throw new RangeError(`Position ${pos} cannot be less than 0`)
|
||||||
|
} else if (pos > this.getItemCount()) {
|
||||||
|
throw new RangeError(`Position ${pos} cannot be greater than the total MenuItem count`)
|
||||||
|
}
|
||||||
|
|
||||||
// insert item depending on its type
|
// insert item depending on its type
|
||||||
insertItemByType.call(this, item, pos)
|
insertItemByType.call(this, item, pos)
|
||||||
|
|
||||||
|
|
|
@ -688,6 +688,24 @@ describe('Menu module', () => {
|
||||||
})
|
})
|
||||||
|
|
||||||
describe('Menu.insert', () => {
|
describe('Menu.insert', () => {
|
||||||
|
it('should throw when attempting to insert at out-of-range indices', () => {
|
||||||
|
const menu = Menu.buildFromTemplate([
|
||||||
|
{ label: '1' },
|
||||||
|
{ label: '2' },
|
||||||
|
{ label: '3' }
|
||||||
|
])
|
||||||
|
|
||||||
|
const item = new MenuItem({ label: 'badInsert' })
|
||||||
|
|
||||||
|
expect(() => {
|
||||||
|
menu.insert(9999, item)
|
||||||
|
}).to.throw(/Position 9999 cannot be greater than the total MenuItem count/)
|
||||||
|
|
||||||
|
expect(() => {
|
||||||
|
menu.insert(-9999, item)
|
||||||
|
}).to.throw(/Position -9999 cannot be less than 0/)
|
||||||
|
})
|
||||||
|
|
||||||
it('should store item in @items by its index', () => {
|
it('should store item in @items by its index', () => {
|
||||||
const menu = Menu.buildFromTemplate([
|
const menu = Menu.buildFromTemplate([
|
||||||
{ label: '1' },
|
{ label: '1' },
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue