birthdaybot/utils/utils_test.go
2023-07-10 23:09:25 +02:00

47 lines
1.2 KiB
Go

package utils
import (
"os"
"path/filepath"
"testing"
"git.ctrlz.es/mgdelacroix/birthdaybot/model"
"github.com/stretchr/testify/require"
)
// ToDo: replace with os.CreateTemp
// ioutil.TempFile()
func TestGetPictureForBirthday(t *testing.T) {
tmpDir, err := os.MkdirTemp("", "birthdaybot-pictures-")
require.NoError(t, err)
defer os.RemoveAll(tmpDir)
birthday := &model.Birthday{
Name: "John Doe",
Email: "john@doe.com",
Phone: "987654321",
YearOfBirth: 2022,
MonthOfBirth: 7,
DayOfBirth: 1,
}
expectedPath := filepath.Join(tmpDir, "2022_7_1_987654321.png")
t.Run("should return the right path when the file exists", func(t *testing.T) {
// we create the file
require.NoError(t, os.WriteFile(expectedPath, []byte("dummy"), 0755))
picture, err := GetPictureForBirthday(birthday, tmpDir)
require.NoError(t, err)
require.Equal(t, expectedPath, picture)
})
t.Run("should fail if the file doesn't exist", func(t *testing.T) {
// we ensure that the file doesn't exist
require.NoError(t, os.Remove(expectedPath))
picture, err := GetPictureForBirthday(birthday, tmpDir)
require.ErrorIs(t, err, os.ErrNotExist)
require.Empty(t, picture)
})
}