summaryrefslogtreecommitdiff
path: root/tests/test-video-audio-recording-quick-setup.el
diff options
context:
space:
mode:
authorCraig Jennings <c@cjennings.net>2026-02-26 18:12:59 -0600
committerCraig Jennings <c@cjennings.net>2026-02-26 18:12:59 -0600
commit5eb90dbbd18cf9b22d83fe31303fbb09099088ed (patch)
treee064dc5609bb9db75c7b3d7b1a24726321a0fc60 /tests/test-video-audio-recording-quick-setup.el
parented5e3f61d00a9462801e15179fcceca65315050a (diff)
feat(recording): replace icons with text state labels in quick-setup
Replace hard-to-distinguish nerd font icons with clear text labels: Jabra SPEAK 510 Mono [active - running] Shure MV7+ Analog Stereo [active - idle] Ryzen HD Audio Controller [inactive - suspended] Both mic and sink steps use the same labeling. Devices sorted running → idle → suspended. Removed mic-active-p and sink-active-p helpers — state now comes directly from the verbose pactl parsers via get-available-mics/sinks which return (name description state).
Diffstat (limited to 'tests/test-video-audio-recording-quick-setup.el')
-rw-r--r--tests/test-video-audio-recording-quick-setup.el174
1 files changed, 59 insertions, 115 deletions
diff --git a/tests/test-video-audio-recording-quick-setup.el b/tests/test-video-audio-recording-quick-setup.el
index f082f86a..23314bd5 100644
--- a/tests/test-video-audio-recording-quick-setup.el
+++ b/tests/test-video-audio-recording-quick-setup.el
@@ -3,8 +3,10 @@
;;; Commentary:
;; Unit tests for cj/recording-quick-setup function.
;; The quick setup is a two-step flow:
-;; Step 1: Pick a microphone (with active/inactive indicators)
-;; Step 2: Pick an audio output (sink) with active/inactive indicators
+;; Step 1: Pick a microphone (with state labels)
+;; Step 2: Pick an audio output (sink) with state labels
+;; Both steps show [active - running], [active - idle], or
+;; [inactive - suspended] after the device description.
;; The chosen sink's .monitor source is set as the system audio device.
;;; Code:
@@ -37,14 +39,10 @@
(test-quick-setup-setup)
(unwind-protect
(cl-letf (((symbol-function 'cj/recording--get-available-mics)
- (lambda () '(("jabra-input" . "Jabra SPEAK 510 Mono")
- ("builtin-input" . "Built-in Analog"))))
- ((symbol-function 'cj/recording--mic-active-p)
- (lambda (_name) nil))
+ (lambda () '(("jabra-input" "Jabra SPEAK 510 Mono" "SUSPENDED")
+ ("builtin-input" "Built-in Analog" "SUSPENDED"))))
((symbol-function 'cj/recording--get-available-sinks)
- (lambda () '(("jds-labs" . "JDS Labs Element IV"))))
- ((symbol-function 'cj/recording--sink-active-p)
- (lambda (_name) nil))
+ (lambda () '(("jds-labs" "JDS Labs Element IV" "RUNNING"))))
((symbol-function 'completing-read)
(lambda (_prompt table &rest _args)
(car (all-completions "" table)))))
@@ -57,13 +55,9 @@
(test-quick-setup-setup)
(unwind-protect
(cl-letf (((symbol-function 'cj/recording--get-available-mics)
- (lambda () '(("jabra-input" . "Jabra SPEAK 510 Mono"))))
- ((symbol-function 'cj/recording--mic-active-p)
- (lambda (_name) nil))
+ (lambda () '(("jabra-input" "Jabra SPEAK 510 Mono" "SUSPENDED"))))
((symbol-function 'cj/recording--get-available-sinks)
- (lambda () '(("alsa_output.usb-JDS_Labs-00.analog-stereo" . "JDS Labs Element IV"))))
- ((symbol-function 'cj/recording--sink-active-p)
- (lambda (_name) nil))
+ (lambda () '(("alsa_output.usb-JDS_Labs-00.analog-stereo" "JDS Labs Element IV" "RUNNING"))))
((symbol-function 'completing-read)
(lambda (_prompt table &rest _args)
(car (all-completions "" table)))))
@@ -78,13 +72,9 @@
(unwind-protect
(let ((call-count 0))
(cl-letf (((symbol-function 'cj/recording--get-available-mics)
- (lambda () '(("mic-1" . "Mic One"))))
- ((symbol-function 'cj/recording--mic-active-p)
- (lambda (_name) nil))
+ (lambda () '(("mic-1" "Mic One" "SUSPENDED"))))
((symbol-function 'cj/recording--get-available-sinks)
- (lambda () '(("sink-1" . "Sink One"))))
- ((symbol-function 'cj/recording--sink-active-p)
- (lambda (_name) nil))
+ (lambda () '(("sink-1" "Sink One" "SUSPENDED"))))
((symbol-function 'completing-read)
(lambda (_prompt table &rest _args)
(setq call-count (1+ call-count))
@@ -93,21 +83,16 @@
(should (= 2 call-count))))
(test-quick-setup-teardown)))
-(ert-deftest test-video-audio-recording-quick-setup-normal-active-mic-indicator ()
- "Test that active mics get the green mic icon in their label."
+(ert-deftest test-video-audio-recording-quick-setup-normal-running-label ()
+ "Test that RUNNING devices show [active - running] label."
(test-quick-setup-setup)
(unwind-protect
(let ((mic-candidates nil)
(call-count 0))
(cl-letf (((symbol-function 'cj/recording--get-available-mics)
- (lambda () '(("active-mic" . "Active Mic")
- ("idle-mic" . "Idle Mic"))))
- ((symbol-function 'cj/recording--mic-active-p)
- (lambda (name) (equal name "active-mic")))
+ (lambda () '(("mic-1" "Running Mic" "RUNNING"))))
((symbol-function 'cj/recording--get-available-sinks)
- (lambda () '(("sink-1" . "Sink One"))))
- ((symbol-function 'cj/recording--sink-active-p)
- (lambda (_name) nil))
+ (lambda () '(("sink-1" "Sink One" "SUSPENDED"))))
((symbol-function 'completing-read)
(lambda (_prompt table &rest _args)
(setq call-count (1+ call-count))
@@ -116,99 +101,78 @@
(setq mic-candidates candidates))
(car candidates)))))
(cj/recording-quick-setup)
- ;; Both should have 󰍬 icon
- (should (cl-some (lambda (c) (and (string-match-p "Active Mic" c)
- (string-match-p "󰍬" c)))
- mic-candidates))
- (should (cl-some (lambda (c) (and (string-match-p "Idle Mic" c)
- (string-match-p "󰍬" c)))
+ (should (cl-some (lambda (c) (string-match-p "\\[active - running\\]" c))
mic-candidates))))
(test-quick-setup-teardown)))
-(ert-deftest test-video-audio-recording-quick-setup-normal-active-mic-sorted-first ()
- "Test that active mics are sorted to the top of the list."
+(ert-deftest test-video-audio-recording-quick-setup-normal-idle-label ()
+ "Test that IDLE devices show [active - idle] label."
(test-quick-setup-setup)
(unwind-protect
- (let ((mic-candidates nil)
+ (let ((sink-candidates nil)
(call-count 0))
(cl-letf (((symbol-function 'cj/recording--get-available-mics)
- (lambda () '(("idle-mic" . "Idle Mic")
- ("active-mic" . "Active Mic"))))
- ((symbol-function 'cj/recording--mic-active-p)
- (lambda (name) (equal name "active-mic")))
+ (lambda () '(("mic-1" "Mic One" "SUSPENDED"))))
((symbol-function 'cj/recording--get-available-sinks)
- (lambda () '(("sink-1" . "Sink One"))))
- ((symbol-function 'cj/recording--sink-active-p)
- (lambda (_name) nil))
+ (lambda () '(("sink-1" "Idle Sink" "IDLE"))))
((symbol-function 'completing-read)
(lambda (_prompt table &rest _args)
(setq call-count (1+ call-count))
(let ((candidates (all-completions "" table)))
- (when (= call-count 1)
- (setq mic-candidates candidates))
+ (when (= call-count 2)
+ (setq sink-candidates candidates))
(car candidates)))))
(cj/recording-quick-setup)
- ;; First candidate should be the active mic
- (should (string-match-p "Active Mic" (car mic-candidates)))))
+ (should (cl-some (lambda (c) (string-match-p "\\[active - idle\\]" c))
+ sink-candidates))))
(test-quick-setup-teardown)))
-(ert-deftest test-video-audio-recording-quick-setup-normal-active-sink-indicator ()
- "Test that active sinks get 󰕾 and inactive sinks get 󰖀."
+(ert-deftest test-video-audio-recording-quick-setup-normal-suspended-label ()
+ "Test that SUSPENDED devices show [inactive - suspended] label."
(test-quick-setup-setup)
(unwind-protect
- (let ((sink-candidates nil)
+ (let ((mic-candidates nil)
(call-count 0))
(cl-letf (((symbol-function 'cj/recording--get-available-mics)
- (lambda () '(("mic-1" . "Mic One"))))
- ((symbol-function 'cj/recording--mic-active-p)
- (lambda (_name) nil))
+ (lambda () '(("mic-1" "Suspended Mic" "SUSPENDED"))))
((symbol-function 'cj/recording--get-available-sinks)
- (lambda () '(("active-sink" . "Active Sink")
- ("inactive-sink" . "Inactive Sink"))))
- ((symbol-function 'cj/recording--sink-active-p)
- (lambda (name) (equal name "active-sink")))
+ (lambda () '(("sink-1" "Sink One" "SUSPENDED"))))
((symbol-function 'completing-read)
(lambda (_prompt table &rest _args)
(setq call-count (1+ call-count))
(let ((candidates (all-completions "" table)))
- (when (= call-count 2)
- (setq sink-candidates candidates))
+ (when (= call-count 1)
+ (setq mic-candidates candidates))
(car candidates)))))
(cj/recording-quick-setup)
- ;; Active sink should have 󰕾 icon
- (should (cl-some (lambda (c) (and (string-match-p "Active Sink" c)
- (string-match-p "󰕾" c)))
- sink-candidates))
- ;; Inactive sink should have 󰖀 icon
- (should (cl-some (lambda (c) (and (string-match-p "Inactive Sink" c)
- (string-match-p "󰖀" c)))
- sink-candidates))))
+ (should (cl-some (lambda (c) (string-match-p "\\[inactive - suspended\\]" c))
+ mic-candidates))))
(test-quick-setup-teardown)))
-(ert-deftest test-video-audio-recording-quick-setup-normal-active-sorted-first ()
- "Test that active sinks are sorted to the top of the list."
+(ert-deftest test-video-audio-recording-quick-setup-normal-sorted-by-state ()
+ "Test that devices are sorted running → idle → suspended."
(test-quick-setup-setup)
(unwind-protect
- (let ((sink-candidates nil))
+ (let ((mic-candidates nil)
+ (call-count 0))
(cl-letf (((symbol-function 'cj/recording--get-available-mics)
- (lambda () '(("mic-1" . "Mic One"))))
- ((symbol-function 'cj/recording--mic-active-p)
- (lambda (_name) nil))
+ (lambda () '(("suspended-mic" "Suspended Mic" "SUSPENDED")
+ ("running-mic" "Running Mic" "RUNNING")
+ ("idle-mic" "Idle Mic" "IDLE"))))
((symbol-function 'cj/recording--get-available-sinks)
- (lambda () '(("inactive-sink" . "Inactive Sink")
- ("active-sink" . "Active Sink"))))
- ((symbol-function 'cj/recording--sink-active-p)
- (lambda (name) (equal name "active-sink")))
+ (lambda () '(("sink-1" "Sink One" "SUSPENDED"))))
((symbol-function 'completing-read)
(lambda (_prompt table &rest _args)
+ (setq call-count (1+ call-count))
(let ((candidates (all-completions "" table)))
- (when (cl-some (lambda (c) (string-match-p "Sink" c)) candidates)
- (setq sink-candidates candidates))
+ (when (= call-count 1)
+ (setq mic-candidates candidates))
(car candidates)))))
(cj/recording-quick-setup)
- ;; First non-Cancel candidate should be the active sink
- (let ((first-sink (car sink-candidates)))
- (should (string-match-p "Active Sink" first-sink)))))
+ ;; First should be running, then idle, then suspended
+ (should (string-match-p "Running Mic" (nth 0 mic-candidates)))
+ (should (string-match-p "Idle Mic" (nth 1 mic-candidates)))
+ (should (string-match-p "Suspended Mic" (nth 2 mic-candidates)))))
(test-quick-setup-teardown)))
(ert-deftest test-video-audio-recording-quick-setup-normal-confirmation-message ()
@@ -217,13 +181,9 @@
(unwind-protect
(let ((message-text nil))
(cl-letf (((symbol-function 'cj/recording--get-available-mics)
- (lambda () '(("jabra-input" . "Jabra SPEAK 510 Mono"))))
- ((symbol-function 'cj/recording--mic-active-p)
- (lambda (_name) nil))
+ (lambda () '(("jabra-input" "Jabra SPEAK 510 Mono" "RUNNING"))))
((symbol-function 'cj/recording--get-available-sinks)
- (lambda () '(("jds-labs.analog-stereo" . "JDS Labs Element IV"))))
- ((symbol-function 'cj/recording--sink-active-p)
- (lambda (_name) nil))
+ (lambda () '(("jds-labs.analog-stereo" "JDS Labs Element IV" "RUNNING"))))
((symbol-function 'completing-read)
(lambda (_prompt table &rest _args)
(car (all-completions "" table))))
@@ -243,13 +203,9 @@
(unwind-protect
(let ((read-called 0))
(cl-letf (((symbol-function 'cj/recording--get-available-mics)
- (lambda () '(("sole-mic" . "Only Mic Available"))))
- ((symbol-function 'cj/recording--mic-active-p)
- (lambda (_name) nil))
+ (lambda () '(("sole-mic" "Only Mic Available" "SUSPENDED"))))
((symbol-function 'cj/recording--get-available-sinks)
- (lambda () '(("sole-sink" . "Only Sink"))))
- ((symbol-function 'cj/recording--sink-active-p)
- (lambda (_name) nil))
+ (lambda () '(("sole-sink" "Only Sink" "SUSPENDED"))))
((symbol-function 'completing-read)
(lambda (_prompt table &rest _args)
(setq read-called (1+ read-called))
@@ -266,13 +222,9 @@
(test-quick-setup-setup)
(unwind-protect
(cl-letf (((symbol-function 'cj/recording--get-available-mics)
- (lambda () '(("jabra-input" . "Jabra SPEAK 510 Mono"))))
- ((symbol-function 'cj/recording--mic-active-p)
- (lambda (_name) nil))
+ (lambda () '(("jabra-input" "Jabra SPEAK 510 Mono" "SUSPENDED"))))
((symbol-function 'cj/recording--get-available-sinks)
- (lambda () '(("sink-1" . "Sink One"))))
- ((symbol-function 'cj/recording--sink-active-p)
- (lambda (_name) nil))
+ (lambda () '(("sink-1" "Sink One" "SUSPENDED"))))
((symbol-function 'completing-read)
(lambda (_prompt _choices &rest _args)
"Cancel")))
@@ -287,13 +239,9 @@
(unwind-protect
(let ((call-count 0))
(cl-letf (((symbol-function 'cj/recording--get-available-mics)
- (lambda () '(("jabra-input" . "Jabra SPEAK 510 Mono"))))
- ((symbol-function 'cj/recording--mic-active-p)
- (lambda (_name) nil))
+ (lambda () '(("jabra-input" "Jabra SPEAK 510 Mono" "SUSPENDED"))))
((symbol-function 'cj/recording--get-available-sinks)
- (lambda () '(("sink-1" . "Sink One"))))
- ((symbol-function 'cj/recording--sink-active-p)
- (lambda (_name) nil))
+ (lambda () '(("sink-1" "Sink One" "SUSPENDED"))))
((symbol-function 'completing-read)
(lambda (_prompt table &rest _args)
(setq call-count (1+ call-count))
@@ -311,9 +259,7 @@
(test-quick-setup-setup)
(unwind-protect
(cl-letf (((symbol-function 'cj/recording--get-available-mics)
- (lambda () nil))
- ((symbol-function 'cj/recording--mic-active-p)
- (lambda (_name) nil)))
+ (lambda () nil)))
(should-error (cj/recording-quick-setup) :type 'user-error))
(test-quick-setup-teardown)))
@@ -322,9 +268,7 @@
(test-quick-setup-setup)
(unwind-protect
(cl-letf (((symbol-function 'cj/recording--get-available-mics)
- (lambda () nil))
- ((symbol-function 'cj/recording--mic-active-p)
- (lambda (_name) nil)))
+ (lambda () nil)))
(condition-case err
(cj/recording-quick-setup)
(user-error