Exemplo n.º 1
0
 def test_terminate_obsolete_no_live(self):
     self.query = ChatFactory()
     self.assertNumberChatEachState(1, 0, 0)
     self.listenclosely_app.time_obsolete_offset = -1
     queries_terminated = self.listenclosely_app.terminate_obsolete()
     self.assertEqual(0, len(queries_terminated))
     self.assertNumberChatEachState(1, 0, 0)
Exemplo n.º 2
0
 def setUp(self):
     super(TestChat, self).setUp()
     self.chat = ChatFactory()
     self.agent = AgentFactory()
     self.question = "text question"
     self.answer = "text_answer"
     self.message_id = self._gen_id()
Exemplo n.º 3
0
 def test_attend_pending_one_query_no_free_agent(self):
     self.query = ChatFactory()
     self.query.asker = self.asker
     self.query.save()
     self.assertNumberAgentEachState(1, 0, 0)
     self.assertNumberChatEachState(1, 0, 0)
     queries_attended = self.listenclosely_app.attend_pendings()
     self.assertEqual(0, len(queries_attended))
     self.assertNumberAgentEachState(1, 0, 0)
     self.assertNumberChatEachState(1, 0, 0)
Exemplo n.º 4
0
 def test_terminate_obsolete_no_obsolete(self):
     self.query = ChatFactory()
     self._register(self.agent)
     self.agent.save()
     self.query.handle_message(self.message_id, self.query.asker.id_service,
                               self.question, self.listenclosely_app)
     self.query.save()
     self.assertNumberAgentEachState(0, 0, 1)
     self.assertNumberChatEachState(0, 1, 0)
     queries_terminated = self.listenclosely_app.terminate_obsolete()
     self.assertEqual(0, len(queries_terminated))
     self.assertNumberChatEachState(0, 1, 0)
     self.assertNumberAgentEachState(0, 0, 1)
Exemplo n.º 5
0
 def test_attend_pending_no_peding_queries(self):
     self.query = ChatFactory()
     self._register(self.agent)
     self.agent.save()
     self.query.handle_message(self.message_id, self.query.asker.id_service,
                               self.question, self.listenclosely_app)
     self.query.save()
     self.assertNumberAgentEachState(0, 0, 1)
     self.assertNumberChatEachState(0, 1, 0)
     queries_attended = self.listenclosely_app.attend_pendings()
     self.assertEqual(0, len(queries_attended))
     self.assertNumberAgentEachState(0, 0, 1)
     self.assertNumberChatEachState(0, 1, 0)
Exemplo n.º 6
0
 def setUp(self):
     super(TestChat, self).setUp()
     self.chat = ChatFactory()
     self.agent = AgentFactory()
     self.question = "text question"
     self.answer = "text_answer"
     self.message_id = self._gen_id()
Exemplo n.º 7
0
 def test_terminate_obsolete_no_live(self):
     self.query = ChatFactory()
     self.assertNumberChatEachState(1, 0, 0)
     self.listenclosely_app.time_obsolete_offset = -1
     queries_terminated = self.listenclosely_app.terminate_obsolete()
     self.assertEqual(0, len(queries_terminated))
     self.assertNumberChatEachState(1, 0, 0)
Exemplo n.º 8
0
 def test_attend_pending_one_query_one_free_agent(self):
     self.query = ChatFactory()
     self.query.asker = self.asker
     self.query.save()
     self._register(self.agent)
     self.agent.save()
     self.assertNumberAgentEachState(0, 1, 0)
     self.assertNumberChatEachState(1, 0, 0)
     queries_attended = self.listenclosely_app.attend_pendings()
     self.assertEqual(1, len(queries_attended))
     self.assertEqual(queries_attended[0], Chat.live.all()[0])
     self.assertNumberAgentEachState(0, 0, 1)
     self.assertNumberChatEachState(0, 1, 0)
     self.query = Chat.objects.all()[0]
     self.assertChatState(self.query, Chat.LIVE)
     self.assertEqual(self.agent, self.query.agent)
     self.assertAgentState(self.query.agent, Agent.BUSY)
