Skip to content

Commit

Permalink
chore: added initial tests for json output
Browse files Browse the repository at this point in the history
Signed-off-by: Thomas Schuetz <thomas.schuetz@t-sc.eu>
  • Loading branch information
thschue committed Apr 5, 2023
1 parent db40734 commit 22e3166
Show file tree
Hide file tree
Showing 3 changed files with 126 additions and 1 deletion.
2 changes: 2 additions & 0 deletions go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@ require (
github.com/schollz/progressbar/v3 v3.13.1
github.com/spf13/cobra v1.7.0
github.com/spf13/viper v1.15.0
github.com/stretchr/testify v1.8.1
golang.org/x/term v0.7.0
k8s.io/api v0.26.3
k8s.io/apimachinery v0.26.3
Expand Down Expand Up @@ -46,6 +47,7 @@ require (
github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 // indirect
github.com/pelletier/go-toml/v2 v2.0.7 // indirect
github.com/pkg/errors v0.9.1 // indirect
github.com/pmezard/go-difflib v1.0.0 // indirect
github.com/rivo/uniseg v0.4.4 // indirect
github.com/spf13/afero v1.9.5 // indirect
github.com/spf13/cast v1.5.0 // indirect
Expand Down
2 changes: 1 addition & 1 deletion pkg/analysis/analysis.go
Original file line number Diff line number Diff line change
Expand Up @@ -103,7 +103,7 @@ func (a *Analysis) JsonOutput() ([]byte, error) {
}

result := JsonOutput{
Problems: len(a.Results),
Problems: problems,
Results: a.Results,
Status: status,
}
Expand Down
123 changes: 123 additions & 0 deletions pkg/analysis/analysis_test.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,123 @@
package analysis

import (
"encoding/json"
"fmt"
"github.com/k8sgpt-ai/k8sgpt/pkg/analyzer"
"github.com/stretchr/testify/require"
"testing"
)

func TestAnalysis_NoProblemJsonOutput(t *testing.T) {

analysis := Analysis{
Results: []analyzer.Result{},
Namespace: "default",
}

expected := JsonOutput{
Status: StateOK,
Problems: 0,
Results: []analyzer.Result{},
}

gotJson, err := analysis.JsonOutput()
if err != nil {
t.Error(err)
}

got := JsonOutput{}
err = json.Unmarshal(gotJson, &got)
if err != nil {
t.Error(err)
}

fmt.Println(got)
fmt.Println(expected)

require.Equal(t, got, expected)
}

func TestAnalysis_ProblemJsonOutput(t *testing.T) {
analysis := Analysis{
Results: []analyzer.Result{
{
"Deployment",
"test-deployment",
[]string{"test-problem"},
"test-solution",
"parent-resource"},
},
Namespace: "default",
}

expected := JsonOutput{
Status: StateProblemDetected,
Problems: 1,
Results: []analyzer.Result{
{"Deployment",
"test-deployment",
[]string{"test-problem"},
"test-solution",
"parent-resource"},
},
}

gotJson, err := analysis.JsonOutput()
if err != nil {
t.Error(err)
}

got := JsonOutput{}
err = json.Unmarshal(gotJson, &got)
if err != nil {
t.Error(err)
}

fmt.Println(got)
fmt.Println(expected)

require.Equal(t, got, expected)
}

func TestAnalysis_MultipleProblemJsonOutput(t *testing.T) {
analysis := Analysis{
Results: []analyzer.Result{
{
"Deployment",
"test-deployment",
[]string{"test-problem", "another-test-problem"},
"test-solution",
"parent-resource"},
},
Namespace: "default",
}

expected := JsonOutput{
Status: StateProblemDetected,
Problems: 2,
Results: []analyzer.Result{
{"Deployment",
"test-deployment",
[]string{"test-problem", "another-test-problem"},
"test-solution",
"parent-resource"},
},
}

gotJson, err := analysis.JsonOutput()
if err != nil {
t.Error(err)
}

got := JsonOutput{}
err = json.Unmarshal(gotJson, &got)
if err != nil {
t.Error(err)
}

fmt.Println(got)
fmt.Println(expected)

require.Equal(t, got, expected)
}

0 comments on commit 22e3166

Please sign in to comment.