#!/usr/bin/env bash

assert_contains "mise completion nu" "__usage_complete_mise"
assert "mise completion nushell" "$(mise completion nu)"
assert_contains "mise __complete_word__ --shell nu --line 'mise inst'" "install"

export XDG_CONFIG_HOME="$HOME/nu-config"
install_out="$(mise completion nu --install 2>&1)"
assert_contains_text "$install_out" "completions/mise.nu"
assert_contains_text "$install_out" "source '"
assert_contains "cat $XDG_CONFIG_HOME/nushell/completions/mise.nu" "__usage_complete_mise"

# The activation wrapper is a Nushell command, so the external completer never sees `mise <Tab>`:
# it carries a completer of its own.
assert_contains "mise activate nu" 'string@"nu-complete mise"'

# Run the wrapper's completer under a real Nushell where one is installed.
if command -v nu >/dev/null 2>&1; then
  mise activate nu | awk '/^def "nu-complete mise"/,/^}$/' | sed 's/^def /export def /' >"$HOME/mise-complete.nu"
  run_nu() { nu -n -c "use $HOME/mise-complete.nu *; $1"; }
  export -f run_nu
  assert_contains "run_nu \"nu-complete mise 'mise inst' | get value | str join ' '\"" "install-into"
  assert_contains "run_nu \"nu-complete mise 'mise install' | get description | first\"" "Install"
fi
