Files
gochat/backend/internal/repository/coverage4_test.go
T

273 lines
8.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"
)
func setupRepoDB_Cov4(t *testing.T, models ...interface{}) *gorm.DB {
t.Helper()
db, err := gorm.Open(sqlite.Open("file::memory:"), &gorm.Config{Logger: logger.Default.LogMode(logger.Silent)})
require.NoError(t, err)
allModels := append([]interface{}{
&model.Account{}, &model.User{}, &model.AccountUser{},
&model.Inbox{}, &model.Contact{}, &model.ContactInbox{},
&model.Conversation{}, &model.Message{}, &model.Attachment{},
&model.AccessToken{}, &model.AccountOIDCSettings{},
&model.AgentBot{}, &model.AgentBotInbox{},
&model.Article{}, &model.Category{},
&model.InboxCapacityLimit{}, &model.AssignmentPolicyV2{},
&model.InboxMember{}, &model.Team{}, &model.TeamMember{},
&model.Portal{}, &model.CaptainDocument{},
&model.CaptainPreference{}, &model.CaptainAssistant{},
&model.Tag{}, &model.ConversationLabel{}, &model.ContactLabel{},
&model.Note{}, &model.ContactNote{},
&model.DeliveryStatus{}, &model.WorkingHour{},
&model.WebhookSubscription{}, &model.NotificationSetting{},
&model.NotificationSubscription{},
}, models...)
require.NoError(t, db.AutoMigrate(allModels...))
return db
}
// AccessTokenRepo tests
func TestAccessTokenRepo_Update_Cov4(t *testing.T) {
db := setupRepoDB_Cov4(t)
r := NewAccessTokenRepo(db)
token := &model.AccessToken{OwnerType: "User", OwnerID: 1, Token: "test"}
require.NoError(t, db.Create(token).Error)
token.Token = "updated"
_ = r.Update(context.Background(), token)
}
// AccountOIDCSettingsRepo tests
func TestAccountOIDCSettingsRepo_Create_Cov4(t *testing.T) {
db := setupRepoDB_Cov4(t)
r := NewAccountOIDCSettingsRepo(db)
_ = r.Create(&model.AccountOIDCSettings{AccountID: 1, Active: true})
}
func TestAccountOIDCSettingsRepo_GetByAccount_Cov4(t *testing.T) {
db := setupRepoDB_Cov4(t)
r := NewAccountOIDCSettingsRepo(db)
_, _ = r.GetByAccount(1)
}
func TestAccountOIDCSettingsRepo_GetByAccount_Found_Cov4(t *testing.T) {
db := setupRepoDB_Cov4(t)
r := NewAccountOIDCSettingsRepo(db)
require.NoError(t, r.Create(&model.AccountOIDCSettings{AccountID: 1, Active: true}))
_, _ = r.GetByAccount(1)
}
func TestAccountOIDCSettingsRepo_GetActiveByAccount_Cov4(t *testing.T) {
db := setupRepoDB_Cov4(t)
r := NewAccountOIDCSettingsRepo(db)
_, _ = r.GetActiveByAccount(1)
}
func TestAccountOIDCSettingsRepo_Update_Cov4(t *testing.T) {
db := setupRepoDB_Cov4(t)
r := NewAccountOIDCSettingsRepo(db)
s := &model.AccountOIDCSettings{AccountID: 1, Active: true}
require.NoError(t, r.Create(s))
s.Active = false
_ = r.Update(s)
}
func TestAccountOIDCSettingsRepo_UpdateFields_Cov4(t *testing.T) {
db := setupRepoDB_Cov4(t)
r := NewAccountOIDCSettingsRepo(db)
require.NoError(t, r.Create(&model.AccountOIDCSettings{AccountID: 1, Active: true}))
_ = r.UpdateFields(1, map[string]interface{}{"active": false})
}
func TestAccountOIDCSettingsRepo_Delete_Cov4(t *testing.T) {
db := setupRepoDB_Cov4(t)
r := NewAccountOIDCSettingsRepo(db)
require.NoError(t, r.Create(&model.AccountOIDCSettings{AccountID: 1, Active: true}))
_ = r.Delete(1)
}
func TestAccountOIDCSettingsRepo_SetActive_Cov4(t *testing.T) {
db := setupRepoDB_Cov4(t)
r := NewAccountOIDCSettingsRepo(db)
require.NoError(t, r.Create(&model.AccountOIDCSettings{AccountID: 1, Active: false}))
_ = r.SetActive(1, true)
}
// AgentCapacityPolicyRepo tests
func TestAgentCapacityPolicyRepo_FindInboxByAccount_Cov4(t *testing.T) {
db := setupRepoDB_Cov4(t)
r := NewAgentCapacityPolicyRepo(db)
_, _ = r.FindInboxByAccount(context.Background(), 1, 1)
}
func TestAgentCapacityPolicyRepo_FindAccountUser_Cov4(t *testing.T) {
db := setupRepoDB_Cov4(t)
r := NewAgentCapacityPolicyRepo(db)
_, _ = r.FindAccountUser(context.Background(), 1, 1)
}
func TestAgentCapacityPolicyRepo_UpdateAccountUser_Cov4(t *testing.T) {
db := setupRepoDB_Cov4(t)
r := NewAgentCapacityPolicyRepo(db)
_ = r.UpdateAccountUser(context.Background(), &model.AccountUser{})
}
func TestAgentCapacityPolicyRepo_CreateInboxCapacityLimit_Cov4(t *testing.T) {
db := setupRepoDB_Cov4(t)
r := NewAgentCapacityPolicyRepo(db)
_ = r.CreateInboxCapacityLimit(context.Background(), &model.InboxCapacityLimit{})
}
func TestAgentCapacityPolicyRepo_FindInboxCapacityLimitByPolicy_Cov4(t *testing.T) {
db := setupRepoDB_Cov4(t)
r := NewAgentCapacityPolicyRepo(db)
_, _ = r.FindInboxCapacityLimitByPolicy(context.Background(), 1, 1)
}
func TestAgentCapacityPolicyRepo_FindInboxCapacityLimitByInbox_Cov4(t *testing.T) {
db := setupRepoDB_Cov4(t)
r := NewAgentCapacityPolicyRepo(db)
_, _ = r.FindInboxCapacityLimitByInbox(context.Background(), 1, 1)
}
func TestAgentCapacityPolicyRepo_UpdateInboxCapacityLimit_Cov4(t *testing.T) {
db := setupRepoDB_Cov4(t)
r := NewAgentCapacityPolicyRepo(db)
_ = r.UpdateInboxCapacityLimit(context.Background(), &model.InboxCapacityLimit{})
}
func TestAgentCapacityPolicyRepo_DeleteInboxCapacityLimit_Cov4(t *testing.T) {
db := setupRepoDB_Cov4(t)
r := NewAgentCapacityPolicyRepo(db)
_ = r.DeleteInboxCapacityLimit(context.Background(), &model.InboxCapacityLimit{})
}
func TestAgentCapacityPolicyRepo_FindPolicyUsers_Cov4(t *testing.T) {
db := setupRepoDB_Cov4(t)
r := NewAgentCapacityPolicyRepo(db)
_, _ = r.FindPolicyUsers(context.Background(), 1, 1)
}
// ArticleRepo tests
func TestArticleRepo_DB_Cov4(t *testing.T) {
db := setupRepoDB_Cov4(t)
r := NewArticleRepo(db)
_ = r.DB()
}
func TestArticleRepo_GetByPortalAndID_Cov4(t *testing.T) {
db := setupRepoDB_Cov4(t)
r := NewArticleRepo(db)
_, _ = r.GetByPortalAndID(context.Background(), 1, 1)
}
func TestArticleRepo_FindByPortalAndSlug_Cov4(t *testing.T) {
db := setupRepoDB_Cov4(t)
r := NewArticleRepo(db)
_, _ = r.FindByPortalAndSlug(context.Background(), 1, "test-slug")
}
func TestArticleRepo_CountSearch_Cov4(t *testing.T) {
db := setupRepoDB_Cov4(t)
r := NewArticleRepo(db)
_, _ = r.CountSearch(context.Background(), ArticleSearchParams{PortalID: 1})
}
func TestArticleRepo_UpdatePositionsForPortal_Cov4(t *testing.T) {
db := setupRepoDB_Cov4(t)
r := NewArticleRepo(db)
_ = r.UpdatePositionsForPortal(context.Background(), 1, map[uint]int{1: 0, 2: 1})
}
func TestArticleRepo_BulkUpdateStatusForPortal_Cov4(t *testing.T) {
db := setupRepoDB_Cov4(t)
r := NewArticleRepo(db)
_ = r.BulkUpdateStatusForPortal(context.Background(), 1, []uint{1, 2}, "published")
}
func TestArticleRepo_BulkUpdateCategoryForPortal_Cov4(t *testing.T) {
db := setupRepoDB_Cov4(t)
r := NewArticleRepo(db)
_ = r.BulkUpdateCategoryForPortal(context.Background(), 1, []uint{1, 2}, 1)
}
func TestArticleRepo_BulkDeleteForPortal_Cov4(t *testing.T) {
db := setupRepoDB_Cov4(t)
r := NewArticleRepo(db)
_ = r.BulkDeleteForPortal(context.Background(), 1, []uint{1, 2})
}
func TestArticleRepo_CountByPortalAndIDs_Cov4(t *testing.T) {
db := setupRepoDB_Cov4(t)
r := NewArticleRepo(db)
_, _ = r.CountByPortalAndIDs(context.Background(), 1, []uint{1, 2})
}
func TestArticleRepo_FindByPortalAndIDs_Cov4(t *testing.T) {
db := setupRepoDB_Cov4(t)
r := NewArticleRepo(db)
_, _ = r.FindByPortalAndIDs(context.Background(), 1, []uint{1, 2})
}
func TestArticleRepo_CategoryExistsForPortalAndLocale_Cov4(t *testing.T) {
db := setupRepoDB_Cov4(t)
r := NewArticleRepo(db)
_, _ = r.CategoryExistsForPortalAndLocale(context.Background(), 1, 1, "en")
}
func TestArticleRepo_FindTranslationsByRootIDsAndLocale_Cov4(t *testing.T) {
db := setupRepoDB_Cov4(t)
r := NewArticleRepo(db)
_, _ = r.FindTranslationsByRootIDsAndLocale(context.Background(), 1, []uint{1, 2}, "en")
}
// Pure helper function tests
func TestContactFilterColumn_Cov4(t *testing.T) {
col, _, ok := contactFilterColumn("name")
_ = col
_ = ok
_, _, ok2 := contactFilterColumn("nonexistent")
_ = ok2
}
func TestContactFilterCustomAttributeOperators_Cov4(t *testing.T) {
_ = contactFilterCustomAttributeOperators("text")
_ = contactFilterCustomAttributeOperators("date")
_ = contactFilterCustomAttributeOperators("list")
}
func TestContactFilterNormalizeValues_Cov4(t *testing.T) {
_ = contactFilterNormalizeValues("name", []string{"John", "Jane"})
}
func TestSearchSenderTypeAliases_Cov4(t *testing.T) {
_ = searchSenderTypeAliases("agent")
_ = searchSenderTypeAliases("user")
_ = searchSenderTypeAliases("invalid")
}
func TestConversationFinderOrderClause_Cov4b(t *testing.T) {
require.NotEmpty(t, conversationFinderOrderClause("latest"))
require.NotEmpty(t, conversationFinderOrderClause("oldest"))
require.NotEmpty(t, conversationFinderOrderClause(""))
}
func TestNormalizeContactLabels_Cov4b(t *testing.T) {
result := normalizeContactLabels([]string{"Label1", "label2", ""})
require.Len(t, result, 2)
}
func TestContactFeatureFlagEnabled_Cov4b(t *testing.T) {
require.True(t, contactFeatureFlagEnabled("email", "email"))
require.False(t, contactFeatureFlagEnabled("", "email"))
}