Skip to content

Commit

Permalink
fix: test run outputs marshal/unmarshal (#3574)
Browse files Browse the repository at this point in the history
  • Loading branch information
mathnogueira committed Jan 29, 2024
1 parent 71dc857 commit 01ede97
Show file tree
Hide file tree
Showing 2 changed files with 76 additions and 2 deletions.
46 changes: 46 additions & 0 deletions server/test/run_test.go
@@ -1,6 +1,8 @@
package test_test

import (
"encoding/json"
"errors"
"fmt"
"testing"
"time"
Expand All @@ -12,6 +14,7 @@ import (
"github.com/kubeshop/tracetest/server/test"
"github.com/kubeshop/tracetest/server/variableset"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
)

func TestRunExecutionTime(t *testing.T) {
Expand Down Expand Up @@ -202,3 +205,46 @@ func TestRunRequiredGates(t *testing.T) {
assert.Equal(t, gates, result.Failed)
})
}

func TestRunOutput(t *testing.T) {
jsonContent := []byte(`[{"Key": "MY_OUTPUT", "Value": {"Name": "MY_OUTPUT", "Error": {}, "Value": "", "SpanID": "", "Resolved": false}}]`)

var output test.Run
err := json.Unmarshal(jsonContent, &output.Outputs)
require.NoError(t, err)
}

func TestRunOutputJSON(t *testing.T) {
jsonContent := []byte(`{"Name": "MY_OUTPUT", "Error": {}, "Value": "1", "SpanID": "2", "Resolved": true}`)

var output test.RunOutput
err := json.Unmarshal(jsonContent, &output)
require.NoError(t, err)

assert.Equal(t, "MY_OUTPUT", output.Name)
assert.Equal(t, "1", output.Value)
assert.Equal(t, "2", output.SpanID)
assert.Equal(t, true, output.Resolved)
assert.Nil(t, output.Error)
}

func TestRunOutputMarshalJSON(t *testing.T) {
var runOutput = test.RunOutput{
Name: "MY_OUTPUT",
Value: "1",
SpanID: "2",
Resolved: true,
Error: errors.New("not empty"),
}
jsonContent, _ := json.Marshal(runOutput)

var output test.RunOutput
err := json.Unmarshal(jsonContent, &output)
require.NoError(t, err)

assert.Equal(t, "MY_OUTPUT", output.Name)
assert.Equal(t, "1", output.Value)
assert.Equal(t, "2", output.SpanID)
assert.Equal(t, true, output.Resolved)
assert.Equal(t, "not empty", output.Error.Error())
}
32 changes: 30 additions & 2 deletions server/test/test_json.go
Expand Up @@ -168,24 +168,52 @@ func (output *RunOutput) UnmarshalJSON(data []byte) error {
Value string
SpanID string
Resolved bool
Error string
Error interface{}
}{}

err := json.Unmarshal(data, &obj)
if err != nil {
return err
}

errString := ""
if s, ok := obj.Error.(string); ok {
errString = s
}

output.Name = obj.Name
output.Value = obj.Value
output.SpanID = obj.SpanID
output.Resolved = obj.Resolved
if err = stringToErr(obj.Error); err != nil {
if err = stringToErr(errString); err != nil {
output.Error = err
}
return nil
}

func (output RunOutput) MarshalJSON() ([]byte, error) {
errString := ""
if output.Error != nil {
errString = output.Error.Error()
}

obj := struct {
Name string
Value string
SpanID string
Resolved bool
Error string
}{
Name: output.Name,
Value: output.Value,
SpanID: output.SpanID,
Resolved: output.Resolved,
Error: errString,
}

return json.Marshal(obj)
}

func (sar SpanAssertionResult) MarshalJSON() ([]byte, error) {
sid := ""
if sar.SpanID != nil {
Expand Down

0 comments on commit 01ede97

Please sign in to comment.