package config import ( "testing" ) func TestLoadSyncSchedule(t *testing.T) { cases := []struct { name, schedule, tz string wantTimes int wantZone string wantErr bool }{ {"defaults", "", "", 1, "Europe/Prague", false}, {"two times", "06:00,18:00", "", 2, "Europe/Prague", false}, {"off", "off", "", 0, "Europe/Prague", false}, {"other zone", "04:00", "UTC", 1, "UTC", false}, {"bad time", "25:00", "", 0, "", true}, {"bad zone", "04:00", "Mars/Olympus", 0, "", true}, } for _, tc := range cases { t.Run(tc.name, func(t *testing.T) { t.Setenv("SYNC_SCHEDULE", tc.schedule) t.Setenv("SYNC_TZ", tc.tz) times, loc, err := LoadSyncSchedule() if (err != nil) != tc.wantErr { t.Fatalf("err = %v, wantErr %v", err, tc.wantErr) } if tc.wantErr { return } if len(times) != tc.wantTimes { t.Errorf("times = %v, want %d entries", times, tc.wantTimes) } if loc.String() != tc.wantZone { t.Errorf("zone = %s, want %s", loc, tc.wantZone) } }) } t.Setenv("SYNC_SCHEDULE", "") t.Setenv("SYNC_TZ", "") if times, _, _ := LoadSyncSchedule(); len(times) != 1 || times[0].String() != DefaultSyncSchedule { t.Errorf("default schedule = %v, want [%s]", times, DefaultSyncSchedule) } }