package service

import (
	"github.com/tidbcloud/aisupport/services/oncall/db"
	"github.com/tidbcloud/aisupport/services/oncall/models"
	"testing"

	"gorm.io/driver/sqlite"
	"gorm.io/gorm"
)

func setupSuperAdminTestDB(t *testing.T) {
	t.Helper()

	var err error
	db.DB, err = gorm.Open(sqlite.Open("file::memory:?cache=shared"), &gorm.Config{})
	if err != nil {
		t.Fatalf("failed to connect sqlite: %v", err)
	}

	err = db.DB.AutoMigrate(&models.SuperAdmin{})
	if err != nil {
		t.Fatalf("failed to migrate: %v", err)
	}
}

func TestIsSuperAdmin_FromSuperAdminsTable(t *testing.T) {
	setupSuperAdminTestDB(t)

	if IsSuperAdmin("admin@pingcap.com") {
		t.Fatalf("expected false before insert")
	}

	if err := db.DB.Create(&models.SuperAdmin{Email: "admin@pingcap.com", CreatedBy: "seed"}).Error; err != nil {
		t.Fatalf("failed to create super admin: %v", err)
	}

	if !IsSuperAdmin("admin@pingcap.com") {
		t.Fatalf("expected true after insert")
	}
	if !IsSuperAdmin("  ADMIN@PINGCAP.COM ") {
		t.Fatalf("expected case-insensitive/trimmed lookup")
	}
	if IsSuperAdmin("someone@pingcap.com") {
		t.Fatalf("expected non-admin email to be false")
	}
}
