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 }