import { acceptance } from "helpers/qunit-helpers";
import { withPluginApi } from "discourse/lib/plugin-api";
import KeyboardShortcuts from "discourse/lib/keyboard-shortcuts";
import KeyboardShortcutInitializer from "discourse/initializers/keyboard-shortcuts";
acceptance("Plugin Keyboard Shortcuts - Logged In", {
loggedIn: true,
beforeEach() {
KeyboardShortcutInitializer.initialize(this.container);
}
});
test("a plugin can add a keyboard shortcut", async assert => {
withPluginApi("0.8.38", api => {
api.addKeyboardShortcut("]", () => {
$("#qunit-fixture").html(
"
Test adding plugin shortcut
"
);
});
});
await visit("/t/this-is-a-test-topic/9");
await keyEvent(document, "keypress", "]".charCodeAt(0));
assert.equal(
$("#added-element").length,
1,
"the keyboard shortcut callback fires successfully"
);
});
acceptance("Plugin Keyboard Shortcuts - Anonymous", {
loggedIn: false,
beforeEach() {
KeyboardShortcutInitializer.initialize(this.container);
}
});
test("a plugin can add a keyboard shortcut with an option", async assert => {
let spy = sandbox.spy(KeyboardShortcuts, "_bindToPath");
withPluginApi("0.8.38", api => {
api.addKeyboardShortcut("]", () => {}, {
anonymous: true,
path: "test-path"
});
});
assert.ok(
spy.calledWith("test-path", "]"),
"bindToPath is called due to options provided"
);
});