(Feat): Initial Commit
Some checks failed
Build & Test / build-test (push) Has been cancelled
Build & Test / swagger-codegen-cli (push) Has been cancelled
CodeQL / Analyze (go) (push) Has been cancelled

This commit is contained in:
2026-07-03 19:41:31 +05:30
commit 7e940c83a7
461 changed files with 45002 additions and 0 deletions

View File

@@ -0,0 +1,66 @@
package test
import (
"testing"
"allaboutapps.dev/aw/go-starter/internal/config"
"allaboutapps.dev/aw/go-starter/internal/mailer"
"allaboutapps.dev/aw/go-starter/internal/mailer/transport"
"github.com/jordan-wright/email"
)
const (
TestMailerDefaultSender = "test@example.com"
)
func NewTestMailer(t *testing.T) *mailer.Mailer {
t.Helper()
return newMailerWithTransporter(t, transport.NewMock())
}
func NewSMTPMailerFromDefaultEnv(t *testing.T) *mailer.Mailer {
t.Helper()
config := config.DefaultServiceConfigFromEnv().SMTP
return newMailerWithTransporter(t, transport.NewSMTP(config))
}
func GetTestMailerMockTransport(t *testing.T, m *mailer.Mailer) *transport.MockMailTransport {
t.Helper()
mt, ok := m.Transport.(*transport.MockMailTransport)
if !ok {
t.Fatalf("invalid mailer transport type, got %T, want *transport.MockMailTransport", m.Transport)
}
return mt
}
func newMailerWithTransporter(t *testing.T, transporter transport.MailTransporter) *mailer.Mailer {
t.Helper()
config := config.DefaultServiceConfigFromEnv().Mailer
config.DefaultSender = TestMailerDefaultSender
mailer := mailer.New(config, transporter)
if err := mailer.ParseTemplates(); err != nil {
t.Fatal("Failed to parse mailer templates", err)
}
return mailer
}
func GetLastSentMail(t *testing.T, m *mailer.Mailer) *email.Email {
t.Helper()
mt := GetTestMailerMockTransport(t, m)
return mt.GetLastSentMail()
}
func GetSentMails(t *testing.T, m *mailer.Mailer) []*email.Email {
t.Helper()
mt := GetTestMailerMockTransport(t, m)
return mt.GetSentMails()
}