package service import ( "context" "testing" "github.com/gochat/gochat/internal/model" "github.com/gochat/gochat/internal/repository" "github.com/stretchr/testify/require" "gorm.io/driver/sqlite" "gorm.io/gorm" ) func TestAssignableAgentsExcludeInactiveUsers(t *testing.T) { db, err := gorm.Open(sqlite.Open("file:assignable-active?mode=memory&cache=shared"), &gorm.Config{}) require.NoError(t, err) require.NoError(t, db.AutoMigrate(&model.Account{}, &model.User{}, &model.AccountUser{})) account := model.Account{Name: "account"} require.NoError(t, db.Create(&account).Error) active := model.User{Name: "Active", Email: "active@example.com", Active: true} inactive := model.User{Name: "Inactive", Email: "inactive@example.com", Active: true} require.NoError(t, db.Create(&active).Error) require.NoError(t, db.Create(&inactive).Error) require.NoError(t, db.Model(&inactive).Update("active", false).Error) require.NoError(t, db.Create(&model.AccountUser{AccountID: account.ID, UserID: active.ID, Role: "administrator"}).Error) require.NoError(t, db.Create(&model.AccountUser{AccountID: account.ID, UserID: inactive.ID, Role: "administrator"}).Error) svc := NewAssignableAgentService(repository.NewInboxMemberRepo(db), repository.NewUserRepo(db), repository.NewAccountRepo(db), repository.NewConversationRepo(db)) agents, err := svc.FindAssignableAgents(context.Background(), account.ID, nil) require.NoError(t, err) require.Len(t, agents, 1) require.Equal(t, active.ID, agents[0].ID) }