package version

import (
	"bytes"
	"io"
	"testing"

	"github.com/kubescape/kubescape/v3/core/cautils"
	"github.com/stretchr/testify/assert"
)

func TestGetVersionCmd(t *testing.T) {
	tests := []struct {
		name        string
		buildNumber string
		want        string
	}{
		{
			name:        "Undefined Build Number",
			buildNumber: "",
			want:        "Your current version is: unknown\n",
		},
		{
			name:        "Defined Build Number: v3.0.1",
			buildNumber: "v3.0.1",
			want:        "Your current version is: v3.0.1\n",
		},
	}
	for _, tt := range tests {
		t.Run(tt.name, func(t *testing.T) {
			cautils.BuildNumber = tt.buildNumber

			if cmd := GetVersionCmd(); cmd != nil {
				buf := bytes.NewBufferString("")
				cmd.SetOut(buf)
				cmd.Execute()
				out, err := io.ReadAll(buf)
				if err != nil {
					t.Fatal(err)
				}
				assert.Equal(t, tt.want, string(out))
			}
		})
	}
}
