pulsar/spec/stdlib/native-spec.coffee
2012-01-11 13:16:11 -08:00

65 lines
2.3 KiB
CoffeeScript

Native = require 'native'
describe "Native", ->
nativeModule = null
beforeEach ->
nativeModule = new Native
describe "addMenuItem(path, keyPattern)", ->
mainMenu = null
mainMenuItems = null
beforeEach ->
mainMenu = OSX.NSApp.mainMenu
mainMenuItems = mainMenu.itemArray
it "adds the item at the path terminus to the main menu, adding submenus as needed", ->
initialMenuCount = mainMenu.itemArray.length
nativeModule.addMenuItem('Submenu 1 > Item 1')
expect(mainMenu.itemArray.length).toBe initialMenuCount + 1
submenu1 = mainMenu.itemWithTitle('Submenu 1').submenu
item1 = submenu1.itemWithTitle('Item 1')
expect(item1).toBeDefined()
nativeModule.addMenuItem('Submenu 1 > Item 2')
expect(mainMenu.itemArray.length).toBe initialMenuCount + 1
expect(submenu1.itemArray.length).toBe 2
item1 = submenu1.itemWithTitle('Item 2')
expect(item1).toBeDefined()
nativeModule.addMenuItem('Submenu 2 > Item 1')
expect(mainMenu.itemArray.length).toBe initialMenuCount + 2
expect(submenu1.itemArray.length).toBe 2
submenu1 = mainMenu.itemWithTitle('Submenu 2').submenu
item1 = submenu1.itemWithTitle('Item 1')
expect(item1).toBeDefined()
it "adds a key equivalent to menu item when one is given", ->
nativeModule.addMenuItem('Submenu 1 > Item 1', "meta-r")
submenu1 = mainMenu.itemWithTitle('Submenu 1').submenu
item1 = submenu1.itemWithTitle('Item 1')
expect(item1.keyEquivalent.valueOf()).toBe 'r'
expect(item1.keyEquivalentModifierMask.valueOf()).toBe OSX.NSCommandKeyMask
it "does not add a key equivalent to menu item when no pattern is given", ->
nativeModule.addMenuItem('Submenu 2 > Item 2')
submenu2 = mainMenu.itemWithTitle('Submenu 2').submenu
item2 = submenu2.itemWithTitle('Item 2')
expect(item2.keyEquivalent.valueOf()).toBe 0
expect(item2.keyEquivalentModifierMask).toBe 0
it "does not add the same item twice", ->
nativeModule.addMenuItem('Submenu > Item')
expect(mainMenu.itemWithTitle('Submenu').submenu.itemArray.length).toBe(1)
nativeModule.addMenuItem('Submenu > Item')
expect(mainMenu.itemWithTitle('Submenu').submenu.itemArray.length).toBe(1)