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") } }