diff --git a/migrations/job_test.go b/migrations/job_test.go new file mode 100644 index 0000000..711752d --- /dev/null +++ b/migrations/job_test.go @@ -0,0 +1,66 @@ +package migrations + +import ( + "fmt" + "testing" + + "github.com/stretchr/testify/assert" +) + +func TestJob_StatusReport(t *testing.T) { + jobWithStatus := func(status *MigratoryStatus) *Job { + return &Job{ + migratories: map[string]*Migratory{ + "test/test": { + Status: status, + }, + }, + Repositories: []string{ + "test/test", + }, + } + } + // Pending + pendingJob := &Job{ + Repositories: []string{ + "test/test", + }, + } + report := pendingJob.StatusReport() + assert.Len(t, report.Pending, 1) + assert.Equal(t, report.Pending[0], "test/test") + assert.Len(t, report.Failed, 0) + assert.Len(t, report.Running, 0) + assert.Len(t, report.Finished, 0) + + // Finished + report = jobWithStatus(&MigratoryStatus{ + Stage: Finished, + }).StatusReport() + assert.Len(t, report.Pending, 0) + assert.Len(t, report.Failed, 0) + assert.Len(t, report.Running, 0) + assert.Len(t, report.Finished, 1) + assert.Equal(t, Finished, report.Finished["test/test"].Stage) + + // Failed + report = jobWithStatus(&MigratoryStatus{ + Stage: Failed, + FatalError: fmt.Errorf("test"), + }).StatusReport() + assert.Len(t, report.Failed, 1) + assert.Equal(t, "test", report.Failed["test/test"]) + assert.Len(t, report.Pending, 0) + assert.Len(t, report.Running, 0) + assert.Len(t, report.Finished, 0) + + // Running + report = jobWithStatus(&MigratoryStatus{ + Stage: Migrating, + }).StatusReport() + assert.Len(t, report.Running, 1) + assert.Equal(t, Migrating, report.Running["test/test"].Stage) + assert.Len(t, report.Pending, 0) + assert.Len(t, report.Failed, 0) + assert.Len(t, report.Finished, 0) +}