Exemplo n.º 9
0
 def test_attend_pending_one_query_no_free_agent(self):
     self.query = ChatFactory()
     self.query.asker = self.asker
     self.query.save()
     self.assertNumberAgentEachState(1, 0, 0)
     self.assertNumberChatEachState(1, 0, 0)
     queries_attended = self.listenclosely_app.attend_pendings()
     self.assertEqual(0, len(queries_attended))
     self.assertNumberAgentEachState(1, 0, 0)
     self.assertNumberChatEachState(1, 0, 0)
Exemplo n.º 10
0
 def test_terminate_obsolete_no_obsolete(self):
     self.query = ChatFactory()
     self._register(self.agent)
     self.agent.save()
     self.query.handle_message(self.message_id, self.query.asker.id_service, self.question, self.listenclosely_app)
     self.query.save()
     self.assertNumberAgentEachState(0, 0, 1)
     self.assertNumberChatEachState(0, 1, 0)
     queries_terminated = self.listenclosely_app.terminate_obsolete()
     self.assertEqual(0, len(queries_terminated))
     self.assertNumberChatEachState(0, 1, 0)
     self.assertNumberAgentEachState(0, 0, 1)
Exemplo n.º 11
0
 def test_attend_pending_no_peding_queries(self):
     self.query = ChatFactory()
     self._register(self.agent)
     self.agent.save()
     self.query.handle_message(self.message_id, self.query.asker.id_service, self.question, self.listenclosely_app)
     self.query.save()
     self.assertNumberAgentEachState(0, 0, 1)
     self.assertNumberChatEachState(0, 1, 0)
     queries_attended = self.listenclosely_app.attend_pendings()
     self.assertEqual(0, len(queries_attended))
     self.assertNumberAgentEachState(0, 0, 1)
     self.assertNumberChatEachState(0, 1, 0)
Exemplo n.º 12
0
 def test_attend_pending_one_query_one_free_agent(self):
     self.query = ChatFactory()
     self.query.asker = self.asker
     self.query.save()
     self._register(self.agent)
     self.agent.save()
     self.assertNumberAgentEachState(0, 1, 0)
     self.assertNumberChatEachState(1, 0, 0)
     queries_attended = self.listenclosely_app.attend_pendings()
     self.assertEqual(1, len(queries_attended))
     self.assertEqual(queries_attended[0], Chat.live.all()[0])
     self.assertNumberAgentEachState(0, 0, 1)
     self.assertNumberChatEachState(0, 1, 0)
     self.query = Chat.objects.all()[0]
     self.assertChatState(self.query, Chat.LIVE)
     self.assertEqual(self.agent, self.query.agent)
     self.assertAgentState(self.query.agent, Agent.BUSY)
