package autoassignment import ( "testing" "github.com/stretchr/testify/assert" ) // --- Constructor tests --- func TestNewRateLimiter(t *testing.T) { rl := NewRateLimiter(nil) assert.NotNil(t, rl) } func TestNewRoundRobinSelector(t *testing.T) { rr := NewRoundRobinSelector(nil) assert.NotNil(t, rr) } func TestNewLowestLoadSelector(t *testing.T) { ll := NewLowestLoadSelector(nil) assert.NotNil(t, ll) } func TestNewAssignmentService(t *testing.T) { s := NewAssignmentService(nil, nil) assert.NotNil(t, s) } // --- Model tests --- func TestConversationQueryModel_TableName(t *testing.T) { m := ConversationQueryModel{} assert.NotEmpty(t, m.TableName()) } func TestAssignmentPolicyType_Constants(t *testing.T) { assert.Equal(t, "round_robin", string(PolicyRoundRobin)) assert.Equal(t, "longest_waiting", string(PolicyLongestWaiting)) assert.Equal(t, "lowest_load", string(PolicyLowestLoad)) } // --- RateLimiter key test --- func TestRateLimiter_Key(t *testing.T) { rl := NewRateLimiter(nil) key := rl.key(1, 2, 300) assert.Contains(t, key, "gochat:auto_assignment_rate:") assert.Contains(t, key, "1") assert.Contains(t, key, "2") } // --- RoundRobinSelector key test --- func TestRoundRobinSelector_Key(t *testing.T) { rr := NewRoundRobinSelector(nil) key := rr.key(42) assert.Equal(t, "gochat:round_robin:42", key) }