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  }