Exemplo n.º 13
0
class TestChat(BaseTestColdCenter):
    def setUp(self):
        super(TestChat, self).setUp()
        self.chat = ChatFactory()
        self.agent = AgentFactory()
        self.question = "text question"
        self.answer = "text_answer"
        self.message_id = self._gen_id()

    def test_creation_state(self):
        self.assertChatState(self.chat, Chat.PENDING)

    def test_handle_message_no_agent_to_assign(self):
        self.assertRaises(NoAgentFound, self.chat.handle_message,
                          self.message_id, self.chat.asker.id_service,
                          self.question, self.listenclosely_app)

    def test_handle_message_assign_agent(self):
        self._register(self.agent)
        self.agent.save()
        self.chat.handle_message(self.message_id, self.chat.asker.id_service,
                                 self.question, self.listenclosely_app)
        self.chat.save()
        self.assertChatState(self.chat, Chat.LIVE)
        self.assertEqual(self.chat.agent, self.agent)
        self.assertAgentState(self.chat.agent, Agent.BUSY)
        self.assertEqual(1, Message.objects.count())
        message = Message.objects.all()[0]
        self.assertEqual(message.id_service_in, self.message_id)
        self.assertEqual(message.content, self.question)
        self.assertEqual(message.type, Message.INCOMING)
        self.assertEqual(message.chat, self.chat)
        self.assertMessageServiceBackend(message.id_service_out,
                                         self.chat.agent.id_service,
                                         self.question)

    def test_handle_message_already_assigned(self):
        self._register(self.agent)
        self.agent.save()
        self._attend(self.agent, self.chat)
        self.agent.save()
        self.assertEqual(self.chat.agent, self.agent)
        self.assertAgentState(self.agent, Agent.BUSY)
        self.chat.handle_message(self.message_id, self.chat.asker.id_service,
                                 self.question, self.listenclosely_app)
        self.chat.save()
        self.assertChatState(self.chat, Chat.LIVE)
        self.assertEqual(1, Message.objects.count())
        message = Message.objects.all()[0]
        self.assertEqual(message.id_service_in, self.message_id)
        self.assertEqual(message.content, self.question)
        self.assertEqual(message.type, Message.INCOMING)
        self.assertEqual(message.chat, self.chat)
        self.assertMessageServiceBackend(message.id_service_out,
                                         self.chat.agent.id_service,
                                         self.question)

    def test_handle_message_answer(self):
        self._register(self.agent)
        self.agent.save()
        self._attend(self.agent, self.chat)
        self.agent.save()
        self.assertEqual(self.chat.agent, self.agent)
        self.assertAgentState(self.agent, Agent.BUSY)
        self.chat.handle_message(self.message_id, self.chat.agent.id_service,
                                 self.answer, self.listenclosely_app)
        self.chat.save()
        self.assertChatState(self.chat, Chat.LIVE)
        self.assertEqual(1, Message.objects.count())
        message = Message.objects.all()[0]
        self.assertEqual(message.id_service_in, self.message_id)
        self.assertEqual(message.content, self.answer)
        self.assertEqual(message.type, Message.OUTGOING)
        self.assertEqual(message.chat, self.chat)
        self.assertMessageServiceBackend(message.id_service_out,
                                         self.chat.asker.id_service,
                                         self.answer)

    def test_terminate(self):
        self._register(self.agent)
        self.agent.save()
        self.chat.handle_message(self.message_id, self.chat.asker.id_service,
                                 self.question, self.listenclosely_app)
        self.chat.save()
        self.assertChatState(self.chat, Chat.LIVE)
        self.assertAgentState(self.chat.agent, Agent.BUSY)
        self.chat.terminate()
        self.assertChatState(self.chat, Chat.TERMINATED)
        self.assertAgentState(self.chat.agent, Agent.ONLINE)
