diff --git a/pkg/controller/job/utils_test.go b/pkg/controller/job/utils_test.go index bfc84132153..7d8099027d4 100644 --- a/pkg/controller/job/utils_test.go +++ b/pkg/controller/job/utils_test.go @@ -24,26 +24,59 @@ import ( ) func TestIsJobFinished(t *testing.T) { - job := &batch.Job{ - Status: batch.JobStatus{ - Conditions: []batch.JobCondition{{ - Type: batch.JobComplete, - Status: v1.ConditionTrue, - }}, + testCases := map[string]struct { + conditionType batch.JobConditionType + conditionStatus v1.ConditionStatus + expectJobNotFinished bool + }{ + "Job is completed and condition is true": { + batch.JobComplete, + v1.ConditionTrue, + false, + }, + "Job is completed and condition is false": { + batch.JobComplete, + v1.ConditionFalse, + true, + }, + "Job is completed and condition is unknown": { + batch.JobComplete, + v1.ConditionUnknown, + true, + }, + "Job is failed and condition is true": { + batch.JobFailed, + v1.ConditionTrue, + false, + }, + "Job is failed and condition is false": { + batch.JobFailed, + v1.ConditionFalse, + true, + }, + "Job is failed and condition is unknown": { + batch.JobFailed, + v1.ConditionUnknown, + true, }, } - if !IsJobFinished(job) { - t.Error("Job was expected to be finished") - } + for name, tc := range testCases { + job := &batch.Job{ + Status: batch.JobStatus{ + Conditions: []batch.JobCondition{{ + Type: tc.conditionType, + Status: tc.conditionStatus, + }}, + }, + } - job.Status.Conditions[0].Status = v1.ConditionFalse - if IsJobFinished(job) { - t.Error("Job was not expected to be finished") - } - - job.Status.Conditions[0].Status = v1.ConditionUnknown - if IsJobFinished(job) { - t.Error("Job was not expected to be finished") + if tc.expectJobNotFinished == IsJobFinished(job) { + if tc.expectJobNotFinished { + t.Errorf("test name: %s, job was not expected to be finished", name) + } else { + t.Errorf("test name: %s, job was expected to be finished", name) + } + } } }