package gorm

import (
	"strings"
	"testing"

	"github.com/tidbcloud/devops/pkg/infra/config"
)

func TestGenerateDSN_DefaultCharset(t *testing.T) {
	conf := config.DatabaseConfig{
		Host:     "127.0.0.1",
		Port:     4000,
		User:     "root",
		Password: "pwd",
		Database: "devops",
	}

	dsn := GenerateDSN(conf)
	if !strings.Contains(dsn, "charset=utf8mb4") {
		t.Fatalf("expected default charset in dsn, got %q", dsn)
	}
}

func TestGenerateDSN_UseConfiguredParams(t *testing.T) {
	conf := config.DatabaseConfig{
		Host:     "127.0.0.1",
		Port:     4000,
		User:     "root",
		Password: "pwd",
		Database: "devops",
		Params: map[string]string{
			"charset": "utf8",
			"loc":     "Local",
		},
	}

	dsn := GenerateDSN(conf)
	if !strings.Contains(dsn, "charset=utf8") {
		t.Fatalf("expected configured charset in dsn, got %q", dsn)
	}
	if strings.Contains(dsn, "charset=utf8mb4") {
		t.Fatalf("default charset should be overridden, got %q", dsn)
	}
	if !strings.Contains(dsn, "loc=Local") {
		t.Fatalf("expected configured loc param in dsn, got %q", dsn)
	}
}
