Skip to content

Commit 1aaecf0

Browse files
committed
test: key binding manager tests for browserOnly and nativeOnly key bindings
1 parent bc8f3ea commit 1aaecf0

File tree

1 file changed

+52
-0
lines changed

1 file changed

+52
-0
lines changed

test/spec/KeyBindingManager-test.js

Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -368,6 +368,58 @@ define(function (require, exports, module) {
368368

369369
expect(KeyBindingManager.getKeymap()).toEqual(expected);
370370
});
371+
372+
it("should handle browserOnly and nativeOnly bindings correctly", function () {
373+
// Test browser-only bindings
374+
let result = KeyBindingManager.addBinding("test.browser", {
375+
key: "F6",
376+
browserOnly: true
377+
});
378+
let keymap = KeyBindingManager.getKeymap();
379+
if(Phoenix.isNativeApp) {
380+
expect(result).toBeNull();
381+
expect(keymap["F6"]).not.toBeDefined();
382+
} else {
383+
expect(result.key).toBe("F6");
384+
expect(keymap["F6"].key).toBe("F6");
385+
}
386+
// Test native-only bindings
387+
result = KeyBindingManager.addBinding("test.native", {
388+
key: "F7",
389+
nativeOnly: true
390+
});
391+
keymap = KeyBindingManager.getKeymap();
392+
if(!Phoenix.isNativeApp) {
393+
expect(result).toBeNull();
394+
expect(keymap["F7"]).not.toBeDefined();
395+
} else {
396+
expect(result.key).toBe("F7");
397+
expect(keymap["F7"].key).toBe("F7");
398+
}
399+
});
400+
401+
it("should handle browserOnly and nativeOnly in multiple bindings", function () {
402+
// Test browser-only bindings
403+
let result = KeyBindingManager.addBinding("test.allPlats", [
404+
{key: "F6", browserOnly: true},
405+
{key: "F7", nativeOnly: true}
406+
]);
407+
let keymap = KeyBindingManager.getKeymap();
408+
expect(result.length).toBe(1);
409+
if (Phoenix.isNativeApp) {
410+
// Native app environment
411+
expect(result[0].key).toBe("F7"); // Only native binding should be added
412+
expect(keymap["F7"]).toBeDefined();
413+
expect(keymap["F7"].key).toBe("F7");
414+
expect(keymap["F6"]).not.toBeDefined(); // Browser-only should not be defined
415+
} else {
416+
// Browser environment
417+
expect(result[0].key).toBe("F6"); // Only browser binding should be added
418+
expect(keymap["F6"]).toBeDefined();
419+
expect(keymap["F6"].key).toBe("F6");
420+
expect(keymap["F7"]).not.toBeDefined(); // Native-only should not be defined
421+
}
422+
});
371423
});
372424

373425
describe("removeBinding", function () {

0 commit comments

Comments
 (0)