119 lines
2.8 KiB
Go
119 lines
2.8 KiB
Go
package db
|
|
|
|
import (
|
|
"context"
|
|
"database/sql"
|
|
"testing"
|
|
"time"
|
|
|
|
"github.com/itsscb/df/util"
|
|
"github.com/stretchr/testify/require"
|
|
)
|
|
|
|
func createRandomMail(t *testing.T) Mail {
|
|
|
|
creator := util.RandomUser()
|
|
|
|
arg := CreateMailParams{
|
|
From: util.RandomEmail(),
|
|
To: []string{util.RandomEmail()},
|
|
Cc: []string{util.RandomEmail()},
|
|
Subject: util.RandomString(20),
|
|
Body: util.RandomString(300),
|
|
Timestamp: time.Date(1990, 1, 1, 0, 0, 0, 0, time.UTC),
|
|
Creator: creator,
|
|
Changer: creator,
|
|
}
|
|
|
|
mail, err := testQueries.CreateMail(context.Background(), arg)
|
|
require.NoError(t, err)
|
|
require.NotEmpty(t, mail)
|
|
|
|
require.Equal(t, arg.From, mail.From)
|
|
require.Equal(t, arg.To, mail.To)
|
|
require.Equal(t, arg.Subject, mail.Subject)
|
|
require.Equal(t, arg.Body, mail.Body)
|
|
require.Equal(t, arg.Timestamp, mail.Timestamp)
|
|
require.Equal(t, arg.Creator, mail.Creator)
|
|
require.Equal(t, arg.Changer, mail.Changer)
|
|
|
|
require.NotZero(t, mail.ID)
|
|
require.NotZero(t, mail.Created)
|
|
|
|
return mail
|
|
}
|
|
|
|
func TestCreateMail(t *testing.T) {
|
|
createRandomMail(t)
|
|
}
|
|
|
|
func TestGetMail(t *testing.T) {
|
|
newmail := createRandomMail(t)
|
|
require.NotEmpty(t, newmail)
|
|
|
|
mail, err := testQueries.GetMail(context.Background(), newmail.ID)
|
|
require.NoError(t, err)
|
|
require.NotEmpty(t, mail)
|
|
|
|
require.Equal(t, newmail.From, mail.From)
|
|
require.Equal(t, newmail.To, mail.To)
|
|
require.Equal(t, newmail.Subject, mail.Subject)
|
|
require.Equal(t, newmail.Body, mail.Body)
|
|
require.Equal(t, newmail.Timestamp, mail.Timestamp)
|
|
require.Equal(t, newmail.Creator, mail.Creator)
|
|
require.Equal(t, newmail.Changer, mail.Changer)
|
|
|
|
require.WithinDuration(t, newmail.Created, mail.Created, time.Second)
|
|
}
|
|
|
|
func TestDeleteMail(t *testing.T) {
|
|
mail1 := createRandomMail(t)
|
|
err := testQueries.DeleteMail(context.Background(), mail1.ID)
|
|
require.NoError(t, err)
|
|
|
|
mail2, err := testQueries.GetMail(context.Background(), mail1.ID)
|
|
require.Error(t, err)
|
|
require.EqualError(t, err, sql.ErrNoRows.Error())
|
|
require.Empty(t, mail2)
|
|
}
|
|
|
|
/* func TestUpdateMail(t *testing.T) {
|
|
mail1 := createRandomMail(t)
|
|
require.NotEmpty(t, mail1)
|
|
|
|
arg := UpdateMailParams{
|
|
ID: mail1.ID,
|
|
Name: sql.NullString{
|
|
String: util.RandomString(50),
|
|
Valid: true,
|
|
},
|
|
}
|
|
|
|
mail2, err := testQueries.UpdateMail(context.Background(), arg)
|
|
require.NoError(t, err)
|
|
require.NotEmpty(t, mail2)
|
|
|
|
require.Equal(t, mail1.ID, mail2.ID)
|
|
require.Equal(t, mail1.Path, mail2.Path)
|
|
require.NotEqual(t, mail1.Name, mail2.Name)
|
|
} */
|
|
|
|
func TestListMails(t *testing.T) {
|
|
for i := 0; i < 10; i++ {
|
|
createRandomMail(t)
|
|
}
|
|
|
|
arg := ListMailsParams{
|
|
Limit: 5,
|
|
Offset: 5,
|
|
}
|
|
|
|
mails, err := testQueries.ListMails(context.Background(), arg)
|
|
require.NoError(t, err)
|
|
require.Len(t, mails, 5)
|
|
|
|
for _, mail := range mails {
|
|
require.NotEmpty(t, mail)
|
|
}
|
|
}
|