summaryrefslogtreecommitdiffstatshomepage
path: root/tests/fixtures
diff options
context:
space:
mode:
authorsommerfeld <sommerfeld@sommerfeld.dev>2026-09-22 13:57:08 +0100
committersommerfeld <sommerfeld@sommerfeld.dev>2026-09-22 13:57:08 +0100
commit7773d867f6266a5cd72971bfb1256c8976b280f4 (patch)
tree1b7703a6569f0b5ef397217b18e68cb90c5a3dd4 /tests/fixtures
parent33406d6cf63fe12e495381511cf6af54704d0933 (diff)
downloaddotfiles-7773d867f6266a5cd72971bfb1256c8976b280f4.tar.gz
dotfiles-7773d867f6266a5cd72971bfb1256c8976b280f4.tar.bz2
dotfiles-7773d867f6266a5cd72971bfb1256c8976b280f4.zip
Prefer external displays on the corporate laptop
Diffstat (limited to 'tests/fixtures')
-rw-r--r--tests/fixtures/display-lifecycle.js56
1 files changed, 56 insertions, 0 deletions
diff --git a/tests/fixtures/display-lifecycle.js b/tests/fixtures/display-lifecycle.js
new file mode 100644
index 0000000..2173c47
--- /dev/null
+++ b/tests/fixtures/display-lifecycle.js
@@ -0,0 +1,56 @@
+import assert from 'node:assert/strict';
+
+class Extension {}
+const Meta = {MonitorSwitchConfigType: {EXTERNAL: 2}};
+let callback;
+let requests = 0;
+let switchable = true;
+let builtinOn = true;
+const manager = {
+ has_builtin_panel: true,
+ connect(signal, handler) {
+ assert.equal(signal, 'monitors-changed');
+ callback = handler;
+ return 1;
+ },
+ disconnect(id) {
+ assert.equal(id, 1);
+ callback = null;
+ },
+ can_switch_config: () => switchable,
+ get_is_builtin_display_on: () => builtinOn,
+ switch_config(type) {
+ assert.equal(type, Meta.MonitorSwitchConfigType.EXTERNAL);
+ requests++;
+ builtinOn = false;
+ },
+};
+globalThis.global = {backend: {get_monitor_manager: () => manager}};
+
+// EXTENSION
+
+const extension = new ExternalDisplay();
+extension.enable();
+assert.equal(requests, 1);
+callback();
+assert.equal(requests, 1);
+
+// One connected display, or a closed lid, prevents switching.
+switchable = false;
+builtinOn = true;
+callback();
+assert.equal(requests, 1);
+switchable = true;
+callback();
+assert.equal(requests, 2);
+
+manager.has_builtin_panel = false;
+builtinOn = true;
+callback();
+assert.equal(requests, 2);
+extension.disable();
+assert.equal(callback, null);
+manager.has_builtin_panel = true;
+extension.enable();
+assert.equal(requests, 3);
+extension.disable();