Exemplo n.º 14
0
class TestColdCenter(BaseTestColdCenter):

    def setUp(self):
        super(TestColdCenter, self).setUp()
        self.agent = AgentFactory()
        self.agent.save()
        self.asker = AskerFactory()
        self.asker.save()
        self.question = "question content"
        self.answer = "answer content"
        self.message_id = self._gen_id() 

    def test_attend_pending_one_query_one_free_agent(self):
        self.query = ChatFactory()
        self.query.asker = self.asker
        self.query.save()
        self._register(self.agent)
        self.agent.save()
        self.assertNumberAgentEachState(0, 1, 0)
        self.assertNumberChatEachState(1, 0, 0)
        queries_attended = self.listenclosely_app.attend_pendings()
        self.assertEqual(1, len(queries_attended))
        self.assertEqual(queries_attended[0], Chat.live.all()[0])
        self.assertNumberAgentEachState(0, 0, 1)
        self.assertNumberChatEachState(0, 1, 0)
        self.query = Chat.objects.all()[0]
        self.assertChatState(self.query, Chat.LIVE)
        self.assertEqual(self.agent, self.query.agent)
        self.assertAgentState(self.query.agent, Agent.BUSY)
        
    def test_attend_pending_one_query_no_free_agent(self):
        self.query = ChatFactory()
        self.query.asker = self.asker
        self.query.save()
        self.assertNumberAgentEachState(1, 0, 0)
        self.assertNumberChatEachState(1, 0, 0)
        queries_attended = self.listenclosely_app.attend_pendings()
        self.assertEqual(0, len(queries_attended))
        self.assertNumberAgentEachState(1, 0, 0)
        self.assertNumberChatEachState(1, 0, 0)
        
    def test_attend_pending_no_peding_queries(self):
        self.query = ChatFactory()
        self._register(self.agent)
        self.agent.save()
        self.query.handle_message(self.message_id, self.query.asker.id_service, self.question, self.listenclosely_app)
        self.query.save()
        self.assertNumberAgentEachState(0, 0, 1)
        self.assertNumberChatEachState(0, 1, 0)
        queries_attended = self.listenclosely_app.attend_pendings()
        self.assertEqual(0, len(queries_attended))
        self.assertNumberAgentEachState(0, 0, 1)
        self.assertNumberChatEachState(0, 1, 0)

    def test_terminate_obsolete_one(self):
        self.query = ChatFactory()
        self._register(self.agent)
        self.agent.save()
        self.query.handle_message(self.message_id, self.query.asker.id_service, self.question, self.listenclosely_app)
        self.query.save()
        self.assertNumberAgentEachState(0, 0, 1)
        self.assertNumberChatEachState(0, 1, 0)
        self.listenclosely_app.time_obsolete_offset = -1
        queries_terminated = self.listenclosely_app.terminate_obsolete()
        self.assertEqual(1, len(queries_terminated))
        self.assertEqual(queries_terminated[0], Chat.terminated.all()[0])
        self.assertNumberChatEachState(0, 0, 1)
        self.assertNumberAgentEachState(0, 1, 0)
        
    def test_terminate_obsolete_no_obsolete(self):
        self.query = ChatFactory()
        self._register(self.agent)
        self.agent.save()
        self.query.handle_message(self.message_id, self.query.asker.id_service, self.question, self.listenclosely_app)
        self.query.save()
        self.assertNumberAgentEachState(0, 0, 1)
        self.assertNumberChatEachState(0, 1, 0)
        queries_terminated = self.listenclosely_app.terminate_obsolete()
        self.assertEqual(0, len(queries_terminated))
        self.assertNumberChatEachState(0, 1, 0)
        self.assertNumberAgentEachState(0, 0, 1)
        
    def test_terminate_obsolete_no_live(self):
        self.query = ChatFactory()
        self.assertNumberChatEachState(1, 0, 0)
        self.listenclosely_app.time_obsolete_offset = -1
        queries_terminated = self.listenclosely_app.terminate_obsolete()
        self.assertEqual(0, len(queries_terminated))
        self.assertNumberChatEachState(1, 0, 0)
        
    def test_on_message_asker_new_question_with_free_agent(self):
        self._register(self.agent)
        self.agent.save()
        self.assertNumberAgentEachState(0, 1, 0)
        self.assertNumberChatEachState(0, 0, 0)
        self.listenclosely_app.on_message(self.message_id, self.asker.id_service, self.question)
        self.assertNumberAgentEachState(0, 0, 1)
        self.assertNumberChatEachState(0, 1, 0)
        message = Chat.live.all()[0].messages.all()[0]
        self.assertMessageServiceBackend(message.id_service_out, self.agent.id_service, self.question)
        
    def test_on_message_new_asker_new_question_with_free_agent(self):
        self._register(self.agent)
        self.agent.save()
        self.assertNumberAgentEachState(0, 1, 0)
        self.assertNumberChatEachState(0, 0, 0)
        new_asker_id = "new_asker_id"
        self.listenclosely_app.on_message(self.message_id, new_asker_id, self.question)
        self.assertNumberAgentEachState(0, 0, 1)
        self.assertNumberChatEachState(0, 1, 0)
        asker = Asker.objects.get(id_service=new_asker_id)
        self.assertEqual(asker.id_service, new_asker_id)
        message = Chat.live.all()[0].messages.all()[0]
        self.assertMessageServiceBackend(message.id_service_out, self.agent.id_service, self.question)

    def test_on_message_with_no_free_agent(self):
        self.assertNumberAgentEachState(1, 0, 0)
        self.assertNumberChatEachState(0, 0, 0)
        self.listenclosely_app.on_message(self.message_id, self.asker.id_service, self.question)
        self.assertNumberAgentEachState(1, 0, 0)
        self.assertNumberChatEachState(1, 0, 0)    
        self.query = Chat.pending.all()[0]
        self.assertEqual(1, self.query.messages.count())
        self.assertEqual(None, self.query.messages.all()[0].t_sent)
        
    def test_on_message_from_agent_with_no_query(self):
        self._register(self.agent)
        self.agent.save()
        self.assertNumberAgentEachState(0, 1, 0)
        self.assertNumberChatEachState(0, 0, 0)
        self.listenclosely_app.on_message(self.message_id, self.agent.id_service, self.answer)
        self.assertNumberAgentEachState(0, 1, 0)
        self.assertNumberChatEachState(0, 0, 0)
        self.assertEqual(0, Message.objects.count())
        
    def test_on_message_answer_to_current_query(self):
        self._register(self.agent)
        self.agent.save()
        self.assertNumberAgentEachState(0, 1, 0)
        self.assertNumberChatEachState(0, 0, 0)
        new_asker_id = "new_asker_id"
        self.listenclosely_app.on_message(self.message_id, new_asker_id, self.question)
        self.assertNumberAgentEachState(0, 0, 1)
        self.assertNumberChatEachState(0, 1, 0)
        message = Chat.live.all()[0].messages.all()[0]
        self.assertMessageServiceBackend(message.id_service_out, self.agent.id_service, self.question)
        self.listenclosely_app.on_message(self.message_id + "2", self.agent.id_service, self.answer)
        self.assertNumberAgentEachState(0, 0, 1)
        self.assertNumberChatEachState(0, 1, 0)
        query = Chat.live.get(agent__id_service=self.agent.id_service)
        self.assertEqual(2, query.messages.count())
        message = Chat.live.all()[0].messages.all()[1]
        self.assertMessageServiceBackend(message.id_service_out, new_asker_id, self.answer)

    def test_on_message_question_to_current_attended_query(self):
        self._register(self.agent)
        self.agent.save()
        self.assertNumberAgentEachState(0, 1, 0)
        self.assertNumberChatEachState(0, 0, 0)
        self.listenclosely_app.on_message(self.message_id, self.asker.id_service, self.question)
        self.assertNumberAgentEachState(0, 0, 1)
        self.assertNumberChatEachState(0, 1, 0)
        message = Chat.live.all()[0].messages.all()[0]
        self.assertMessageServiceBackend(message.id_service_out, self.agent.id_service, self.question)
        self.listenclosely_app.on_message(self.message_id + "2", self.asker.id_service, self.question + "2")
        self.assertNumberAgentEachState(0, 0, 1)
        self.assertNumberChatEachState(0, 1, 0)
        message = Chat.live.all()[0].messages.all()[1]
        self.assertMessageServiceBackend(message.id_service_out, self.agent.id_service, self.question + "2")
