diff --git a/spec/api-menu-spec.coffee b/spec/api-menu-spec.coffee index f23face228..c619be7530 100644 --- a/spec/api-menu-spec.coffee +++ b/spec/api-menu-spec.coffee @@ -1,6 +1,6 @@ assert = require 'assert' -{remote} = require 'electron' +{remote, ipcRenderer} = require 'electron' {Menu, MenuItem} = remote.require 'electron' describe 'menu module', -> @@ -9,6 +9,11 @@ describe 'menu module', -> menu = Menu.buildFromTemplate [label: 'text', extra: 'field'] assert.equal menu.items[0].extra, 'field' + it 'does not modify the specified template', -> + template = [label: 'text', submenu: [label: 'sub']] + builtTemplate = ipcRenderer.sendSync('menu-build-from-template', template) + assert.deepStrictEqual builtTemplate, template + describe 'Menu.buildFromTemplate should reorder based on item position specifiers', -> it 'should position before existing item', -> menu = Menu.buildFromTemplate [ diff --git a/spec/static/main.js b/spec/static/main.js index be3690cd9e..8618237977 100644 --- a/spec/static/main.js +++ b/spec/static/main.js @@ -3,6 +3,7 @@ const app = electron.app; const ipcMain = electron.ipcMain; const dialog = electron.dialog; const BrowserWindow = electron.BrowserWindow; +const Menu = electron.Menu; const path = require('path'); @@ -100,4 +101,10 @@ app.on('ready', function() { }); event.returnValue = "done"; }); + + // Verify Menu.buildFromTemplate does not modify the specified template + ipcMain.on('menu-build-from-template', function(event, template) { + Menu.buildFromTemplate(template); + event.returnValue = template; + }) });