#!/usr/bin/env zsh

# Required for shunit2 to run correctly
setopt shwordsplit
SHUNIT_PARENT=$0

# ------------------------------------------------------------------------------
# SHUNIT2 HOOKS
# ------------------------------------------------------------------------------

oneTimeSetUp() {
  export TERM="xterm-256color"
  export PATH=$PWD/tests/stubs:$PATH

  SPACESHIP_PROMPT_ASYNC=false
  SPACESHIP_PROMPT_FIRST_PREFIX_SHOW=true
  SPACESHIP_PROMPT_ADD_NEWLINE=false
  SPACESHIP_PROMPT_ORDER=(gnu_screen)

  source "spaceship.zsh"
}

setUp() {
  SPACESHIP_GNU_SCREEN_SHOW="true"
  SPACESHIP_GNU_SCREEN_PREFIX="via "
  SPACESHIP_GNU_SCREEN_SUFFIX=" "
  SPACESHIP_GNU_SCREEN_SYMBOL="💻 "
  SPACESHIP_GNU_SCREEN_COLOR="yellow"

  cd $SHUNIT_TMPDIR
}

oneTimeTearDown() {
  unset SPACESHIP_PROMPT_FIRST_PREFIX_SHOW
  unset SPACESHIP_PROMPT_ADD_NEWLINE
  unset SPACESHIP_PROMPT_ORDER
}

tearDown() {
  unset IN_NIX_SHELL
  unset SPACESHIP_GNU_SCREEN_SHOW
  unset SPACESHIP_GNU_SCREEN_PREFIX
  unset SPACESHIP_GNU_SCREEN_SUFFIX
  unset SPACESHIP_GNU_SCREEN_SYMBOL
  unset SPACESHIP_GNU_SCREEN_COLOR
}

# ------------------------------------------------------------------------------
# TEST CASES
# ------------------------------------------------------------------------------

test_gnu_screen_no_bin() {
  local no_bin_expected=""
  local no_bin_actual="$(spaceship::testkit::render_prompt)"
  assertEquals "should not render without nix shell" "$no_bin_expected" "$no_bin_actual"
}

test_gnu_screen_env() {
  screen() {}
  STY='1234.spaceship'

  local env_expected=(
    "%{%B%}$SPACESHIP_GNU_SCREEN_PREFIX%{%b%}"
    "%{%B%F{$SPACESHIP_GNU_SCREEN_COLOR}%}"
    "$SPACESHIP_GNU_SCREEN_SYMBOL"
    "$STY"
    "%{%b%f%}"
    "%{%B%}$SPACESHIP_GNU_SCREEN_SUFFIX%{%b%}"
  )
  local env_actual="$(spaceship::testkit::render_prompt)"
  assertEquals "should render with nix shell" "${(j::)env_expected}" "$env_actual"
}

# ------------------------------------------------------------------------------
# SHUNIT2
# Run tests with shunit2
# ------------------------------------------------------------------------------

source tests/shunit2/shunit2