diff --git a/pkg/docgen/generator.go b/pkg/docgen/generator.go index ee23058bf..9a00f1c8b 100644 --- a/pkg/docgen/generator.go +++ b/pkg/docgen/generator.go @@ -52,8 +52,6 @@ var ( ) type ( - Generator struct{} - Classification string DocumentData struct { @@ -84,11 +82,7 @@ const ( ClassificationSecret Classification = "SECRET" ) -func NewGenerator() *Generator { - return &Generator{} -} - -func (g *Generator) GenerateHTML(data DocumentData) ([]byte, error) { +func RenderHTML(data DocumentData) ([]byte, error) { data.Title = html.EscapeString(data.Title) data.Approver = html.EscapeString(data.Approver) data.Description = html.EscapeString(data.Description) diff --git a/pkg/docgen/generator_test.go b/pkg/docgen/generator_test.go index 0977ad2b7..ef79903d4 100644 --- a/pkg/docgen/generator_test.go +++ b/pkg/docgen/generator_test.go @@ -25,14 +25,7 @@ import ( "github.com/stretchr/testify/require" ) -func TestNewGenerator(t *testing.T) { - generator := NewGenerator() - assert.NotNil(t, generator) - assert.IsType(t, &Generator{}, generator) -} - -func TestGenerateHTML(t *testing.T) { - generator := NewGenerator() +func TestRenderHTML(t *testing.T) { now := time.Now() tests := []struct { @@ -166,7 +159,7 @@ func TestGenerateHTML(t *testing.T) { for _, tt := range tests { t.Run(tt.name, func(t *testing.T) { - result, err := generator.GenerateHTML(tt.data) + result, err := RenderHTML(tt.data) require.NoError(t, err) require.NotEmpty(t, result) @@ -194,16 +187,14 @@ func TestGenerateHTML(t *testing.T) { } } -func TestGenerateHTML_ErrorHandling(t *testing.T) { - generator := NewGenerator() - +func TestRenderHTML_ErrorHandling(t *testing.T) { // Test with data that should not cause errors data := DocumentData{ Title: "Valid Document", Content: "Valid content", } - result, err := generator.GenerateHTML(data) + result, err := RenderHTML(data) assert.NoError(t, err) assert.NotEmpty(t, result) } @@ -271,8 +262,6 @@ func TestClassificationConstants(t *testing.T) { } func TestHTMLEscaping(t *testing.T) { - generator := NewGenerator() - dangerousData := DocumentData{ Title: "", Approver: "User & ", @@ -286,7 +275,7 @@ func TestHTMLEscaping(t *testing.T) { }, } - result, err := generator.GenerateHTML(dangerousData) + result, err := RenderHTML(dangerousData) require.NoError(t, err) resultStr := string(result) @@ -300,8 +289,6 @@ func TestHTMLEscaping(t *testing.T) { } func TestMarkdownRendering(t *testing.T) { - generator := NewGenerator() - tests := []struct { name string markdown string @@ -341,7 +328,7 @@ func TestMarkdownRendering(t *testing.T) { Content: tt.markdown, } - result, err := generator.GenerateHTML(data) + result, err := RenderHTML(data) require.NoError(t, err) resultStr := string(result) @@ -353,7 +340,6 @@ func TestMarkdownRendering(t *testing.T) { } func TestDocumentVersionSignatureStates(t *testing.T) { - generator := NewGenerator() now := time.Now() states := []coredata.DocumentVersionSignatureState{ @@ -376,7 +362,7 @@ func TestDocumentVersionSignatureStates(t *testing.T) { }, } - result, err := generator.GenerateHTML(data) + result, err := RenderHTML(data) assert.NoError(t, err) assert.NotEmpty(t, result) }) @@ -384,8 +370,6 @@ func TestDocumentVersionSignatureStates(t *testing.T) { } func TestLargeContent(t *testing.T) { - generator := NewGenerator() - // Create a large markdown content var largeContent strings.Builder for i := 0; i < 1000; i++ { @@ -400,14 +384,13 @@ func TestLargeContent(t *testing.T) { Content: largeContent.String(), } - result, err := generator.GenerateHTML(data) + result, err := RenderHTML(data) assert.NoError(t, err) assert.NotEmpty(t, result) assert.True(t, len(result) > 10000) // Should be reasonably large } func BenchmarkGenerateHTML(b *testing.B) { - generator := NewGenerator() now := time.Now() data := DocumentData{ @@ -431,7 +414,7 @@ func BenchmarkGenerateHTML(b *testing.B) { b.ResetTimer() for i := 0; i < b.N; i++ { - _, err := generator.GenerateHTML(data) + _, err := RenderHTML(data) if err != nil { b.Fatal(err) }