From 5025ce49ec32a71ad42aa186ce946119e75086d3 Mon Sep 17 00:00:00 2001 From: Fabian Vowie Date: Tue, 4 Jan 2022 18:45:20 +0100 Subject: [PATCH] Add deserialization for pipelines --- pipeline.go | 13 +++++++++++++ pipeline_test.go | 32 ++++++++++++++++++++++++++++++++ 2 files changed, 45 insertions(+) create mode 100644 pipeline_test.go diff --git a/pipeline.go b/pipeline.go index c010406..9a12672 100644 --- a/pipeline.go +++ b/pipeline.go @@ -1,5 +1,7 @@ package main +import "encoding/json" + type PipelineType int type PipelineStepType int @@ -26,3 +28,14 @@ type Step struct { Type PipelineStepType } +func DeserializePipelines(pipelines []string) []Pipeline { + values := make([]Pipeline, len(pipelines)) + + for index, pipeline := range pipelines { + var deserializedObject Pipeline + json.Unmarshal([]byte(pipeline), &deserializedObject) + values[index] = deserializedObject + } + + return values +} diff --git a/pipeline_test.go b/pipeline_test.go new file mode 100644 index 0000000..9b7a135 --- /dev/null +++ b/pipeline_test.go @@ -0,0 +1,32 @@ +package main + +import ( + "testing" + + "github.com/stretchr/testify/assert" +) + +const ValidPayload string = `{ + "name": "example pipeline", + "type": 0, + "removeMetadata": false, + "steps": [ + { + "name": "resize image", + "type": 0 + }, + { + "name": "compress image", + "type": 1 + } + ] +}` + +func TestPipelineDeserialization(t *testing.T) { + t.Run("Pipelines deserialization is successful", func(t *testing.T) { + values := DeserializePipelines([]string{ValidPayload}) + + assert.Equal(t, 1, len(values), "Output should contain one element") + assert.Equal(t, "example pipeline", values[0].Name) + }) +}