From 9fc5153b85b899a36debafe8319a3b079f790eab Mon Sep 17 00:00:00 2001 From: sabhi128 Date: Sat, 29 Aug 2026 14:22:14 +0500 Subject: [PATCH 1/2] test(render): add unit tests for FinetuneHandlerImpl --- internal/handlers/render/finetune_test.go | 102 ++++++++++++++++++++++ 1 file changed, 102 insertions(+) create mode 100644 internal/handlers/render/finetune_test.go diff --git a/internal/handlers/render/finetune_test.go b/internal/handlers/render/finetune_test.go new file mode 100644 index 000000000..9ddc29a92 --- /dev/null +++ b/internal/handlers/render/finetune_test.go @@ -0,0 +1,102 @@ +package renderHandlers + +import ( + "net/http" + "net/http/httptest" + "testing" + + "github.com/gin-gonic/gin" + "github.com/stretchr/testify/mock" + mockRenderBase "opencsg.com/portal/_mocks/opencsg.com/portal/handlers/render" + "opencsg.com/portal/pkg/types" +) + +func TestFinetuneHandlerImpl_List(t *testing.T) { + mockBase := mockRenderBase.NewMockRenderBase(t) + + mockBase.EXPECT(). + RenderTemplate(mock.Anything, "finetunes_index", mock.Anything). + Return() + + w := httptest.NewRecorder() + ctx, _ := gin.CreateTestContext(w) + ctx.Set("Config", types.GlobalConfig{}) + + req, _ := http.NewRequest("GET", "/finetunes", nil) + ctx.Request = req + + handler := &FinetuneHandlerImpl{ + BaseHandlerImpl{ + resourceType: "finetunes", + renderBaseInstance: mockBase, + }, + } + + handler.List(ctx) +} + +func TestFinetuneHandlerImpl_Detail(t *testing.T) { + mockBase := mockRenderBase.NewMockRenderBase(t) + + mockBase.EXPECT(). + RenderTemplate(mock.Anything, "finetunes_show", mock.MatchedBy(func(data map[string]interface{}) bool { + return data["namespace"] == "test-namespace" && + data["modelName"] == "test-model" && + data["finetuneId"] == "test-finetune-id" && + data["finetuneName"] == "test-finetune-name" && + data["actionName"] == "show" && + data["defaultTab"] == "summary" + })). + Return() + + w := httptest.NewRecorder() + ctx, _ := gin.CreateTestContext(w) + ctx.Set("Config", types.GlobalConfig{}) + + // Mock route parameters in Gin context + ctx.Params = gin.Params{ + {Key: "namespace", Value: "test-namespace"}, + {Key: "model_name", Value: "test-model"}, + {Key: "finetune_id", Value: "test-finetune-id"}, + {Key: "finetune_name", Value: "test-finetune-name"}, + } + + req, _ := http.NewRequest("GET", "/finetunes/test-namespace/test-model/test-finetune-id/test-finetune-name", nil) + ctx.Request = req + + handler := &FinetuneHandlerImpl{ + BaseHandlerImpl{ + resourceType: "finetunes", + renderBaseInstance: mockBase, + }, + } + + handler.Detail(ctx) +} + +func TestFinetuneHandlerImpl_New(t *testing.T) { + mockBase := mockRenderBase.NewMockRenderBase(t) + + mockBase.EXPECT(). + RenderTemplate(mock.Anything, "finetunes_new", mock.MatchedBy(func(data map[string]interface{}) bool { + licenses, ok := data["licenses"].(string) + return ok && licenses == DefaultLicensesJSON + })). + Return() + + w := httptest.NewRecorder() + ctx, _ := gin.CreateTestContext(w) + ctx.Set("Config", types.GlobalConfig{}) + + req, _ := http.NewRequest("GET", "/finetunes/new", nil) + ctx.Request = req + + handler := &FinetuneHandlerImpl{ + BaseHandlerImpl{ + resourceType: "finetunes", + renderBaseInstance: mockBase, + }, + } + + handler.New(ctx) +} From f319dc43850bd3f4d6af4483c682bd1b8bfe4c42 Mon Sep 17 00:00:00 2001 From: sabhi128 Date: Sat, 29 Aug 2026 14:33:00 +0500 Subject: [PATCH 2/2] chore(render): add assert package and w.Code assertions back for consistency --- internal/handlers/render/finetune_test.go | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/internal/handlers/render/finetune_test.go b/internal/handlers/render/finetune_test.go index 9ddc29a92..33f0cb125 100644 --- a/internal/handlers/render/finetune_test.go +++ b/internal/handlers/render/finetune_test.go @@ -6,6 +6,7 @@ import ( "testing" "github.com/gin-gonic/gin" + "github.com/stretchr/testify/assert" "github.com/stretchr/testify/mock" mockRenderBase "opencsg.com/portal/_mocks/opencsg.com/portal/handlers/render" "opencsg.com/portal/pkg/types" @@ -33,6 +34,8 @@ func TestFinetuneHandlerImpl_List(t *testing.T) { } handler.List(ctx) + + assert.Equal(t, http.StatusOK, w.Code) } func TestFinetuneHandlerImpl_Detail(t *testing.T) { @@ -72,6 +75,8 @@ func TestFinetuneHandlerImpl_Detail(t *testing.T) { } handler.Detail(ctx) + + assert.Equal(t, http.StatusOK, w.Code) } func TestFinetuneHandlerImpl_New(t *testing.T) { @@ -99,4 +104,6 @@ func TestFinetuneHandlerImpl_New(t *testing.T) { } handler.New(ctx) + + assert.Equal(t, http.StatusOK, w.Code) }