sanitize MenuItem options

This commit is contained in:
Zeke Sikelianos 2016-10-06 14:37:13 -07:00
parent fdf3f6ce30
commit b7e078e98d
2 changed files with 9 additions and 2 deletions

View file

@ -7,6 +7,11 @@ let nextCommandId = 0
const MenuItem = function (options) { const MenuItem = function (options) {
const {Menu} = require('electron') const {Menu} = require('electron')
// Clone and sanitize the provided options
options = Object.assign({}, options)
delete options.overrideProperty
delete options.overrideReadOnlyProperty
Object.assign(this, options) Object.assign(this, options)
if (this.submenu != null && this.submenu.constructor !== Menu) { if (this.submenu != null && this.submenu.constructor !== Menu) {

View file

@ -431,7 +431,7 @@ describe('menu module', function () {
}) })
}) })
describe.only('MenuItem with custom properties in constructor', function () { describe('MenuItem with custom properties in constructor', function () {
it('preserves the custom properties', function () { it('preserves the custom properties', function () {
var template = [{ var template = [{
label: 'menu 1', label: 'menu 1',
@ -442,11 +442,13 @@ describe.only('MenuItem with custom properties in constructor', function () {
var menu = Menu.buildFromTemplate(template) var menu = Menu.buildFromTemplate(template)
menu.items[0].submenu.append(new MenuItem({ menu.items[0].submenu.append(new MenuItem({
label: 'item 1', label: 'item 1',
customProp: 'bar' customProp: 'bar',
overrideProperty: 'oops not allowed'
})) }))
assert.equal(menu.items[0].customProp, 'foo') assert.equal(menu.items[0].customProp, 'foo')
assert.equal(menu.items[0].submenu.items[0].label, 'item 1') assert.equal(menu.items[0].submenu.items[0].label, 'item 1')
assert.equal(menu.items[0].submenu.items[0].customProp, 'bar') assert.equal(menu.items[0].submenu.items[0].customProp, 'bar')
assert.notEqual(typeof menu.items[0].submenu.items[0].overrideProperty, 'string')
}) })
}) })