Exemplo n.º 15
0
 def setUp(self):
     super(TestAgent, self).setUp()
     self.agent = AgentFactory()
     self.chat = ChatFactory()
Exemplo n.º 16
0
class TestColdCenter(BaseTestColdCenter):
    def setUp(self):
        super(TestColdCenter, self).setUp()
        self.agent = AgentFactory()
        self.agent.save()
        self.asker = AskerFactory()
        self.asker.save()
        self.question = "question content"
        self.answer = "answer content"
        self.message_id = self._gen_id()

    def test_attend_pending_one_query_one_free_agent(self):
        self.query = ChatFactory()
        self.query.asker = self.asker
        self.query.save()
        self._register(self.agent)
        self.agent.save()
        self.assertNumberAgentEachState(0, 1, 0)
        self.assertNumberChatEachState(1, 0, 0)
        queries_attended = self.listenclosely_app.attend_pendings()
        self.assertEqual(1, len(queries_attended))
        self.assertEqual(queries_attended[0], Chat.live.all()[0])
        self.assertNumberAgentEachState(0, 0, 1)
        self.assertNumberChatEachState(0, 1, 0)
        self.query = Chat.objects.all()[0]
        self.assertChatState(self.query, Chat.LIVE)
        self.assertEqual(self.agent, self.query.agent)
        self.assertAgentState(self.query.agent, Agent.BUSY)

    def test_attend_pending_one_query_no_free_agent(self):
        self.query = ChatFactory()
        self.query.asker = self.asker
        self.query.save()
        self.assertNumberAgentEachState(1, 0, 0)
        self.assertNumberChatEachState(1, 0, 0)
        queries_attended = self.listenclosely_app.attend_pendings()
        self.assertEqual(0, len(queries_attended))
        self.assertNumberAgentEachState(1, 0, 0)
        self.assertNumberChatEachState(1, 0, 0)

    def test_attend_pending_no_peding_queries(self):
        self.query = ChatFactory()
        self._register(self.agent)
        self.agent.save()
        self.query.handle_message(self.message_id, self.query.asker.id_service,
                                  self.question, self.listenclosely_app)
        self.query.save()
        self.assertNumberAgentEachState(0, 0, 1)
        self.assertNumberChatEachState(0, 1, 0)
        queries_attended = self.listenclosely_app.attend_pendings()
        self.assertEqual(0, len(queries_attended))
        self.assertNumberAgentEachState(0, 0, 1)
        self.assertNumberChatEachState(0, 1, 0)

    def test_terminate_obsolete_one(self):
        self.query = ChatFactory()
        self._register(self.agent)
        self.agent.save()
        self.query.handle_message(self.message_id, self.query.asker.id_service,
                                  self.question, self.listenclosely_app)
        self.query.save()
        self.assertNumberAgentEachState(0, 0, 1)
        self.assertNumberChatEachState(0, 1, 0)
        self.listenclosely_app.time_obsolete_offset = -1
        queries_terminated = self.listenclosely_app.terminate_obsolete()
        self.assertEqual(1, len(queries_terminated))
        self.assertEqual(queries_terminated[0], Chat.terminated.all()[0])
        self.assertNumberChatEachState(0, 0, 1)
        self.assertNumberAgentEachState(0, 1, 0)

    def test_terminate_obsolete_no_obsolete(self):
        self.query = ChatFactory()
        self._register(self.agent)
        self.agent.save()
        self.query.handle_message(self.message_id, self.query.asker.id_service,
                                  self.question, self.listenclosely_app)
        self.query.save()
        self.assertNumberAgentEachState(0, 0, 1)
        self.assertNumberChatEachState(0, 1, 0)
        queries_terminated = self.listenclosely_app.terminate_obsolete()
        self.assertEqual(0, len(queries_terminated))
        self.assertNumberChatEachState(0, 1, 0)
        self.assertNumberAgentEachState(0, 0, 1)

    def test_terminate_obsolete_no_live(self):
        self.query = ChatFactory()
        self.assertNumberChatEachState(1, 0, 0)
        self.listenclosely_app.time_obsolete_offset = -1
        queries_terminated = self.listenclosely_app.terminate_obsolete()
        self.assertEqual(0, len(queries_terminated))
        self.assertNumberChatEachState(1, 0, 0)

    def test_on_message_asker_new_question_with_free_agent(self):
        self._register(self.agent)
        self.agent.save()
        self.assertNumberAgentEachState(0, 1, 0)
        self.assertNumberChatEachState(0, 0, 0)
        self.listenclosely_app.on_message(self.message_id,
                                          self.asker.id_service, self.question)
        self.assertNumberAgentEachState(0, 0, 1)
        self.assertNumberChatEachState(0, 1, 0)
        message = Chat.live.all()[0].messages.all()[0]
        self.assertMessageServiceBackend(message.id_service_out,
                                         self.agent.id_service, self.question)

    def test_on_message_new_asker_new_question_with_free_agent(self):
        self._register(self.agent)
        self.agent.save()
        self.assertNumberAgentEachState(0, 1, 0)
        self.assertNumberChatEachState(0, 0, 0)
        new_asker_id = "new_asker_id"
        self.listenclosely_app.on_message(self.message_id, new_asker_id,
                                          self.question)
        self.assertNumberAgentEachState(0, 0, 1)
        self.assertNumberChatEachState(0, 1, 0)
        asker = Asker.objects.get(id_service=new_asker_id)
        self.assertEqual(asker.id_service, new_asker_id)
        message = Chat.live.all()[0].messages.all()[0]
        self.assertMessageServiceBackend(message.id_service_out,
                                         self.agent.id_service, self.question)

    def test_on_message_with_no_free_agent(self):
        self.assertNumberAgentEachState(1, 0, 0)
        self.assertNumberChatEachState(0, 0, 0)
        self.listenclosely_app.on_message(self.message_id,
                                          self.asker.id_service, self.question)
        self.assertNumberAgentEachState(1, 0, 0)
        self.assertNumberChatEachState(1, 0, 0)
        self.query = Chat.pending.all()[0]
        self.assertEqual(1, self.query.messages.count())
        self.assertEqual(None, self.query.messages.all()[0].t_sent)

    def test_on_message_from_agent_with_no_query(self):
        self._register(self.agent)
        self.agent.save()
        self.assertNumberAgentEachState(0, 1, 0)
        self.assertNumberChatEachState(0, 0, 0)
        self.listenclosely_app.on_message(self.message_id,
                                          self.agent.id_service, self.answer)
        self.assertNumberAgentEachState(0, 1, 0)
        self.assertNumberChatEachState(0, 0, 0)
        self.assertEqual(0, Message.objects.count())

    def test_on_message_answer_to_current_query(self):
        self._register(self.agent)
        self.agent.save()
        self.assertNumberAgentEachState(0, 1, 0)
        self.assertNumberChatEachState(0, 0, 0)
        new_asker_id = "new_asker_id"
        self.listenclosely_app.on_message(self.message_id, new_asker_id,
                                          self.question)
        self.assertNumberAgentEachState(0, 0, 1)
        self.assertNumberChatEachState(0, 1, 0)
        message = Chat.live.all()[0].messages.all()[0]
        self.assertMessageServiceBackend(message.id_service_out,
                                         self.agent.id_service, self.question)
        self.listenclosely_app.on_message(self.message_id + "2",
                                          self.agent.id_service, self.answer)
        self.assertNumberAgentEachState(0, 0, 1)
        self.assertNumberChatEachState(0, 1, 0)
        query = Chat.live.get(agent__id_service=self.agent.id_service)
        self.assertEqual(2, query.messages.count())
        message = Chat.live.all()[0].messages.all()[1]
        self.assertMessageServiceBackend(message.id_service_out, new_asker_id,
                                         self.answer)

    def test_on_message_question_to_current_attended_query(self):
        self._register(self.agent)
        self.agent.save()
        self.assertNumberAgentEachState(0, 1, 0)
        self.assertNumberChatEachState(0, 0, 0)
        self.listenclosely_app.on_message(self.message_id,
                                          self.asker.id_service, self.question)
        self.assertNumberAgentEachState(0, 0, 1)
        self.assertNumberChatEachState(0, 1, 0)
        message = Chat.live.all()[0].messages.all()[0]
        self.assertMessageServiceBackend(message.id_service_out,
                                         self.agent.id_service, self.question)
        self.listenclosely_app.on_message(self.message_id + "2",
                                          self.asker.id_service,
                                          self.question + "2")
        self.assertNumberAgentEachState(0, 0, 1)
        self.assertNumberChatEachState(0, 1, 0)
        message = Chat.live.all()[0].messages.all()[1]
        self.assertMessageServiceBackend(message.id_service_out,
                                         self.agent.id_service,
                                         self.question + "2")
