assemblrr/tests/unit/test_ui.sh
soulis-1256 a758a59aa5
feat(bazarr): multi-language subtitles and OpenSubtitles edit flow
Pick extra subtitle languages in setup and config edit (Jellyfin preferred
first, Bazarr downloads all). Config edit OpenSubtitles goes straight to
username/password, ignores leftover fzf Enter, and cancel leaves secrets.
2026-08-23 23:23:23 +03:00

58 lines
1.9 KiB
Bash

#!/bin/bash
# Unit tests for lib/ui.sh (setup vs edit copy)
set -euo pipefail
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
# shellcheck disable=SC1091
source "$SCRIPT_DIR/../helpers.sh"
# shellcheck disable=SC1091
source "$REPO_ROOT/lib/core.sh"
stub_log_error_no_exit
# shellcheck disable=SC1091
source "$REPO_ROOT/lib/ui.sh"
test_suite "ui_mode defaults to setup"
assert_eq "setup" "$(ui_mode)" "default mode is setup"
assert_true "ui_is_setup" ui_is_setup
assert_false "not edit by default" ui_is_edit
test_suite "ui_set_mode"
ui_set_mode edit
assert_eq "edit" "$(ui_mode)" "edit mode"
assert_true "ui_is_edit" ui_is_edit
assert_false "not setup" ui_is_setup
ui_set_mode setup
assert_eq "setup" "$(ui_mode)" "back to setup"
ui_set_mode bogus
assert_eq "setup" "$(ui_mode)" "unknown mode falls back to setup"
test_suite "ui_intro spacing"
ui_set_mode setup
intro=$(ui_intro "Pick indexers." "Change indexers.")
assert_eq $'\nPick indexers.' "$intro" "one blank line before setup copy"
ui_set_mode edit
intro=$(ui_intro "Pick indexers." "Change indexers.")
assert_eq $'\nChange indexers.' "$intro" "one blank line before edit copy"
ui_set_mode setup
test_suite "ui_intro / ui_picker_done copy"
ui_set_mode setup
FZF_SELECT_STATUS=cancelled
SELECTED_INDEXERS=()
out=$(ui_picker_done indexers)
assert_contains "$out" "Skipped indexers." "setup cancel is skip"
ui_set_mode edit
out=$(ui_picker_done indexers)
assert_contains "$out" "Cancelled — no change." "edit cancel is no change"
ui_set_mode setup
FZF_SELECT_STATUS=confirmed
out=$(ui_picker_done indexers)
assert_contains "$out" "No indexers selected." "setup confirm-empty"
SELECTED_SUBTITLE_LANGUAGES=()
out=$(ui_picker_done languages)
assert_contains "$out" "No languages selected." "setup confirm-empty languages"
ui_set_mode edit
out=$(ui_picker_done indexers)
assert_eq "" "$out" "edit confirm-empty is silent (applier syncs)"
test_summary