Files
docker-compose-backup/internal/scheduler/scheduler_test.go
T
2026-07-04 17:20:28 +08:00

61 lines
1.2 KiB
Go

package scheduler
import (
"context"
"strings"
"testing"
"git.misaka.ren/M1saka/docker_backup/internal/config"
)
func TestNew(t *testing.T) {
cfg := &config.Config{
Global: config.GlobalConfig{BackupDir: "/tmp/backups"},
Projects: []config.ProjectConfig{
{Name: "test", Path: "/tmp", Cron: "0 3 * * *"},
},
}
s, err := New(cfg, false)
if err != nil {
t.Fatal(err)
}
if s == nil {
t.Fatal("scheduler is nil")
}
}
func TestRunInvalidCronReturnsError(t *testing.T) {
cfg := &config.Config{
Global: config.GlobalConfig{BackupDir: "/tmp/backups"},
Projects: []config.ProjectConfig{
{Name: "test", Path: "/tmp", Cron: "this is not a cron expression"},
},
}
s, err := New(cfg, false)
if err != nil {
t.Fatal(err)
}
err = s.Run(context.Background())
if err == nil {
t.Fatal("expected invalid cron error")
}
if !strings.Contains(err.Error(), "add cron for test") {
t.Fatalf("unexpected error: %v", err)
}
}
func TestNewNoCronProjects(t *testing.T) {
cfg := &config.Config{
Global: config.GlobalConfig{BackupDir: "/tmp/backups"},
Projects: []config.ProjectConfig{
{Name: "test", Path: "/tmp"},
},
}
s, err := New(cfg, false)
if err != nil {
t.Fatal(err)
}
if s == nil {
t.Fatal("scheduler is nil")
}
}