@@ -53,3 +53,57 @@ func TestGetWeekday(t *testing.T) {
5353 })
5454 }
5555}
56+
57+ func TestJob_shouldRunAgain (t * testing.T ) {
58+ tests := []struct {
59+ name string
60+ runConfig runConfig
61+ runCount int
62+ want bool
63+ }{
64+ {
65+ name : "should run again (infinite)" ,
66+ runConfig : runConfig {finiteRuns : false },
67+ want : true ,
68+ },
69+ {
70+ name : "should run again (finite)" ,
71+ runConfig : runConfig {finiteRuns : true , maxRuns : 2 },
72+ runCount : 1 ,
73+ want : true ,
74+ },
75+ {
76+ name : "shouldn't run again #1" ,
77+ runConfig : runConfig {finiteRuns : true , maxRuns : 2 },
78+ runCount : 2 ,
79+ want : false ,
80+ },
81+ {
82+ name : "shouldn't run again #2" ,
83+ runConfig : runConfig {finiteRuns : true , maxRuns : 2 },
84+ runCount : 4 ,
85+ want : false ,
86+ },
87+ }
88+ for _ , tt := range tests {
89+ t .Run (tt .name , func (t * testing.T ) {
90+ j := & Job {
91+ runConfig : tt .runConfig ,
92+ runCount : tt .runCount ,
93+ }
94+ if got := j .shouldRun (); got != tt .want {
95+ t .Errorf ("Job.shouldRunAgain() = %v, want %v" , got , tt .want )
96+ }
97+ })
98+ }
99+ }
100+
101+ func TestJob_LimitRunsTo (t * testing.T ) {
102+ j , _ := NewScheduler (time .Local ).Every (1 ).Second ().Do (func () {})
103+ j .LimitRunsTo (2 )
104+ assert .Equal (t , j .shouldRun (), true , "Expecting it to run again" )
105+ j .run ()
106+ assert .Equal (t , j .shouldRun (), true , "Expecting it to run again" )
107+ j .run ()
108+ assert .Equal (t , j .shouldRun (), false , "Not expecting it to run again" )
109+ }
0 commit comments