52 lines
1.9 KiB
Go
52 lines
1.9 KiB
Go
package email
|
|
|
|
import "testing"
|
|
|
|
func TestNormalizeEmailListRequest(t *testing.T) {
|
|
tests := []struct {
|
|
name string
|
|
request emailRequest
|
|
wantOffset int
|
|
wantErr bool
|
|
}{
|
|
{name: "defaults", request: emailRequest{}, wantOffset: 0},
|
|
{name: "valid", request: emailRequest{CurrentPage: 3, PageSize: 20}, wantOffset: 40},
|
|
{name: "negative page", request: emailRequest{CurrentPage: -1, PageSize: 20}, wantErr: true},
|
|
{name: "large page", request: emailRequest{CurrentPage: maxEmailPage + 1, PageSize: 20}, wantErr: true},
|
|
{name: "negative page size", request: emailRequest{CurrentPage: 1, PageSize: -1}, wantErr: true},
|
|
{name: "large page size", request: emailRequest{CurrentPage: 1, PageSize: maxEmailPageSize + 1}, wantErr: true},
|
|
{name: "large keyword", request: emailRequest{Keyword: string(make([]byte, maxEmailKeywordBytes+1))}, wantErr: true},
|
|
}
|
|
for _, tt := range tests {
|
|
t.Run(tt.name, func(t *testing.T) {
|
|
request := tt.request
|
|
offset, err := normalizeEmailListRequest(&request)
|
|
if (err != nil) != tt.wantErr {
|
|
t.Fatalf("normalizeEmailListRequest() error = %v, wantErr %v", err, tt.wantErr)
|
|
}
|
|
if err == nil && offset != tt.wantOffset {
|
|
t.Fatalf("normalizeEmailListRequest() offset = %d, want %d", offset, tt.wantOffset)
|
|
}
|
|
if tt.name == "defaults" && (request.CurrentPage != 1 || request.PageSize != defaultEmailPageSize) {
|
|
t.Fatalf("defaults were not applied: %+v", request)
|
|
}
|
|
})
|
|
}
|
|
}
|
|
|
|
func TestDecodeStoredJSON(t *testing.T) {
|
|
var users []User
|
|
if err := decodeStoredJSON(" ", &users); err != nil {
|
|
t.Fatalf("blank stored JSON was rejected: %v", err)
|
|
}
|
|
if err := decodeStoredJSON(`[{"Name":"Alice","EmailAddress":"alice@example.com"}]`, &users); err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
if len(users) != 1 || users[0].EmailAddress != "alice@example.com" {
|
|
t.Fatalf("unexpected users: %#v", users)
|
|
}
|
|
if err := decodeStoredJSON("{", &users); err == nil {
|
|
t.Fatal("corrupted stored JSON was accepted")
|
|
}
|
|
}
|