package infra

import (
	"os/exec"
	"strings"
	"testing"
)

func TestDockerComposeUp(t *testing.T) {
	t.Run("detach true agrega flag -d al comando", func(t *testing.T) {
		// Verificar que docker compose esta disponible
		if err := exec.Command("docker", "compose", "version").Run(); err != nil {
			t.Skip("docker compose no disponible")
		}

		// Con archivo inexistente y detach, debe fallar pero con el mensaje correcto
		_, err := DockerComposeUp("/ruta/inexistente/docker-compose.yml", true)
		if err == nil {
			t.Error("se esperaba error para archivo inexistente")
		}
		// El error debe mencionar el archivo o compose
		errStr := strings.ToLower(err.Error())
		if !strings.Contains(errStr, "compose") && !strings.Contains(errStr, "inexistente") {
			t.Logf("error obtenido: %v", err)
		}
	})

	t.Run("error si composeFile no existe", func(t *testing.T) {
		_, err := DockerComposeUp("/ruta/que/no/existe/docker-compose.yml", false)
		if err == nil {
			t.Error("se esperaba error para archivo inexistente")
		}
	})
}
