package sonar import ( "os" "testing" "github.com/stretchr/testify/assert" "github.com/stretchr/testify/mock" ) var fileContent string var fileName string func writeToFileMock(f string, d []byte, p os.FileMode) error { fileContent = string(d) fileName = f return nil } func TestWriteReport(t *testing.T) { // init const expected = `{"serverUrl":"https://sonarcloud.io","projectKey":"Piper-Validation/Golang","taskId":"mock.Anything","numberOfIssues":{"blocker":0,"critical":1,"major":2,"minor":3,"info":4},"coverage":{"coverage":13.7,"lineCoverage":37.1,"linesToCover":123,"uncoveredLines":23,"branchCoverage":42,"branchesToCover":30,"uncoveredBranches":3},"linesOfCode":{"total":327,"languageDistribution":[{"languageKey":"java","linesOfCode":327}]}}` testData := ReportData{ ServerURL: "https://sonarcloud.io", ProjectKey: "Piper-Validation/Golang", TaskID: mock.Anything, NumberOfIssues: Issues{ Critical: 1, Major: 2, Minor: 3, Info: 4, }, Coverage: &SonarCoverage{ Coverage: 13.7, BranchCoverage: 42, LineCoverage: 37.1, LinesToCover: 123, UncoveredLines: 23, BranchesToCover: 30, UncoveredBranches: 3, }, LinesOfCode: &SonarLinesOfCode{ Total: 327, LanguageDistribution: []SonarLanguageDistribution{{LanguageKey: "java", LinesOfCode: 327}}, }, } // test err := WriteReport(testData, "", writeToFileMock) // assert assert.NoError(t, err) assert.Equal(t, expected, fileContent) assert.Equal(t, reportFileName, fileName) }