package widget import ( "net/http" "net/http/httptest" "testing" "github.com/gin-gonic/gin" "github.com/gochat/gochat/internal/service" "github.com/stretchr/testify/assert" ) func TestWidgetEnabledFeatures_Custom_Cov5(t *testing.T) { config := service.WebWidgetConfig{SelectedFeatureFlags: []string{"custom_flag"}} result := widgetEnabledFeatures(config) assert.Equal(t, []string{"custom_flag"}, result) } func TestWidgetEnabledFeatures_Default_Cov5(t *testing.T) { config := service.WebWidgetConfig{} result := widgetEnabledFeatures(config) assert.Equal(t, []string{"attachments", "emoji_picker", "end_conversation"}, result) } func TestWidgetEnabledFeatures_Empty_Cov5(t *testing.T) { config := service.WebWidgetConfig{SelectedFeatureFlags: []string{}} result := widgetEnabledFeatures(config) assert.Equal(t, []string{"attachments", "emoji_picker", "end_conversation"}, result) } func TestListCampaigns_NoToken_Cov5(t *testing.T) { gin.SetMode(gin.TestMode) w := httptest.NewRecorder() c, _ := gin.CreateTestContext(w) c.Request = httptest.NewRequest("GET", "/widget/campaigns", nil) h := NewHandler(nil) h.ListCampaigns(c) assert.Equal(t, http.StatusBadRequest, w.Code) } func TestListCampaigns_WithToken_NilService_Cov5(t *testing.T) { gin.SetMode(gin.TestMode) w := httptest.NewRecorder() c, _ := gin.CreateTestContext(w) c.Request = httptest.NewRequest("GET", "/widget/campaigns?website_token=test", nil) h := NewHandler(nil) defer func() { _ = recover() }() h.ListCampaigns(c) } func TestGetFileUploadStatus_NoToken_Cov5(t *testing.T) { gin.SetMode(gin.TestMode) w := httptest.NewRecorder() c, _ := gin.CreateTestContext(w) c.Request = httptest.NewRequest("GET", "/widget/file_upload/status", nil) h := NewHandler(nil) defer func() { _ = recover() }() h.GetFileUploadStatus(c) } func TestGetThemeConfig_NoToken_Cov5(t *testing.T) { gin.SetMode(gin.TestMode) w := httptest.NewRecorder() c, _ := gin.CreateTestContext(w) c.Request = httptest.NewRequest("GET", "/widget/theme_config", nil) h := NewHandler(nil) defer func() { _ = recover() }() h.GetThemeConfig(c) } func TestGetConversations_NoToken_Cov5(t *testing.T) { gin.SetMode(gin.TestMode) w := httptest.NewRecorder() c, _ := gin.CreateTestContext(w) c.Request = httptest.NewRequest("GET", "/widget/conversations", nil) h := NewHandler(nil) defer func() { _ = recover() }() h.GetConversations(c) } func TestBindWidgetSendMessageRequest_Empty_Cov5(t *testing.T) { gin.SetMode(gin.TestMode) w := httptest.NewRecorder() c, _ := gin.CreateTestContext(w) c.Request = httptest.NewRequest("POST", "/widget/messages", nil) defer func() { _ = recover() }() if _, err := bindWidgetSendMessageRequest(c); err == nil { t.Fatal("expected empty request body to fail") } }