public void SessionExpiryTest() { var agentChatCoordinatorService = new AgentChatCoordinatorService(new ConsoleLogProvider()); var queue = new ChatSessionQueue(new ConsoleLogProvider(), agentChatCoordinatorService); var sessionId = Guid.NewGuid(); Assert.IsTrue(queue.Enqueue(new ChatSession(sessionId))); Thread.Sleep((ChatSettings.ChatSessionTimeoutSeconds + 2) * 1000); Assert.IsNull(queue.GetChatSession(sessionId)); }
public void AssignChatShouldConsiderSeniorLevel() { var agents = new List <Agent> { new Agent("Senior 1", SeniorityLevel.Senior), new Agent("Junior 1", SeniorityLevel.Junior) }; var chatMessages = new[] { "message 1", "message 2", "message 3", "message 4", "message 5" }; var chatCoordinatorService = new AgentChatCoordinatorService(agents, new List <OverflowAgent>()); foreach (var chatMessage in chatMessages) { chatCoordinatorService.AssignChat(chatMessage); } Assert.Equal(4, agents.Where(x => x.SeniorityLevel == SeniorityLevel.Junior).Sum(x => x.WorkList.Count)); Assert.Equal(1, agents.Where(x => x.SeniorityLevel == SeniorityLevel.Senior).Sum(x => x.WorkList.Count)); }
public void SessionKeepAliveTest() { var agentChatCoordinatorService = new AgentChatCoordinatorService(new ConsoleLogProvider()); var queue = new ChatSessionQueue(new ConsoleLogProvider(), agentChatCoordinatorService); var sessionId = Guid.NewGuid(); Assert.IsTrue(queue.Enqueue(new ChatSession(sessionId))); for (var i = 0; i < 10; i++) { queue.UpdateHeartbeat(sessionId); Assert.IsNotNull(queue.GetChatSession(sessionId)); if (i < 9) { Thread.Sleep(1000); } } Assert.IsNotNull(queue.GetChatSession(sessionId)); queue.RemoveSession(sessionId); Assert.IsNull(queue.GetChatSession(sessionId)); }
public void MaxCapacityTest() { var agentChatCoordinatorService = new AgentChatCoordinatorService(new ConsoleLogProvider()); var queue = new ChatSessionQueue(new ConsoleLogProvider(), agentChatCoordinatorService); var teamCapacity = agentChatCoordinatorService.GetTeamCapacity(); for (var i = 0; i < teamCapacity + 1; i++) { var sessionId = Guid.NewGuid(); if (i < teamCapacity) { // Ensure that when within the capacity, the enqueue is true Assert.IsTrue(queue.Enqueue(new ChatSession(sessionId))); } else { // Ensure that when we exceed the capacity, the enqueue is false Assert.IsFalse(queue.Enqueue(new ChatSession(sessionId))); } } }