github.com/oinume/lekcije@v0.0.0-20231017100347-5b4c5eb6ab24/backend/infrastructure/send_grid/email_sender_test.go (about) 1 package send_grid 2 3 import ( 4 "context" 5 "io" 6 "net/http" 7 "os" 8 "strings" 9 "testing" 10 11 "go.uber.org/zap/zapcore" 12 13 model_email "github.com/oinume/lekcije/backend/domain/model/email" 14 "github.com/oinume/lekcije/backend/internal/assertion" 15 "github.com/oinume/lekcije/backend/logger" 16 ) 17 18 type transport struct { 19 called bool 20 } 21 22 func (t *transport) RoundTrip(req *http.Request) (*http.Response, error) { 23 t.called = true 24 resp := &http.Response{ 25 Header: make(http.Header), 26 Request: req, 27 StatusCode: http.StatusOK, 28 Status: "OK", 29 Body: io.NopCloser(strings.NewReader("OK")), 30 } 31 return resp, nil 32 } 33 34 func TestSendGridSender_Send(t *testing.T) { 35 s := ` 36 From: lekcije@lekcije.com 37 To: gmail <oinume@gmail.com>, oinume@lampetty.net 38 Subject: テスト 39 Body: text/html 40 oinume さん 41 こんにちは 42 ` 43 template := model_email.NewTemplate("TestNewEmailFromTemplate", strings.TrimSpace(s)) 44 data := struct { 45 Name string 46 Email string 47 }{ 48 "oinume", 49 "oinume@gmail.com", 50 } 51 email, err := model_email.NewFromTemplate(template, data) 52 if err != nil { 53 t.Fatal(err) 54 } 55 56 email.SetCustomArg("userId", "1") 57 email.SetCustomArg("teacherIds", "1,2,3") 58 tr := &transport{} 59 err = NewEmailSender( 60 &http.Client{Transport: tr}, 61 logger.NewAppLogger(os.Stdout, zapcore.InfoLevel), 62 ).Send(context.Background(), email) 63 if err != nil { 64 t.Fatal(err) 65 } 66 assertion.AssertEqual(t, true, tr.called, "tr.called must be true") 67 }