package email

import (
	"testing"

	"go.uber.org/zap"
)

func TestLoadSMTPConfigFromEnv(t *testing.T) {
	// Test avec valeurs par défaut (dev mode - MailHog)
	config := LoadSMTPConfigFromEnv()

	// En dev sans config, devrait avoir des valeurs par défaut
	if config.Host == "" {
		t.Log("SMTP_HOST not set, using default (localhost)")
	}
	if config.Port == "" {
		t.Log("SMTP_PORT not set, using default (1025)")
	}
}

func TestSMTPEmailSender_Send(t *testing.T) {
	logger, _ := zap.NewDevelopment()
	defer logger.Sync()

	// Config pour test (sans SMTP réel, juste vérifier que ça ne panique pas)
	config := SMTPConfig{
		Host:     "localhost",
		Port:     "1025",
		Username: "test",
		Password: "test",
		From:     "test@example.com",
		FromName: "Test",
	}

	sender := NewSMTPEmailSender(config, logger)

	// Test avec config vide (dev mode - devrait juste logger)
	emptyConfig := SMTPConfig{}
	emptySender := NewSMTPEmailSender(emptyConfig, logger)

	err := emptySender.Send("test@example.com", "Test Subject", "Test Body")
	if err != nil {
		t.Logf("Expected no error in dev mode (no SMTP config): %v", err)
	}

	// Test avec config mais sans serveur SMTP réel (devrait échouer mais pas paniquer)
	err = sender.Send("test@example.com", "Test Subject", "Test Body")
	if err != nil {
		t.Logf("Expected error when SMTP server not available: %v", err)
	}
}
