def agent_unregistration(request): """ Unregisters an active agent for the call center. """ log.info("agent_unregistration. retrieved agent ANI:" + request.POST['agentANI']) agentGateway = AgentGateway() response = agentGateway.unregisterAgentForServiceToday(request.POST['agentANI']) if response: return HttpResponse('unregistration.successful') else: return HttpResponse('unregistration.unsuccessful')
class AgentGatewayTest(unittest.TestCase): """ Provides function coverage for AgentGateway. """ def setUp(self): self.ANI = "212555555" + str(random.randrange(9)) self.AgentGateway = AgentGateway() self.CallGateway = CallGateway() self.today = datetime.datetime.today() self.agentToInsert = None self.activeAgents = [] self.activeCalls = [] def tearDown(self): if self.agentToInsert: self.agentToInsert.delete() if len(self.activeAgents) > 0: for agent in self.activeAgents: agent.delete() if len(self.activeCalls) > 0: for call in self.activeCalls: call.delete() def test_registerAgent(self): self.agentToInsert = self.AgentGateway.registerAgentForServiceToday(self.ANI) # verify agent was inserted insertedAgent = Agents.objects.get(ani=self.ANI) self.assertTrue(insertedAgent) self.assertEqual(insertedAgent.ani, self.agentToInsert.ani) self.assertEqual(insertedAgent.connection_status, 1) self.assertEqual(insertedAgent.phone_status, 0) self.assertEqual(insertedAgent.added, self.agentToInsert.added) def test_getAvailableAgentsByIdleTime(self): # insert a bunch of agents self.activeAgents.append( self.AgentGateway.registerAgentForServiceToday("2125555560", connection=1, phone=0) ) # [0] self.activeAgents.append( self.AgentGateway.registerAgentForServiceToday("2125555561", connection=0, phone=0) ) # [1] self.activeAgents.append( self.AgentGateway.registerAgentForServiceToday("2125555562", connection=1, phone=1) ) # [2] self.activeAgents.append( self.AgentGateway.registerAgentForServiceToday("2125555563", connection=1, phone=1) ) # [3] self.activeAgents.append( self.AgentGateway.registerAgentForServiceToday("2125555564", connection=1, phone=0) ) # [4] self.activeAgents.append( self.AgentGateway.registerAgentForServiceToday("2125555565", connection=1, phone=0) ) # [5] # insert some calls now = datetime.datetime.now() self.activeCalls.append( self.CallGateway.addCall(agent=self.activeAgents[0], callEnd=(now + datetime.timedelta(seconds=50))) ) # call ended self.activeCalls.append(self.CallGateway.addCall(agent=self.activeAgents[2])) # still on call self.activeCalls.append(self.CallGateway.addCall(agent=self.activeAgents[3])) # still on call self.activeCalls.append( self.CallGateway.addCall(agent=self.activeAgents[4], callEnd=(now + datetime.timedelta(seconds=30))) ) # call ended self.activeCalls.append( self.CallGateway.addCall(agent=self.activeAgents[5], callEnd=(now + datetime.timedelta(seconds=60))) ) # call ended # get list of aviable agents # this returns unsorted list of hash containing agent ani and idle time # should have the following agents: 0,4,5 avialableAgents = self.AgentGateway.getAvailableAgentsByIdleTime() self.assertEqual(len(avialableAgents), 3) def test_updateAgentPhoneStatus(self): self.agentToInsert = self.AgentGateway.registerAgentForServiceToday(self.ANI) self.assertEqual(self.agentToInsert.ani, self.ANI) # default phone status is 0 self.assertEqual(self.agentToInsert.phone_status, 0) # change status modifiedAgent = self.AgentGateway.updateAgentPhoneStatus(self.agentToInsert, 1) self.assertEqual(modifiedAgent.ani, self.agentToInsert.ani) self.assertEqual(modifiedAgent.phone_status, 1) def test_unregisterAgentForServiceToday(self): self.agentToInsert = self.AgentGateway.registerAgentForServiceToday(self.ANI) # make sure agent is registered for service self.assertEqual(self.agentToInsert.ani, self.ANI) self.assertEqual(self.agentToInsert.connection_status, 1) # unregister unregedAgent = self.AgentGateway.unregisterAgentForServiceToday(self.ANI) self.assertEqual(self.agentToInsert.ani, unregedAgent.ani) self.assertEqual(unregedAgent.connection_status, 0) def test_isANICurrentlyActive(self): self.agentToInsert = self.AgentGateway.registerAgentForServiceToday(self.ANI) self.assertEqual(self.agentToInsert.ani, self.ANI) self.assertEqual(self.agentToInsert.connection_status, 1) self.assertEqual(self.AgentGateway.isANICurrentlyActive(self.ANI), True)