2023-11-08 17:11:42 +00:00
|
|
|
package gocron
|
|
|
|
|
|
|
|
|
|
import (
|
2025-09-02 13:48:40 +00:00
|
|
|
"errors"
|
2023-11-08 17:11:42 +00:00
|
|
|
"testing"
|
|
|
|
|
"time"
|
|
|
|
|
|
|
|
|
|
"github.com/stretchr/testify/assert"
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
func TestRemoveSliceDuplicatesInt(t *testing.T) {
|
|
|
|
|
tests := []struct {
|
|
|
|
|
name string
|
|
|
|
|
input []int
|
|
|
|
|
expected []int
|
|
|
|
|
}{
|
|
|
|
|
{
|
|
|
|
|
"lots of duplicates",
|
|
|
|
|
[]int{
|
|
|
|
|
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
|
|
|
|
|
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
|
|
|
|
|
3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
|
|
|
|
|
4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
|
|
|
|
|
5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
|
|
|
|
|
},
|
|
|
|
|
[]int{1, 2, 3, 4, 5},
|
|
|
|
|
},
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
for _, tt := range tests {
|
|
|
|
|
t.Run(tt.name, func(t *testing.T) {
|
|
|
|
|
result := removeSliceDuplicatesInt(tt.input)
|
|
|
|
|
assert.ElementsMatch(t, tt.expected, result)
|
|
|
|
|
})
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
func TestCallJobFuncWithParams(t *testing.T) {
|
|
|
|
|
type f1 func()
|
|
|
|
|
tests := []struct {
|
|
|
|
|
name string
|
|
|
|
|
jobFunc any
|
|
|
|
|
params []any
|
|
|
|
|
expectedErr error
|
|
|
|
|
}{
|
|
|
|
|
{
|
|
|
|
|
"nil jobFunc",
|
|
|
|
|
nil,
|
|
|
|
|
nil,
|
|
|
|
|
nil,
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
"zero jobFunc",
|
|
|
|
|
f1(nil),
|
|
|
|
|
nil,
|
|
|
|
|
nil,
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
"wrong number of params",
|
2024-07-18 16:32:56 +00:00
|
|
|
func(_ string, _ int) {},
|
2023-11-08 17:11:42 +00:00
|
|
|
[]any{"one"},
|
|
|
|
|
nil,
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
"function that returns an error",
|
|
|
|
|
func() error {
|
2025-09-02 13:48:40 +00:00
|
|
|
return errors.New("test error")
|
2023-11-08 17:11:42 +00:00
|
|
|
},
|
|
|
|
|
nil,
|
2025-09-02 13:48:40 +00:00
|
|
|
errors.New("test error"),
|
2023-11-08 17:11:42 +00:00
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
"function that returns no error",
|
|
|
|
|
func() error {
|
|
|
|
|
return nil
|
|
|
|
|
},
|
|
|
|
|
nil,
|
|
|
|
|
nil,
|
|
|
|
|
},
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
for _, tt := range tests {
|
|
|
|
|
t.Run(tt.name, func(t *testing.T) {
|
|
|
|
|
err := callJobFuncWithParams(tt.jobFunc, tt.params...)
|
|
|
|
|
assert.Equal(t, tt.expectedErr, err)
|
|
|
|
|
})
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
func TestConvertAtTimesToDateTime(t *testing.T) {
|
|
|
|
|
tests := []struct {
|
|
|
|
|
name string
|
|
|
|
|
atTimes AtTimes
|
|
|
|
|
location *time.Location
|
|
|
|
|
expected []time.Time
|
|
|
|
|
err error
|
|
|
|
|
}{
|
|
|
|
|
{
|
|
|
|
|
"atTimes is nil",
|
|
|
|
|
nil,
|
|
|
|
|
time.UTC,
|
|
|
|
|
nil,
|
|
|
|
|
errAtTimesNil,
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
"atTime is nil",
|
|
|
|
|
NewAtTimes(nil),
|
|
|
|
|
time.UTC,
|
|
|
|
|
nil,
|
|
|
|
|
errAtTimeNil,
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
"atTimes hours is invalid",
|
|
|
|
|
NewAtTimes(
|
|
|
|
|
NewAtTime(24, 0, 0),
|
|
|
|
|
),
|
|
|
|
|
time.UTC,
|
|
|
|
|
nil,
|
|
|
|
|
errAtTimeHours,
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
"atTimes minutes are invalid",
|
|
|
|
|
NewAtTimes(
|
|
|
|
|
NewAtTime(0, 60, 0),
|
|
|
|
|
),
|
|
|
|
|
time.UTC,
|
|
|
|
|
nil,
|
|
|
|
|
errAtTimeMinSec,
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
"atTimes seconds are invalid",
|
|
|
|
|
NewAtTimes(
|
|
|
|
|
NewAtTime(0, 0, 60),
|
|
|
|
|
),
|
|
|
|
|
time.UTC,
|
|
|
|
|
nil,
|
|
|
|
|
errAtTimeMinSec,
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
"atTimes valid",
|
|
|
|
|
NewAtTimes(
|
|
|
|
|
NewAtTime(0, 0, 3),
|
|
|
|
|
NewAtTime(0, 0, 0),
|
|
|
|
|
NewAtTime(0, 0, 1),
|
|
|
|
|
NewAtTime(0, 0, 2),
|
|
|
|
|
),
|
|
|
|
|
time.UTC,
|
|
|
|
|
[]time.Time{
|
|
|
|
|
time.Date(0, 0, 0, 0, 0, 0, 0, time.UTC),
|
|
|
|
|
time.Date(0, 0, 0, 0, 0, 1, 0, time.UTC),
|
|
|
|
|
time.Date(0, 0, 0, 0, 0, 2, 0, time.UTC),
|
|
|
|
|
time.Date(0, 0, 0, 0, 0, 3, 0, time.UTC),
|
|
|
|
|
},
|
|
|
|
|
nil,
|
|
|
|
|
},
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
for _, tt := range tests {
|
|
|
|
|
t.Run(tt.name, func(t *testing.T) {
|
|
|
|
|
result, err := convertAtTimesToDateTime(tt.atTimes, tt.location)
|
|
|
|
|
assert.Equal(t, tt.expected, result)
|
|
|
|
|
assert.Equal(t, tt.err, err)
|
|
|
|
|
})
|
|
|
|
|
}
|
|
|
|
|
}
|