Files
iD/test/spec/ui/cmd.js
2016-10-29 14:42:04 -04:00

63 lines
2.1 KiB
JavaScript

describe('iD.uiCmd', function () {
var orig,
ua = navigator.userAgent,
isPhantom = (navigator.userAgent.match(/PhantomJS/) !== null),
uaMock = function () { return ua; };
beforeEach(function() {
/* eslint-disable no-global-assign */
/* mock userAgent */
if (isPhantom) {
orig = navigator;
navigator = Object.create(orig, { userAgent: { get: uaMock }});
} else {
orig = navigator.__lookupGetter__('userAgent');
navigator.__defineGetter__('userAgent', uaMock);
}
});
afterEach(function() {
/* restore userAgent */
if (isPhantom) {
navigator = orig;
} else {
navigator.__defineGetter__('userAgent', orig);
}
/* eslint-enable no-global-assign */
});
it('does not overwrite mac keybindings', function () {
ua = 'Mac';
iD.Detect(true); // force redetection
expect(iD.uiCmd('⌘A')).to.eql('⌘A');
});
it('changes keys to linux versions', function () {
ua = 'Linux';
iD.Detect(true); // force redetection
expect(iD.uiCmd('⌘⌫')).to.eql('Ctrl+Backspace');
expect(iD.uiCmd('⌘A')).to.eql('Ctrl+A');
expect(iD.uiCmd('⇧A')).to.eql('Shift+A');
expect(iD.uiCmd('⌘⇧A')).to.eql('Ctrl+Shift+A');
expect(iD.uiCmd('⌘⇧Z')).to.eql('Ctrl+Shift+Z');
});
it('changes keys to win versions', function () {
ua = 'Win';
iD.Detect(true); // force redetection
expect(iD.uiCmd('⌘⌫')).to.eql('Ctrl+Backspace');
expect(iD.uiCmd('⌘A')).to.eql('Ctrl+A');
expect(iD.uiCmd('⇧A')).to.eql('Shift+A');
expect(iD.uiCmd('⌘⇧A')).to.eql('Ctrl+Shift+A');
expect(iD.uiCmd('⌘⇧Z')).to.eql('Ctrl+Y'); // special case
});
it('handles multi-character keys', function () {
ua = 'Win';
iD.Detect(true); // force redetection
expect(iD.uiCmd('f11')).to.eql('f11');
expect(iD.uiCmd('⌘plus')).to.eql('Ctrl+plus');
});
});