161 lines
3.9 KiB
Go
161 lines
3.9 KiB
Go
package mailyak
|
||
|
||
import (
|
||
"bytes"
|
||
"fmt"
|
||
"io"
|
||
"net/smtp"
|
||
"strings"
|
||
"testing"
|
||
)
|
||
|
||
// TestHTML ensures we can write to HTML as an io.Writer
|
||
func TestHTML(t *testing.T) {
|
||
t.Parallel()
|
||
|
||
tests := []struct {
|
||
name string
|
||
// Parameters.
|
||
data []string
|
||
}{
|
||
{
|
||
"Writer test",
|
||
[]string{"Worst idea since someone said ‘yeah let’s take this suspiciously large " +
|
||
"wooden horse into Troy, statues are all the rage this season’.",
|
||
},
|
||
},
|
||
{
|
||
"Writer test multiple",
|
||
[]string{
|
||
"Worst idea since someone said ‘yeah let’s take this suspiciously large " +
|
||
"wooden horse into Troy, statues are all the rage this season’.",
|
||
"Am I jumping the gun, Baldrick, or are the words 'I have a cunning plan' " +
|
||
"marching with ill-deserved confidence in the direction of this conversation?",
|
||
},
|
||
},
|
||
}
|
||
for _, tt := range tests {
|
||
tt := tt
|
||
t.Run(tt.name, func(t *testing.T) {
|
||
t.Parallel()
|
||
|
||
mail := New("", smtp.PlainAuth("", "", "", ""))
|
||
|
||
for _, data := range tt.data {
|
||
if _, err := io.WriteString(mail.HTML(), data); err != nil {
|
||
t.Errorf("%q. HTML() error = %v", tt.name, err)
|
||
continue
|
||
}
|
||
}
|
||
|
||
if !bytes.Equal([]byte(strings.Join(tt.data, "")), mail.html.Bytes()) {
|
||
t.Errorf("%q. HTML() = %v, want %v", tt.name, mail.html.String(), tt.data)
|
||
}
|
||
})
|
||
}
|
||
}
|
||
|
||
// TestPlain ensures we can write to Plain as an io.Writer
|
||
func TestPlain(t *testing.T) {
|
||
t.Parallel()
|
||
|
||
tests := []struct {
|
||
name string
|
||
// Parameters.
|
||
data string
|
||
}{
|
||
{
|
||
"Writer test",
|
||
"Am I jumping the gun, Baldrick, or are the words 'I have a cunning plan' " +
|
||
"marching with ill-deserved confidence in the direction of this conversation?",
|
||
},
|
||
}
|
||
for _, tt := range tests {
|
||
tt := tt
|
||
t.Run(tt.name, func(t *testing.T) {
|
||
t.Parallel()
|
||
|
||
mail := New("", smtp.PlainAuth("", "", "", ""))
|
||
|
||
if _, err := io.WriteString(mail.Plain(), tt.data); err != nil {
|
||
t.Fatalf("%q. Plain() error = %v", tt.name, err)
|
||
}
|
||
|
||
if !bytes.Equal([]byte(tt.data), mail.plain.Bytes()) {
|
||
t.Errorf("%q. Plain() = %v, want %v", tt.name, mail.plain.String(), tt.data)
|
||
}
|
||
})
|
||
}
|
||
}
|
||
|
||
// TestWritableString ensures the writable type returns a string when called
|
||
// with fmt.Printx(), etc
|
||
func TestWritableString(t *testing.T) {
|
||
t.Parallel()
|
||
|
||
tests := []struct {
|
||
name string
|
||
// Parameters.
|
||
data string
|
||
}{
|
||
{
|
||
"String test",
|
||
"Baldrick, does it have to be this way? " +
|
||
"Our valued friendship ending with me cutting you up into strips and telling " +
|
||
"the prince that you walked over a very sharp cattle grid in an extremely heavy hat?",
|
||
},
|
||
}
|
||
for _, tt := range tests {
|
||
tt := tt
|
||
t.Run(tt.name, func(t *testing.T) {
|
||
t.Parallel()
|
||
|
||
mail := New("", smtp.PlainAuth("", "", "", ""))
|
||
|
||
if _, err := io.WriteString(mail.Plain(), tt.data); err != nil {
|
||
t.Fatalf("%q. Plain() error = %v", tt.name, err)
|
||
}
|
||
|
||
if tt.data != mail.plain.String() {
|
||
t.Errorf("%q. writable.String() = %v, want %v", tt.name, mail.plain.String(), tt.data)
|
||
}
|
||
|
||
if out := fmt.Sprintf("%v", mail.plain.String()); out != tt.data {
|
||
t.Errorf("%q. writable.String() via fmt.Sprintf = %v, want %v", tt.name, out, tt.data)
|
||
}
|
||
})
|
||
}
|
||
}
|
||
|
||
// TestPlain_String ensures we can use the string setter
|
||
func TestPlain_String(t *testing.T) {
|
||
t.Parallel()
|
||
|
||
tests := []struct {
|
||
name string
|
||
// Parameters.
|
||
data string
|
||
}{
|
||
{
|
||
"Writer test",
|
||
"Am I jumping the gun, Baldrick, or are the words 'I have a cunning plan' " +
|
||
"marching with ill-deserved confidence in the direction of this conversation?",
|
||
},
|
||
}
|
||
for _, tt := range tests {
|
||
tt := tt
|
||
t.Run(tt.name, func(t *testing.T) {
|
||
t.Parallel()
|
||
|
||
mail := New("", smtp.PlainAuth("", "", "", ""))
|
||
|
||
if _, err := io.WriteString(mail.Plain(), tt.data); err != nil {
|
||
t.Fatalf("%q. Plain() error = %v", tt.name, err)
|
||
}
|
||
|
||
if !bytes.Equal([]byte(tt.data), mail.plain.Bytes()) {
|
||
t.Errorf("%q. Plain() = %v, want %v", tt.name, mail.plain.String(), tt.data)
|
||
}
|
||
})
|
||
}
|
||
}
|