Skip to content

Commit

Permalink
improve coverage (#412)
Browse files Browse the repository at this point in the history
  • Loading branch information
Reuven Harrison authored Nov 1, 2023
1 parent 696a950 commit c582668
Show file tree
Hide file tree
Showing 16 changed files with 461 additions and 95 deletions.
23 changes: 1 addition & 22 deletions formatters/format_githubactions.go
Original file line number Diff line number Diff line change
Expand Up @@ -7,9 +7,7 @@ import (
"strconv"
"strings"

"github.com/getkin/kin-openapi/openapi3"
"github.com/tufin/oasdiff/checker"
"github.com/tufin/oasdiff/diff"
)

var githubActionsSeverity = map[checker.Level]string{
Expand All @@ -19,14 +17,7 @@ var githubActionsSeverity = map[checker.Level]string{
}

type GitHubActionsFormatter struct {
}

func (f GitHubActionsFormatter) RenderDiff(*diff.Diff, RenderOpts) ([]byte, error) {
return notImplemented()
}

func (f GitHubActionsFormatter) RenderSummary(*diff.Diff, RenderOpts) ([]byte, error) {
return notImplemented()
notImplementedFormatter
}

func (f GitHubActionsFormatter) RenderBreakingChanges(changes checker.Changes, opts RenderOpts) ([]byte, error) {
Expand Down Expand Up @@ -72,18 +63,6 @@ func (f GitHubActionsFormatter) RenderBreakingChanges(changes checker.Changes, o
return buf.Bytes(), nil
}

func (f GitHubActionsFormatter) RenderChangelog(checker.Changes, RenderOpts) ([]byte, error) {
return notImplemented()
}

func (f GitHubActionsFormatter) RenderChecks([]Check, RenderOpts) ([]byte, error) {
return notImplemented()
}

func (f GitHubActionsFormatter) RenderFlatten(*openapi3.T, RenderOpts) ([]byte, error) {
return notImplemented()
}

func (f GitHubActionsFormatter) SupportedOutputs() []Output {
return []Output{OutputBreaking}
}
Expand Down
43 changes: 32 additions & 11 deletions formatters/format_githubactions_test.go
Original file line number Diff line number Diff line change
@@ -1,16 +1,17 @@
package formatters
package formatters_test

import (
"os"
"testing"

"github.com/stretchr/testify/assert"
"github.com/tufin/oasdiff/checker"
"github.com/tufin/oasdiff/formatters"
)

func TestGitHubActionsFormatter_RenderBreakingChanges_OneFailure(t *testing.T) {
// prepare formatter and test changes
formatter := GitHubActionsFormatter{}
formatter := formatters.GitHubActionsFormatter{}
testChanges := checker.Changes{
checker.ComponentChange{
Id: "change_id",
Expand All @@ -20,15 +21,15 @@ func TestGitHubActionsFormatter_RenderBreakingChanges_OneFailure(t *testing.T) {
}

// check output
output, err := formatter.RenderBreakingChanges(testChanges, RenderOpts{})
output, err := formatter.RenderBreakingChanges(testChanges, formatters.RenderOpts{})
assert.NoError(t, err)
expectedOutput := "::error title=change_id::This is a breaking change.\n"
assert.Equal(t, expectedOutput, string(output))
}

func TestGitHubActionsFormatter_RenderBreakingChanges_MultipleLevels(t *testing.T) {
// prepare formatter and test changes
formatter := GitHubActionsFormatter{}
formatter := formatters.GitHubActionsFormatter{}
testChanges := checker.Changes{
checker.ComponentChange{
Id: "change_id",
Expand All @@ -48,15 +49,15 @@ func TestGitHubActionsFormatter_RenderBreakingChanges_MultipleLevels(t *testing.
}

// check output
output, err := formatter.RenderBreakingChanges(testChanges, RenderOpts{})
output, err := formatter.RenderBreakingChanges(testChanges, formatters.RenderOpts{})
assert.NoError(t, err)
expectedOutput := "::error title=change_id::This is a breaking change.\n::warning title=change_id::This is a warning.\n::notice title=change_id::This is a notice.\n"
assert.Equal(t, expectedOutput, string(output))
}

func TestGitHubActionsFormatter_RenderBreakingChanges_MultilineText(t *testing.T) {
// prepare formatter and test changes
formatter := GitHubActionsFormatter{}
formatter := formatters.GitHubActionsFormatter{}
testChanges := checker.Changes{
checker.ComponentChange{
Id: "change_id",
Expand All @@ -66,15 +67,15 @@ func TestGitHubActionsFormatter_RenderBreakingChanges_MultilineText(t *testing.T
}

// check output
output, err := formatter.RenderBreakingChanges(testChanges, RenderOpts{})
output, err := formatter.RenderBreakingChanges(testChanges, formatters.RenderOpts{})
assert.NoError(t, err)
expectedOutput := "::error title=change_id::This is a breaking change.%0AThis is a second line.\n"
assert.Equal(t, expectedOutput, string(output))
}

func TestGitHubActionsFormatter_RenderBreakingChanges_FileLocation(t *testing.T) {
// prepare formatter and test changes
formatter := GitHubActionsFormatter{}
formatter := formatters.GitHubActionsFormatter{}
testChanges := checker.Changes{
checker.ComponentChange{
Id: "change_id",
Expand All @@ -89,7 +90,7 @@ func TestGitHubActionsFormatter_RenderBreakingChanges_FileLocation(t *testing.T)
}

// check output
output, err := formatter.RenderBreakingChanges(testChanges, RenderOpts{})
output, err := formatter.RenderBreakingChanges(testChanges, formatters.RenderOpts{})
assert.NoError(t, err)
expectedOutput := "::error title=change_id,file=openapi.json,col=6,endColumn=11,line=21,endLine=26::This is a breaking change.\n"
assert.Equal(t, expectedOutput, string(output))
Expand All @@ -103,7 +104,7 @@ func TestGitHubActionsFormatter_RenderBreakingChanges_JobOutputParameters(t *tes
_ = os.Setenv("GITHUB_OUTPUT", tempFile.Name())

// prepare formatter and test changes
formatter := GitHubActionsFormatter{}
formatter := formatters.GitHubActionsFormatter{}
testChanges := checker.Changes{
checker.ComponentChange{
Id: "change_id",
Expand All @@ -128,7 +129,7 @@ func TestGitHubActionsFormatter_RenderBreakingChanges_JobOutputParameters(t *tes
}

// check output
output, err := formatter.RenderBreakingChanges(testChanges, RenderOpts{})
output, err := formatter.RenderBreakingChanges(testChanges, formatters.RenderOpts{})
assert.NoError(t, err)
_ = os.Unsetenv("GITHUB_OUTPUT")
expectedOutput := "::error title=change_id::This is a breaking change.\n::error title=change_id::This is a second breaking change.\n::warning title=change_id::This is a warning.\n::notice title=change_id::This is a notice.\n"
Expand All @@ -141,3 +142,23 @@ func TestGitHubActionsFormatter_RenderBreakingChanges_JobOutputParameters(t *tes
assert.Contains(t, string(outputFile), "warning_count=1\n")
assert.Contains(t, string(outputFile), "info_count=1\n")
}

func TestGitHubActionsFormatterr_NotImplemented(t *testing.T) {
formatter := formatters.GitHubActionsFormatter{}

var err error
_, err = formatter.RenderDiff(nil, formatters.RenderOpts{})
assert.Error(t, err)

_, err = formatter.RenderSummary(nil, formatters.RenderOpts{})
assert.Error(t, err)

_, err = formatter.RenderChangelog(nil, formatters.RenderOpts{})
assert.Error(t, err)

_, err = formatter.RenderChecks(nil, formatters.RenderOpts{})
assert.Error(t, err)

_, err = formatter.RenderFlatten(nil, formatters.RenderOpts{})
assert.Error(t, err)
}
23 changes: 1 addition & 22 deletions formatters/format_html.go
Original file line number Diff line number Diff line change
Expand Up @@ -3,13 +3,12 @@ package formatters
import (
"fmt"

"github.com/getkin/kin-openapi/openapi3"
"github.com/tufin/oasdiff/checker"
"github.com/tufin/oasdiff/diff"
"github.com/tufin/oasdiff/report"
)

type HTMLFormatter struct {
notImplementedFormatter
}

func (f HTMLFormatter) RenderDiff(diff *diff.Diff, opts RenderOpts) ([]byte, error) {
Expand All @@ -21,26 +20,6 @@ func (f HTMLFormatter) RenderDiff(diff *diff.Diff, opts RenderOpts) ([]byte, err
return []byte(reportAsString), nil
}

func (f HTMLFormatter) RenderSummary(*diff.Diff, RenderOpts) ([]byte, error) {
return notImplemented()
}

func (f HTMLFormatter) RenderBreakingChanges(checker.Changes, RenderOpts) ([]byte, error) {
return notImplemented()
}

func (f HTMLFormatter) RenderChangelog(checker.Changes, RenderOpts) ([]byte, error) {
return notImplemented()
}

func (f HTMLFormatter) RenderChecks([]Check, RenderOpts) ([]byte, error) {
return notImplemented()
}

func (f HTMLFormatter) RenderFlatten(*openapi3.T, RenderOpts) ([]byte, error) {
return notImplemented()
}

func (f HTMLFormatter) SupportedOutputs() []Output {
return []Output{OutputDiff}
}
39 changes: 39 additions & 0 deletions formatters/format_html_test.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
package formatters_test

import (
"testing"

"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
"github.com/tufin/oasdiff/checker"
"github.com/tufin/oasdiff/formatters"
)

func TestHtmlFormatter_RenderDiff(t *testing.T) {
formatter := formatters.HTMLFormatter{}

out, err := formatter.RenderDiff(nil, formatters.RenderOpts{})
require.NoError(t, err)
require.Equal(t, string(out), "<p>No changes</p>\n")

}

func TestHtmlFormatter_NotImplemented(t *testing.T) {
formatter := formatters.HTMLFormatter{}

var err error
_, err = formatter.RenderBreakingChanges(checker.Changes{}, formatters.RenderOpts{})
assert.Error(t, err)

_, err = formatter.RenderChangelog(checker.Changes{}, formatters.RenderOpts{})
assert.Error(t, err)

_, err = formatter.RenderChecks([]formatters.Check{}, formatters.RenderOpts{})
assert.Error(t, err)

_, err = formatter.RenderFlatten(nil, formatters.RenderOpts{})
assert.Error(t, err)

_, err = formatter.RenderSummary(nil, formatters.RenderOpts{})
assert.Error(t, err)
}
82 changes: 82 additions & 0 deletions formatters/format_json_test.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,82 @@
package formatters_test

import (
"testing"

"github.com/stretchr/testify/require"
"github.com/tufin/oasdiff/checker"
"github.com/tufin/oasdiff/formatters"
)

func TestJsonFormatter_RenderBreakingChanges(t *testing.T) {
formatter := formatters.JSONFormatter{}

testChanges := checker.Changes{
checker.ComponentChange{
Id: "change_id",
Text: "This is a breaking change.",
Level: checker.ERR,
},
}

out, err := formatter.RenderBreakingChanges(testChanges, formatters.RenderOpts{})
require.NoError(t, err)
require.Equal(t, string(out), "[{\"id\":\"change_id\",\"text\":\"This is a breaking change.\",\"level\":3}]")
}

func TestJsonFormatter_RenderChangelog(t *testing.T) {
formatter := formatters.JSONFormatter{}

testChanges := checker.Changes{
checker.ComponentChange{
Id: "change_id",
Text: "This is a breaking change.",
Level: checker.ERR,
},
}

out, err := formatter.RenderChangelog(testChanges, formatters.RenderOpts{})
require.NoError(t, err)
require.Equal(t, string(out), "[{\"id\":\"change_id\",\"text\":\"This is a breaking change.\",\"level\":3}]")
}

func TestJsonFormatter_RenderChecks(t *testing.T) {
formatter := formatters.JSONFormatter{}

checks := []formatters.Check{
{
Id: "change_id",
Level: "info",
Description: "This is a breaking change.",
Required: true,
},
}

out, err := formatter.RenderChecks(checks, formatters.RenderOpts{})
require.NoError(t, err)
require.Equal(t, string(out), "[{\"id\":\"change_id\",\"level\":\"info\",\"description\":\"This is a breaking change.\",\"reuired\":true}]")
}

func TestJsonFormatter_RenderDiff(t *testing.T) {
formatter := formatters.JSONFormatter{}

out, err := formatter.RenderDiff(nil, formatters.RenderOpts{})
require.NoError(t, err)
require.Empty(t, string(out))
}

func TestJsonFormatter_RenderFlatten(t *testing.T) {
formatter := formatters.JSONFormatter{}

out, err := formatter.RenderFlatten(nil, formatters.RenderOpts{})
require.NoError(t, err)
require.Empty(t, string(out))
}

func TestJsonFormatter_RenderSummary(t *testing.T) {
formatter := formatters.JSONFormatter{}

out, err := formatter.RenderSummary(nil, formatters.RenderOpts{})
require.NoError(t, err)
require.Equal(t, string(out), `{"diff":false}`)
}
23 changes: 1 addition & 22 deletions formatters/format_junit.go
Original file line number Diff line number Diff line change
Expand Up @@ -4,9 +4,7 @@ import (
"encoding/xml"
"fmt"

"github.com/getkin/kin-openapi/openapi3"
"github.com/tufin/oasdiff/checker"
"github.com/tufin/oasdiff/diff"
)

type JUnitTestSuites struct {
Expand Down Expand Up @@ -38,14 +36,7 @@ type JUnitFailure struct {
}

type JUnitFormatter struct {
}

func (f JUnitFormatter) RenderDiff(*diff.Diff, RenderOpts) ([]byte, error) {
return notImplemented()
}

func (f JUnitFormatter) RenderSummary(*diff.Diff, RenderOpts) ([]byte, error) {
return notImplemented()
notImplementedFormatter
}

func (f JUnitFormatter) RenderBreakingChanges(changes checker.Changes, opts RenderOpts) ([]byte, error) {
Expand Down Expand Up @@ -92,18 +83,6 @@ func (f JUnitFormatter) RenderBreakingChanges(changes checker.Changes, opts Rend
return []byte(xml.Header + string(output)), nil
}

func (f JUnitFormatter) RenderChangelog(checker.Changes, RenderOpts) ([]byte, error) {
return notImplemented()
}

func (f JUnitFormatter) RenderChecks([]Check, RenderOpts) ([]byte, error) {
return notImplemented()
}

func (f JUnitFormatter) RenderFlatten(*openapi3.T, RenderOpts) ([]byte, error) {
return notImplemented()
}

func (f JUnitFormatter) SupportedOutputs() []Output {
return []Output{OutputBreaking}
}
Loading

0 comments on commit c582668

Please sign in to comment.