make these tests table-driven

This commit is contained in:
zhangxiaoyu-zidif 2017-08-31 14:08:46 +08:00
parent a0eb194d81
commit 056d586840

View File

@ -24,43 +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")
}
job.Status.Conditions[0].Type = batch.JobFailed
job.Status.Conditions[0].Status = v1.ConditionTrue
if !IsJobFinished(job) {
t.Error("Job was expected to be finished")
}
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)
}
}
}
}