Add failing spec for Menu.buildFromTemplate
authorKevin Sawicki <kevinsawicki@gmail.com>
Mon, 7 Dec 2015 17:12:48 +0000 (09:12 -0800)
committerKevin Sawicki <kevinsawicki@gmail.com>
Mon, 7 Dec 2015 17:28:17 +0000 (09:28 -0800)
spec/api-menu-spec.coffee
spec/static/main.js

index f23face..c619be7 100644 (file)
@@ -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 [
index be3690c..8618237 100644 (file)
@@ -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;
+  })
 });