package models

import (
	"testing"
)

func TestSoporteWebhookConfigTableName(t *testing.T) {
	if got := (SoporteWebhookConfig{}).TableName(); got != "soporte_webhook_config" {
		t.Errorf("TableName() = %q, want %q", got, "soporte_webhook_config")
	}
}

func TestSoporteWebhookConfigDefaults(t *testing.T) {
	cfg := SoporteWebhookConfig{
		Nombre:   "Test",
		Provider: "sendgrid",
	}
	if cfg.Provider != "sendgrid" {
		t.Errorf("Provider = %q, want %q", cfg.Provider, "sendgrid")
	}
	if cfg.EmailDestino != "" {
		t.Errorf("EmailDestino debe ser vacío, got %q", cfg.EmailDestino)
	}
}

func TestSoporteWebhookConfigAutoResponder(t *testing.T) {
	cfg := SoporteWebhookConfig{
		Nombre:        "Soporte",
		ResponderAuto: true,
		MensajeAuto:   "Gracias por contactarnos",
	}
	if !cfg.ResponderAuto {
		t.Error("ResponderAuto debe ser true")
	}
	if cfg.MensajeAuto != "Gracias por contactarnos" {
		t.Errorf("MensajeAuto = %q, want %q", cfg.MensajeAuto, "Gracias por contactarnos")
	}
}

func TestSoporteWebhookConfigAsignarA(t *testing.T) {
	uid := uint(5)
	cfg := SoporteWebhookConfig{
		AsignarA: &uid,
	}
	if cfg.AsignarA == nil {
		t.Fatal("AsignarA debe ser no nil")
	}
	if *cfg.AsignarA != 5 {
		t.Errorf("AsignarA = %d, want %d", *cfg.AsignarA, 5)
	}
}

func TestSoporteWebhookConfigAsignarANil(t *testing.T) {
	cfg := SoporteWebhookConfig{}
	if cfg.AsignarA != nil {
		t.Errorf("AsignarA debe ser nil por defecto, got %v", *cfg.AsignarA)
	}
}

func TestSoporteWebhookConfigSmtpDefaults(t *testing.T) {
	cfg := SoporteWebhookConfig{Nombre: "SMTP Test"}
	// Go zero values — los defaults reales los aplica GORM o el controller
	if cfg.SmtpHost != "" {
		t.Errorf("SmtpHost debe ser vacío por defecto, got %q", cfg.SmtpHost)
	}
	if cfg.SmtpPort != 0 {
		t.Errorf("SmtpPort debe ser 0 en Go, got %d", cfg.SmtpPort)
	}
}
