summaryrefslogtreecommitdiff
path: root/tests/test-video-audio-recording-quick-setup.el
diff options
context:
space:
mode:
Diffstat (limited to 'tests/test-video-audio-recording-quick-setup.el')
-rw-r--r--tests/test-video-audio-recording-quick-setup.el121
1 files changed, 100 insertions, 21 deletions
diff --git a/tests/test-video-audio-recording-quick-setup.el b/tests/test-video-audio-recording-quick-setup.el
index 1b2e6e53..f082f86a 100644
--- a/tests/test-video-audio-recording-quick-setup.el
+++ b/tests/test-video-audio-recording-quick-setup.el
@@ -3,7 +3,7 @@
;;; Commentary:
;; Unit tests for cj/recording-quick-setup function.
;; The quick setup is a two-step flow:
-;; Step 1: Pick a microphone
+;; Step 1: Pick a microphone (with active/inactive indicators)
;; Step 2: Pick an audio output (sink) with active/inactive indicators
;; The chosen sink's .monitor source is set as the system audio device.
@@ -36,20 +36,20 @@
"Test that selecting a mic sets cj/recording-mic-device."
(test-quick-setup-setup)
(unwind-protect
- (let ((call-count 0))
- (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--get-available-sinks)
- (lambda () '(("jds-labs" . "JDS Labs Element IV"))))
- ((symbol-function 'cj/recording--sink-active-p)
- (lambda (_name) nil))
- ((symbol-function 'completing-read)
- (lambda (_prompt table &rest _args)
- (setq call-count (1+ call-count))
- (car (all-completions "" table)))))
- (cj/recording-quick-setup)
- (should (equal "jabra-input" cj/recording-mic-device))))
+ (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))
+ ((symbol-function 'cj/recording--get-available-sinks)
+ (lambda () '(("jds-labs" . "JDS Labs Element IV"))))
+ ((symbol-function 'cj/recording--sink-active-p)
+ (lambda (_name) nil))
+ ((symbol-function 'completing-read)
+ (lambda (_prompt table &rest _args)
+ (car (all-completions "" table)))))
+ (cj/recording-quick-setup)
+ (should (equal "jabra-input" cj/recording-mic-device)))
(test-quick-setup-teardown)))
(ert-deftest test-video-audio-recording-quick-setup-normal-sets-system-to-sink-monitor ()
@@ -58,6 +58,8 @@
(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))
((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)
@@ -77,6 +79,8 @@
(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))
((symbol-function 'cj/recording--get-available-sinks)
(lambda () '(("sink-1" . "Sink One"))))
((symbol-function 'cj/recording--sink-active-p)
@@ -89,14 +93,75 @@
(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."
+ (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")))
+ ((symbol-function 'cj/recording--get-available-sinks)
+ (lambda () '(("sink-1" . "Sink One"))))
+ ((symbol-function 'cj/recording--sink-active-p)
+ (lambda (_name) nil))
+ ((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))
+ (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)))
+ 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."
+ (test-quick-setup-setup)
+ (unwind-protect
+ (let ((mic-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")))
+ ((symbol-function 'cj/recording--get-available-sinks)
+ (lambda () '(("sink-1" . "Sink One"))))
+ ((symbol-function 'cj/recording--sink-active-p)
+ (lambda (_name) nil))
+ ((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))
+ (car candidates)))))
+ (cj/recording-quick-setup)
+ ;; First candidate should be the active mic
+ (should (string-match-p "Active Mic" (car mic-candidates)))))
+ (test-quick-setup-teardown)))
+
(ert-deftest test-video-audio-recording-quick-setup-normal-active-sink-indicator ()
- "Test that active sinks get the active icon in their label."
+ "Test that active sinks get 󰕾 and inactive sinks get 󰖀."
(test-quick-setup-setup)
(unwind-protect
(let ((sink-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))
((symbol-function 'cj/recording--get-available-sinks)
(lambda () '(("active-sink" . "Active Sink")
("inactive-sink" . "Inactive Sink"))))
@@ -110,13 +175,13 @@
(setq sink-candidates candidates))
(car candidates)))))
(cj/recording-quick-setup)
- ;; Active sink should have 󰕾 icon (substring-no-properties strips faces but keeps text)
+ ;; 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
+ ;; Inactive sink should have 󰖀 icon
(should (cl-some (lambda (c) (and (string-match-p "Inactive Sink" c)
- (string-match-p "󰖁" c)))
+ (string-match-p "󰖀" c)))
sink-candidates))))
(test-quick-setup-teardown)))
@@ -127,6 +192,8 @@
(let ((sink-candidates nil))
(cl-letf (((symbol-function 'cj/recording--get-available-mics)
(lambda () '(("mic-1" . "Mic One"))))
+ ((symbol-function 'cj/recording--mic-active-p)
+ (lambda (_name) nil))
((symbol-function 'cj/recording--get-available-sinks)
(lambda () '(("inactive-sink" . "Inactive Sink")
("active-sink" . "Active Sink"))))
@@ -151,6 +218,8 @@
(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))
((symbol-function 'cj/recording--get-available-sinks)
(lambda () '(("jds-labs.analog-stereo" . "JDS Labs Element IV"))))
((symbol-function 'cj/recording--sink-active-p)
@@ -175,6 +244,8 @@
(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))
((symbol-function 'cj/recording--get-available-sinks)
(lambda () '(("sole-sink" . "Only Sink"))))
((symbol-function 'cj/recording--sink-active-p)
@@ -196,6 +267,8 @@
(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))
((symbol-function 'cj/recording--get-available-sinks)
(lambda () '(("sink-1" . "Sink One"))))
((symbol-function 'cj/recording--sink-active-p)
@@ -215,6 +288,8 @@
(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))
((symbol-function 'cj/recording--get-available-sinks)
(lambda () '(("sink-1" . "Sink One"))))
((symbol-function 'cj/recording--sink-active-p)
@@ -236,7 +311,9 @@
(test-quick-setup-setup)
(unwind-protect
(cl-letf (((symbol-function 'cj/recording--get-available-mics)
- (lambda () nil)))
+ (lambda () nil))
+ ((symbol-function 'cj/recording--mic-active-p)
+ (lambda (_name) nil)))
(should-error (cj/recording-quick-setup) :type 'user-error))
(test-quick-setup-teardown)))
@@ -245,7 +322,9 @@
(test-quick-setup-setup)
(unwind-protect
(cl-letf (((symbol-function 'cj/recording--get-available-mics)
- (lambda () nil)))
+ (lambda () nil))
+ ((symbol-function 'cj/recording--mic-active-p)
+ (lambda (_name) nil)))
(condition-case err
(cj/recording-quick-setup)
(user-error