diff --git a/api/models/pipeline_v1_alpha.go b/api/models/pipeline_v1_alpha.go index b5ad561..b75a21a 100644 --- a/api/models/pipeline_v1_alpha.go +++ b/api/models/pipeline_v1_alpha.go @@ -8,12 +8,13 @@ import ( type PipelineV1Alpha struct { Pipeline struct { - ID string `json:"ppl_id"` - Name string `json:"name,omitempty"` - State string `json:"state,omitempty"` - Result string `json:"result,omitempty" yaml:"result,omitempty"` - Reason string `json:"result_reason,omitempty" yaml:"result_reason,omitempty"` - Error string `json:"error_description,omitempty" yaml:"error_description,omitempty"` + ID string `json:"ppl_id"` + Name string `json:"name,omitempty"` + State string `json:"state,omitempty"` + Result string `json:"result,omitempty" yaml:"result,omitempty"` + Reason string `json:"result_reason,omitempty" yaml:"result_reason,omitempty"` + Error string `json:"error_description,omitempty" yaml:"error_description,omitempty"` + AfterTaskID string `json:"after_task_id,omitempty" yaml:"after_task_id,omitempty"` } `json:"pipeline,omitempty"` Blocks []PipelineV1AlphaBlock `json:"blocks,omitempty"` } diff --git a/api/models/pipeline_v1_alpha_test.go b/api/models/pipeline_v1_alpha_test.go new file mode 100644 index 0000000..1b10ec8 --- /dev/null +++ b/api/models/pipeline_v1_alpha_test.go @@ -0,0 +1,79 @@ +package models + +import ( + "testing" + + "github.com/stretchr/testify/assert" +) + +func TestPipelineFromJsonWithAfterTask(t *testing.T) { + content := `{ + "pipeline": { + "ppl_id": "abc-123", + "name": "Deploy", + "state": "done", + "result": "passed", + "after_task_id": "zebra-task-456" + }, + "blocks": [ + { + "name": "Build", + "state": "done", + "result": "passed", + "jobs": [{"name": "compile", "job_id": "job-1"}] + } + ] + }` + + ppl, err := NewPipelineV1AlphaFromJson([]byte(content)) + assert.Nil(t, err) + assert.Equal(t, "abc-123", ppl.Pipeline.ID) + assert.Equal(t, "Deploy", ppl.Pipeline.Name) + assert.Equal(t, "zebra-task-456", ppl.Pipeline.AfterTaskID) + assert.Len(t, ppl.Blocks, 1) +} + +func TestPipelineFromJsonWithoutAfterTask(t *testing.T) { + content := `{ + "pipeline": { + "ppl_id": "abc-123", + "name": "CI", + "state": "done", + "result": "passed" + }, + "blocks": [] + }` + + ppl, err := NewPipelineV1AlphaFromJson([]byte(content)) + assert.Nil(t, err) + assert.Empty(t, ppl.Pipeline.AfterTaskID) +} + +func TestPipelineToYamlWithAfterTask(t *testing.T) { + ppl := PipelineV1Alpha{} + ppl.Pipeline.ID = "abc-123" + ppl.Pipeline.Name = "Deploy" + ppl.Pipeline.State = "done" + ppl.Pipeline.Result = "passed" + ppl.Pipeline.AfterTaskID = "zebra-task-456" + + yamlBytes, err := ppl.ToYaml() + assert.Nil(t, err) + + yaml := string(yamlBytes) + assert.Contains(t, yaml, "after_task_id: zebra-task-456") +} + +func TestPipelineToYamlWithoutAfterTask(t *testing.T) { + ppl := PipelineV1Alpha{} + ppl.Pipeline.ID = "abc-123" + ppl.Pipeline.Name = "CI" + ppl.Pipeline.State = "done" + ppl.Pipeline.Result = "passed" + + yamlBytes, err := ppl.ToYaml() + assert.Nil(t, err) + + yaml := string(yamlBytes) + assert.NotContains(t, yaml, "after_task_id") +}