// Copyright 2023 schukai GmbH
// SPDX-License-Identifier: AGPL-3.0

package jobqueue

import (
	"context"
	"os"
	"path"
	"testing"
)

func TestShellRunnable_Run(t *testing.T) {
	// Erstellen einer temporären Shell-Datei#
	tmpDir := t.TempDir()
	tmpFile := "example.sh"
	tmpPath := path.Join(tmpDir, tmpFile)

	fp, err := os.Create(tmpPath)
	if err != nil {
		t.Fatal(err)
	}
	defer fp.Close()

	content := []byte("#!/bin/sh\necho 'Hello, world!'\n")
	if _, err := fp.Write(content); err != nil {
		t.Fatal(err)
	}

	// ShellRunnable mit dem Pfad der temporären Datei initialisieren
	shellRunnable := ShellRunnable{ScriptPath: fp.Name()}

	// Run-Methode aufrufen
	ctx := context.Background()
	result, err := shellRunnable.Run(ctx)

	// Überprüfungen
	if err != nil {
		t.Errorf("Run() failed with error: %v", err)
	}
	if result.Status != ResultStatusSuccess {
		t.Errorf("Expected status Success, got %v", result.Status)
	}

	if result.Data.Output != "Hello, world!" {
		t.Errorf("Expected output 'Hello, world!', got '%v'", result.Data.Output)
	}
	if result.Data.ExitCode != 0 {
		t.Errorf("Expected exit code 0, got %v", result.Data.ExitCode)
	}
}