github.com/oinume/lekcije@v0.0.0-20231017100347-5b4c5eb6ab24/backend/domain/model/email/email_test.go (about)

     1  package email
     2  
     3  import (
     4  	"strings"
     5  	"testing"
     6  
     7  	"github.com/oinume/lekcije/backend/internal/assertion"
     8  )
     9  
    10  func TestNewFromTemplate(t *testing.T) {
    11  	s := `
    12  From: lekcije@lekcije.com
    13  To: {{ .Name }} <{{ .Email }}>
    14  Subject: テスト
    15  Body: text/html
    16  {{ .Name }} さん
    17  こんにちは
    18  	`
    19  	template := NewTemplate("TestNewEmailFromTemplate", strings.TrimSpace(s))
    20  	data := struct {
    21  		Name  string
    22  		Email string
    23  	}{
    24  		"oinume",
    25  		"oinume@gmail.com",
    26  	}
    27  	email, err := NewFromTemplate(template, data)
    28  	if err != nil {
    29  		t.Fatal(err)
    30  	}
    31  
    32  	assertion.AssertEqual(t, "lekcije@lekcije.com", email.From.Address, "")
    33  	assertion.AssertEqual(t, "oinume@gmail.com", email.Tos[0].Address, "")
    34  	assertion.AssertEqual(t, "oinume", email.Tos[0].Name, "")
    35  	assertion.AssertEqual(t, "テスト", email.Subject, "")
    36  	assertion.AssertEqual(t, "text/html", email.BodyMIMEType, "")
    37  	assertion.AssertEqual(t, "oinume さん\nこんにちは", email.BodyString(), "")
    38  }
    39  
    40  func TestNewEmailsFromTemplate(t *testing.T) {
    41  	s := `
    42  From: lekcije@lekcije.com
    43  To: {{ .Name }} <{{ .Email }}>
    44  Subject: テスト
    45  Body: text/html
    46  {{ .Name }} さん
    47  こんにちは
    48  	`
    49  	template := NewTemplate("TestNewEmailsFromTemplate", strings.TrimSpace(s))
    50  	data := []struct {
    51  		Name  string
    52  		Email string
    53  	}{
    54  		{
    55  			"oinume",
    56  			"oinume@gmail.com",
    57  		},
    58  		{
    59  			"akuwano",
    60  			"akuwano@gmail.com",
    61  		},
    62  	}
    63  	tmp := make([]interface{}, len(data))
    64  	for i := range data {
    65  		tmp[i] = data[i]
    66  	}
    67  	emails, err := NewEmailsFromTemplate(template, tmp)
    68  	if err != nil {
    69  		t.Fatal(err)
    70  	}
    71  
    72  	assertion.AssertEqual(t, 2, len(emails), "")
    73  	assertion.AssertEqual(t, "lekcije@lekcije.com", emails[1].From.Address, "")
    74  	assertion.AssertEqual(t, "akuwano@gmail.com", emails[1].Tos[0].Address, "")
    75  	assertion.AssertEqual(t, "akuwano", emails[1].Tos[0].Name, "")
    76  	assertion.AssertEqual(t, "テスト", emails[1].Subject, "")
    77  	assertion.AssertEqual(t, "text/html", emails[1].BodyMIMEType, "")
    78  	assertion.AssertEqual(t, "akuwano さん\nこんにちは", emails[1].BodyString(), "")
    79  }