Added the ability to bookmark the extension, along with some visual adjustments
This commit is contained in:
41
tests/modalShortcuts.test.cjs
Normal file
41
tests/modalShortcuts.test.cjs
Normal file
@@ -0,0 +1,41 @@
|
||||
const { test } = require('node:test');
|
||||
const assert = require('node:assert/strict');
|
||||
const fs = require('node:fs');
|
||||
const vm = require('node:vm');
|
||||
|
||||
test('modal shortcuts require exactly Ctrl+Shift+D or Ctrl+Shift+F', () => {
|
||||
let listener, debug = 0, favorites = 0;
|
||||
const modal = { hidden: false };
|
||||
const context = vm.createContext({});
|
||||
vm.runInContext(fs.readFileSync('src/content/modal.js', 'utf8'), context);
|
||||
const app = context.createContentModal({
|
||||
MODAL_ID: 'modal', ESCAPE_LISTENER_KEY: 'keys',
|
||||
toggleDebugPanel: () => debug++, openBookmarkPicker: () => favorites++,
|
||||
environment: { window: {}, document: {
|
||||
getElementById: () => modal,
|
||||
addEventListener: (name, fn) => { if (name === 'keydown') listener = fn; }
|
||||
} }
|
||||
});
|
||||
app.ensureEscapeKeyHandler();
|
||||
function press(key, extra = {}) {
|
||||
let prevented = false;
|
||||
listener({ key, ctrlKey: true, shiftKey: true, preventDefault() { prevented = true; }, stopPropagation() {}, ...extra });
|
||||
return prevented;
|
||||
}
|
||||
assert.equal(press('D'), true);
|
||||
assert.equal(press('f'), true);
|
||||
assert.equal(debug, 1);
|
||||
assert.equal(favorites, 1);
|
||||
for (const key of ['d', 'f']) {
|
||||
assert.equal(press(key, { shiftKey: false }), false);
|
||||
assert.equal(press(key, { ctrlKey: false }), false);
|
||||
assert.equal(press(key, { altKey: true }), false);
|
||||
assert.equal(press(key, { metaKey: true }), false);
|
||||
press(key, { repeat: true });
|
||||
}
|
||||
modal.hidden = true;
|
||||
assert.equal(press('d'), false);
|
||||
assert.equal(press('f'), false);
|
||||
assert.equal(debug, 1);
|
||||
assert.equal(favorites, 1);
|
||||
});
|
||||
Reference in New Issue
Block a user