//go:build integration

package doctor

import (
	"os"
	"path/filepath"
	"testing"

	"github.com/tidbcloud/controlplane9/internal/config"
	"github.com/tidbcloud/controlplane9/internal/host"
)

func TestIntegration_PremiumRemoteBuildContractAcceptsSourceBuildSelection(t *testing.T) {
	for name, sourceList := range map[string]string{
		"multiline": "source_build_services = [\n    \"private-service\",\n]\n",
		"inline":    "source_build_services = [\"private-service\"]\n",
	} {
		t.Run(name, func(t *testing.T) {
			tiltfile := filepath.Join(t.TempDir(), "Tiltfile")
			if err := os.WriteFile(tiltfile, []byte(sourceList), 0o600); err != nil {
				t.Fatal(err)
			}
			session := &config.SessionConfig{
				APIVersion: config.APIVersionV1Alpha2,
				Persona: "dev-full",
				Tilt: config.SessionTiltConfig{File: tiltfile},
			}
			selected := &host.Session{Mode: config.HostModeRemoteEC2K3d}

			result := &Result{}
			CheckPremiumRemoteBuildContract(result, session, selected)
			if len(result.Checks) != 1 || result.Checks[0].Level != LevelPass {
				t.Fatalf("remote build checks = %#v", result.Checks)
			}
		})
	}
}
