Files

187 lines
6.8 KiB
Go

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()
}