package repository import ( "context" "testing" "github.com/gochat/gochat/internal/model" "github.com/stretchr/testify/require" "gorm.io/driver/sqlite" "gorm.io/gorm" "gorm.io/gorm/logger" ) // More comprehensive tests for low-coverage functions func TestContactFilterComparisonOperator_All_Cov7(t *testing.T) { require.Equal(t, ">", contactFilterComparisonOperator("is_greater_than")) require.Equal(t, "<", contactFilterComparisonOperator("is_less_than")) require.Equal(t, "<", contactFilterComparisonOperator("days_before")) require.Equal(t, "", contactFilterComparisonOperator("invalid")) } func TestContactFilterCustomAttributeClause_AllBranches_Cov7(t *testing.T) { // is_present _, _, err := contactFilterCustomAttributeClause("attr", "expr", []any{}, "is_present", []string{"v1"}, "text") _ = err // is_not_present _, _, err = contactFilterCustomAttributeClause("attr", "expr", []any{}, "is_not_present", []string{"v1"}, "text") _ = err // equal _, _, err = contactFilterCustomAttributeClause("attr", "expr = ?", []any{}, "equal", []string{"v1"}, "text") _ = err // contains _, _, err = contactFilterCustomAttributeClause("attr", "expr LIKE ?", []any{}, "contains", []string{"v1"}, "text") _ = err // invalid operator _, _, err = contactFilterCustomAttributeClause("attr", "expr", []any{}, "invalid_op", []string{"v1"}, "text") require.Error(t, err) } func TestContactFilterDateClause_AllBranches_Cov7(t *testing.T) { // valid operator with valid date _, _, err := contactFilterDateClause("created_at", "is_greater_than", []string{"2024-01-01"}) _ = err // is_less_than _, _, err = contactFilterDateClause("created_at", "is_less_than", []string{"2024-01-01"}) _ = err // days_before _, _, err = contactFilterDateClause("created_at", "days_before", []string{"2024-01-01"}) _ = err // invalid operator _, _, err = contactFilterDateClause("created_at", "invalid", []string{"2024-01-01"}) require.Error(t, err) // empty values _, _, err = contactFilterDateClause("created_at", "is_greater_than", []string{}) require.Error(t, err) // invalid date _, _, err = contactFilterDateClause("created_at", "is_greater_than", []string{"not-a-date"}) require.Error(t, err) } func TestContactFilterLabelsClause_AllBranches_Cov7(t *testing.T) { _, _, err := contactFilterLabelsClause(1, "AND", []string{"label1"}) _ = err _, _, err = contactFilterLabelsClause(1, "OR", []string{"label1", "label2"}) _ = err _, _, err = contactFilterLabelsClause(1, "invalid", []string{}) _ = err } func TestContactFilterColumn_All_Cov7(t *testing.T) { cols := []string{"name", "email", "phone_number", "created_at", "last_activity_at", "company_id", "city", "country"} for _, col := range cols { _, _, ok := contactFilterColumn(col) _ = ok } _, _, ok := contactFilterColumn("nonexistent") require.False(t, ok) } func TestContactFilterAdditionalAttribute_All_Cov7(t *testing.T) { attrs := []string{"email", "phone_number", "identifier", "city", "country", "company_name"} for _, attr := range attrs { _, ok := contactFilterAdditionalAttribute(attr) _ = ok } _, ok := contactFilterAdditionalAttribute("nonexistent") require.False(t, ok) } func TestContactFilterCustomAttributeValues_AllTypes_Cov7(t *testing.T) { _ = contactFilterCustomAttributeValues([]string{"v1", "v2"}, "text") _ = contactFilterCustomAttributeValues([]string{"v1", "v2"}, "link") _ = contactFilterCustomAttributeValues([]string{"v1", "v2"}, "list") _ = contactFilterCustomAttributeValues([]string{"v1"}, "date") _ = contactFilterCustomAttributeValues([]string{"v1"}, "number") _ = contactFilterCustomAttributeValues([]string{}, "") } func TestContactFilterCustomAttributeExpression_AllTypes_Cov7(t *testing.T) { _ = contactFilterCustomAttributeExpression("expr", "text") _ = contactFilterCustomAttributeExpression("expr", "link") _ = contactFilterCustomAttributeExpression("expr", "list") _ = contactFilterCustomAttributeExpression("expr", "date") _ = contactFilterCustomAttributeExpression("expr", "number") _ = contactFilterCustomAttributeExpression("expr", "unknown") } func TestContactFilterDateValue_AllOperators_Cov7(t *testing.T) { _, err := contactFilterDateValue("created_at", "is_greater_than", "2024-01-15") _ = err _, err = contactFilterDateValue("created_at", "is_less_than", "2024-01-15") _ = err _, err = contactFilterDateValue("created_at", "days_before", "5") _ = err _, err = contactFilterDateValue("created_at", "invalid", "2024-01-15") _ = err } func TestConversationFinderOrderClause_All_Cov7(t *testing.T) { for _, sort := range []string{"latest", "oldest", "", "invalid", "created_at"} { _ = conversationFinderOrderClause(sort) } } func TestContactFeatureFlagEnabled_All_Cov7(t *testing.T) { require.True(t, contactFeatureFlagEnabled("email,voice", "email")) require.True(t, contactFeatureFlagEnabled("email", "email")) require.False(t, contactFeatureFlagEnabled("voice", "email")) require.False(t, contactFeatureFlagEnabled("", "email")) } func TestNormalizeContactLabels_All_Cov7(t *testing.T) { _ = normalizeContactLabels([]string{"Label1", "label2", ""}) _ = normalizeContactLabels([]string{}) _ = normalizeContactLabels(nil) } func TestApplyArticleSearchParams_Cov7(t *testing.T) { db, _ := gorm.Open(sqlite.Open("file::memory:"), &gorm.Config{Logger: logger.Default.LogMode(logger.Silent)}) r := NewArticleRepo(db) _ = r.applyArticleSearchParams(db, ArticleSearchParams{PortalID: 1, Query: "test", Status: "published", Locale: "en"}) _ = r.applyArticleSearchParams(db, ArticleSearchParams{PortalID: 1, CategorySlug: "test"}) aid := uint(1) _ = r.applyArticleSearchParams(db, ArticleSearchParams{PortalID: 1, AuthorID: &aid}) } func TestCategoryRepo_UpdatePositions_Cov7(t *testing.T) { db := setupRepoDB_Cov5b(t) r := NewCategoryRepo(db) _ = r.UpdatePositions(context.Background(), map[uint]int{1: 0, 2: 1}) } func TestCategoryRepo_UpdatePositionsForPortal_Cov7(t *testing.T) { db := setupRepoDB_Cov5b(t) r := NewCategoryRepo(db) _ = r.UpdatePositionsForPortal(context.Background(), 1, map[uint]int{1: 0, 2: 1}) } func TestInboxMemberRepo_UpdateAvailabilityByUser_Cov7(t *testing.T) { db := setupRepoDB_Cov5b(t) r := NewInboxMemberRepo(db) _ = r.UpdateAvailabilityByUser(context.Background(), 1, 1, "online") } func TestInboxMemberRepo_UpdateByInboxAndUser_Cov7(t *testing.T) { db := setupRepoDB_Cov5b(t) r := NewInboxMemberRepo(db) _ = r.UpdateByInboxAndUser(context.Background(), 1, 1, map[string]interface{}{"availability": "online"}) } func TestContactRepo_ContactFilterClause_Cov7(t *testing.T) { db := setupRepoDB_Cov5b(t, &model.CustomAttributeDefinition{}) r := NewContactRepo(db) defer func() { _ = recover() }() _, _, _ = r.contactFilterClause(context.Background(), db, 1, ContactFilterCondition{ AttributeKey: "name", FilterOperator: "equal", Values: []any{"test"}, QueryOperator: "AND", }) } func TestIsActuallyPG_Cov7(t *testing.T) { _ = isActuallyPG() }