From 9e471d8f1cce79626491cea4be21be3b30cd6c2e Mon Sep 17 00:00:00 2001 From: mst128256 Date: Fri, 24 Mar 2017 12:14:08 +0100 Subject: [PATCH] Added specs --- docs/api/menu-item.md | 4 ++-- lib/browser/api/menu-item-roles.js | 4 ++-- spec/api-menu-spec.js | 46 ++++++++++++++++++++++++++++++++++++++ 3 files changed, 50 insertions(+), 4 deletions(-) diff --git a/docs/api/menu-item.md b/docs/api/menu-item.md index 76fcae1..dc403ea 100644 --- a/docs/api/menu-item.md +++ b/docs/api/menu-item.md @@ -64,8 +64,8 @@ The `role` property can have following values: * `zoomin` - Zoom in the focused page by 10% * `zoomout` - Zoom out the focused page by 10% -* `menuEdit` - Whole default "Edit" menu (Undo,Copy, etc.) -* `menuWindow` - Whole default "Window" menu (Minimize, Close, etc.) +* `editMenu` - Whole default "Edit" menu (Undo, Copy, etc.) +* `windowMenu` - Whole default "Window" menu (Minimize, Close, etc.) On macOS `role` can also have following additional values: diff --git a/lib/browser/api/menu-item-roles.js b/lib/browser/api/menu-item-roles.js index 8919b8d..b843bb8 100644 --- a/lib/browser/api/menu-item-roles.js +++ b/lib/browser/api/menu-item-roles.js @@ -156,7 +156,7 @@ const roles = { } }, // submenu Edit (should fit both Mac & Windows) - menuEdit: { + editMenu: { label: 'Edit', submenu: [ { @@ -197,7 +197,7 @@ const roles = { }, // submenu Window should be used for Mac only - menuWindow: { + windowMenu: { label: 'Window', submenu: [ { diff --git a/spec/api-menu-spec.js b/spec/api-menu-spec.js index 176f1ea..cfe5e39 100644 --- a/spec/api-menu-spec.js +++ b/spec/api-menu-spec.js @@ -455,6 +455,52 @@ describe('menu module', function () { }) }) + describe('MenuItem editMenu', function() { + it('includes a default submenu layout when submenu is empty', function() { + var item = new MenuItem({role: 'editMenu'}) + assert.equal(item.label, 'Edit') + assert.equal(item.submenu.items[0].role, 'undo') + assert.equal(item.submenu.items[1].role, 'redo') + assert.equal(item.submenu.items[2].type, 'separator') + assert.equal(item.submenu.items[3].role, 'cut') + assert.equal(item.submenu.items[4].role, 'copy') + assert.equal(item.submenu.items[5].role, 'paste') + if (process.platform == 'darwin') { + assert.equal(item.submenu.items[6].role, 'pasteandmatchstyle') + assert.equal(item.submenu.items[7].role, 'delete') + assert.equal(item.submenu.items[8].role, 'selectall') + } + if (process.platform == 'win32') { + assert.equal(item.submenu.items[6].role, 'delete') + assert.equal(item.submenu.items[7].type, 'separator') + assert.equal(item.submenu.items[8].role, 'selectall') + } + }) + it('overrides default layout when submenu is specified', function() { + var item = new MenuItem({role: 'editMenu', submenu: [{ role: 'close'}]}) + assert.equal(item.label, 'Edit') + assert.equal(item.submenu.items[0].role, 'close') + }) + }) + + describe('MenuItem windowMenu', function() { + it('includes a default submenu layout when submenu is empty', function() { + var item = new MenuItem({role: 'windowMenu'}) + assert.equal(item.label, 'Window') + assert.equal(item.submenu.items[0].role, 'minimize') + assert.equal(item.submenu.items[1].role, 'close') + if (process.platform == 'darwin') { + assert.equal(item.submenu.items[2].type, 'separator') + assert.equal(item.submenu.items[3].role, 'front') + } + }) + it('overrides default layout when submenu is specified', function() { + var item = new MenuItem({role: 'windowMenu', submenu: [{ role: 'copy'}]}) + assert.equal(item.label, 'Window') + assert.equal(item.submenu.items[0].role, 'copy') + }) + }) + describe('MenuItem with custom properties in constructor', function () { it('preserves the custom properties', function () { var template = [{ -- 2.7.4