Exemplo n.º 17
0
class TestChat(BaseTestColdCenter):   

    def setUp(self):
        super(TestChat, self).setUp()
        self.chat = ChatFactory()
        self.agent = AgentFactory()
        self.question = "text question"
        self.answer = "text_answer"
        self.message_id = self._gen_id()
        
    def test_creation_state(self):
        self.assertChatState(self.chat, Chat.PENDING)
        
    def test_handle_message_no_agent_to_assign(self):
        self.assertRaises(NoAgentFound, self.chat.handle_message, self.message_id, self.chat.asker.id_service, 
                          self.question, self.listenclosely_app)   
        
    def test_handle_message_assign_agent(self):
        self._register(self.agent)
        self.agent.save()
        self.chat.handle_message(self.message_id, self.chat.asker.id_service, self.question, self.listenclosely_app)
        self.chat.save()
        self.assertChatState(self.chat, Chat.LIVE)
        self.assertEqual(self.chat.agent, self.agent)
        self.assertAgentState(self.chat.agent, Agent.BUSY)
        self.assertEqual(1, Message.objects.count())
        message = Message.objects.all()[0]
        self.assertEqual(message.id_service_in, self.message_id)
        self.assertEqual(message.content, self.question)
        self.assertEqual(message.type, Message.INCOMING)
        self.assertEqual(message.chat, self.chat)
        self.assertMessageServiceBackend(message.id_service_out, self.chat.agent.id_service, self.question)
        
    def test_handle_message_already_assigned(self):
        self._register(self.agent)
        self.agent.save()
        self._attend(self.agent, self.chat)
        self.agent.save()
        self.assertEqual(self.chat.agent, self.agent)
        self.assertAgentState(self.agent, Agent.BUSY)
        self.chat.handle_message(self.message_id, self.chat.asker.id_service, self.question, self.listenclosely_app)
        self.chat.save()
        self.assertChatState(self.chat, Chat.LIVE)
        self.assertEqual(1, Message.objects.count())
        message = Message.objects.all()[0]
        self.assertEqual(message.id_service_in, self.message_id)
        self.assertEqual(message.content, self.question)
        self.assertEqual(message.type, Message.INCOMING)
        self.assertEqual(message.chat, self.chat)
        self.assertMessageServiceBackend(message.id_service_out, self.chat.agent.id_service, self.question)
        
    def test_handle_message_answer(self):
        self._register(self.agent)
        self.agent.save()
        self._attend(self.agent, self.chat)
        self.agent.save()
        self.assertEqual(self.chat.agent, self.agent)
        self.assertAgentState(self.agent, Agent.BUSY)
        self.chat.handle_message(self.message_id, self.chat.agent.id_service, self.answer, self.listenclosely_app)
        self.chat.save()
        self.assertChatState(self.chat, Chat.LIVE)
        self.assertEqual(1, Message.objects.count())
        message = Message.objects.all()[0]
        self.assertEqual(message.id_service_in, self.message_id)
        self.assertEqual(message.content, self.answer)
        self.assertEqual(message.type, Message.OUTGOING)
        self.assertEqual(message.chat, self.chat)
        self.assertMessageServiceBackend(message.id_service_out, self.chat.asker.id_service, self.answer)
        
    def test_terminate(self):
        self._register(self.agent)
        self.agent.save()
        self.chat.handle_message(self.message_id, self.chat.asker.id_service, self.question, self.listenclosely_app)
        self.chat.save()
        self.assertChatState(self.chat, Chat.LIVE)
        self.assertAgentState(self.chat.agent, Agent.BUSY)
        self.chat.terminate()
        self.assertChatState(self.chat, Chat.TERMINATED)
        self.assertAgentState(self.chat.agent, Agent.ONLINE)