Exemple #1
0
    def setUp(self):
        super(CalificacionTests, self).setUp()

        self.agente_profile = self.crear_agente_profile()
        self.usuario_agente = self.agente_profile.user

        self.campana = CampanaFactory.create()
        self.nombre_opcion_gestion = NombreCalificacionFactory.create()
        self.nombre_calificacion_agenda = NombreCalificacion.objects.get(
            nombre=settings.CALIFICACION_REAGENDA)
        self.formulario = FormularioFactory()
        self.campo_formulario = FieldFormularioFactory(formulario=self.formulario)
        self.opcion_calificacion_gestion = OpcionCalificacionFactory.create(
            campana=self.campana, nombre=self.nombre_opcion_gestion.nombre,
            tipo=OpcionCalificacion.GESTION, formulario=self.formulario)
        self.opcion_calificacion_agenda = OpcionCalificacionFactory.create(
            campana=self.campana, nombre=self.nombre_calificacion_agenda.nombre,
            tipo=OpcionCalificacion.AGENDA)
        self.opcion_calificacion_camp_manual = OpcionCalificacionFactory.create(
            campana=self.campana, nombre=self.nombre_opcion_gestion.nombre)
        self.opcion_calificacion_no_accion = OpcionCalificacionFactory.create(
            campana=self.campana, tipo=OpcionCalificacion.NO_ACCION)

        self.contacto = ContactoFactory.create()
        self.campana.bd_contacto.contactos.add(self.contacto)

        self.queue = QueueFactory.create(campana=self.campana)

        self.calificacion_cliente = CalificacionClienteFactory(
            opcion_calificacion=self.opcion_calificacion_camp_manual, agente=self.agente_profile,
            contacto=self.contacto)

        QueueMemberFactory.create(member=self.agente_profile, queue_name=self.queue)

        self.client.login(username=self.usuario_agente.username, password=PASSWORD)
    def setUp(self):
        super(AuditoriaDeGestionTests, self).setUp()

        self.supervisor = self.crear_supervisor_profile()
        self.client.login(username=self.supervisor.user.username,
                          password=PASSWORD)

        self.campana = CampanaFactory.create(estado=Campana.ESTADO_ACTIVA)
        self.campana.supervisors.add(self.supervisor.user)

        self.opcion_calificacion_gestion = OpcionCalificacionFactory.create(
            campana=self.campana, tipo=OpcionCalificacion.GESTION)
        self.opcion_calificacion_no_gestion = OpcionCalificacionFactory.create(
            campana=self.campana, tipo=OpcionCalificacion.NO_ACCION)

        self.contacto_gestion = ContactoFactory.create()
        self.campana.bd_contacto.contactos.add(self.contacto_gestion)
        self.contacto_no_gestion = ContactoFactory.create()
        self.campana.bd_contacto.contactos.add(self.contacto_no_gestion)

        self.agente = self.crear_agente_profile()
        self.calificacion_gestion = CalificacionClienteFactory(
            opcion_calificacion=self.opcion_calificacion_gestion,
            agente=self.agente,
            contacto=self.contacto_gestion)
        self.calificacion_no_gestion = CalificacionClienteFactory(
            opcion_calificacion=self.opcion_calificacion_no_gestion,
            agente=self.agente,
            contacto=self.contacto_no_gestion)
Exemple #3
0
    def setUp(self):
        super(ReglaIncidenciaPorCalificacionTests, self).setUp()

        self.admin = self.crear_administrador()
        self.client.login(username=self.admin.username, password=PASSWORD)

        self.formulario = FormularioFactory()
        self.campo_formulario = FieldFormularioFactory(
            formulario=self.formulario)
        self.campana = CampanaFactory.create(type=Campana.TYPE_DIALER)
        self.nombre_opcion_1 = NombreCalificacionFactory.create()
        self.opcion_calificacion_1 = OpcionCalificacionFactory.create(
            campana=self.campana,
            nombre=self.nombre_opcion_1.nombre,
            tipo=OpcionCalificacion.GESTION,
            formulario=self.formulario)
        self.campana.opciones_calificacion.add(self.opcion_calificacion_1)
        self.nombre_opcion_2 = NombreCalificacionFactory.create()
        self.opcion_calificacion_2 = OpcionCalificacionFactory.create(
            campana=self.campana,
            nombre=self.nombre_opcion_2.nombre,
            tipo=OpcionCalificacion.NO_ACCION)
        self.campana.opciones_calificacion.add(self.opcion_calificacion_2)
        self.contacto = ContactoFactory.create()
        self.campana.bd_contacto.contactos.add(self.contacto)

        self.campana_extra = CampanaFactory.create(type=Campana.TYPE_DIALER)
        self.nombre_opcion_extra = NombreCalificacionFactory.create()
        self.opcion_calificacion_extra = OpcionCalificacionFactory.create(
            campana=self.campana_extra,
            nombre=self.nombre_opcion_extra.nombre,
            tipo=OpcionCalificacion.NO_ACCION)
        self.campana_extra.opciones_calificacion.add(
            self.opcion_calificacion_extra)
    def setUp(self):
        self.usuario_admin_supervisor = UserFactory(is_staff=True, is_supervisor=True)
        self.usuario_admin_supervisor.set_password(self.PWD)
        self.usuario_admin_supervisor.save()
        self.agente_profile = AgenteProfileFactory.create(user=self.usuario_admin_supervisor)

        self.nombre_calificacion = NombreCalificacionFactory.create(nombre=self.CALIFICACION_NOMBRE)
        self.nombre_calificacion_gestion = NombreCalificacionFactory.create(nombre=self.GESTION)

        self.campana_activa = CampanaFactory.create(
            estado=Campana.ESTADO_ACTIVA, type=Campana.TYPE_PREVIEW)

        self.contacto_calificado_gestion = ContactoFactory(
            bd_contacto=self.campana_activa.bd_contacto)
        self.contacto_calificado_no_accion = ContactoFactory(
            bd_contacto=self.campana_activa.bd_contacto)
        self.contacto_no_atendido = ContactoFactory(bd_contacto=self.campana_activa.bd_contacto)
        self.contacto_no_calificado = ContactoFactory(bd_contacto=self.campana_activa.bd_contacto)

        self.opcion_calificacion_gestion = OpcionCalificacionFactory.create(
            campana=self.campana_activa, nombre=self.nombre_calificacion_gestion.nombre,
            tipo=OpcionCalificacion.GESTION)
        self.opcion_calificacion_noaccion = OpcionCalificacionFactory.create(
            campana=self.campana_activa, nombre=self.nombre_calificacion.nombre,
            tipo=OpcionCalificacion.NO_ACCION)

        self.telefono1 = self.contacto_calificado_gestion.telefono
        self.telefono2 = self.contacto_calificado_no_accion.telefono
        self.telefono3 = self.contacto_no_atendido.telefono
        self.telefono4 = self.contacto_no_calificado.telefono

        self.generador_log_llamadas = GeneradorDeLlamadaLogs()
        self.generador_log_llamadas.generar_log(
            self.campana_activa, False, 'COMPLETEAGENT', self.telefono1, agente=self.agente_profile,
            contacto=self.contacto_calificado_gestion, duracion_llamada=self.DURACION_LLAMADA,
            callid=1)
        self.generador_log_llamadas.generar_log(
            self.campana_activa, False, 'COMPLETEAGENT', self.telefono2, agente=self.agente_profile,
            contacto=self.contacto_calificado_no_accion, duracion_llamada=self.DURACION_LLAMADA,
            callid=2)
        self.generador_log_llamadas.generar_log(
            self.campana_activa, True, 'NOANSWER', self.telefono3, agente=self.agente_profile,
            contacto=self.contacto_no_atendido, callid=3)
        self.generador_log_llamadas.generar_log(
            self.campana_activa, True, 'COMPLETEOUTNUM', self.telefono4, agente=self.agente_profile,
            contacto=self.contacto_no_calificado, duracion_llamada=0, callid=4)
        callid_gestion = LlamadaLog.objects.get(
            contacto_id=self.contacto_calificado_gestion.pk, event='COMPLETEAGENT').callid
        callid_no_accion = LlamadaLog.objects.get(
            contacto_id=self.contacto_calificado_no_accion.pk, event='COMPLETEAGENT').callid
        self.calif_gestion = CalificacionClienteFactory.create(
            opcion_calificacion=self.opcion_calificacion_gestion, agente=self.agente_profile,
            contacto=self.contacto_calificado_gestion, callid=callid_gestion)
        self.calif_no_accion = CalificacionClienteFactory.create(
            opcion_calificacion=self.opcion_calificacion_noaccion, agente=self.agente_profile,
            contacto=self.contacto_calificado_no_accion, callid=callid_no_accion)
        CalificacionCliente.history.all().update(history_change_reason='calificacion')

        self.client.login(username=self.usuario_admin_supervisor.username, password=self.PWD)
Exemple #5
0
 def _crear_opciones_calificacion(self, campana):
     # opciones de calificacion
     OpcionCalificacionFactory(nombre=self.success.nombre,
                               campana=campana,
                               tipo=OpcionCalificacion.GESTION)
     OpcionCalificacionFactory(nombre=self.angry.nombre,
                               campana=campana,
                               tipo=OpcionCalificacion.NO_ACCION)
Exemple #6
0
    def setUp(self):
        super(AuditoriasCalificacionesTests, self).setUp()

        self.campana1 = CampanaFactory(estado=Campana.ESTADO_ACTIVA)
        self.campana2 = CampanaFactory(estado=Campana.ESTADO_ACTIVA)
        self.campana3 = CampanaFactory(estado=Campana.ESTADO_ACTIVA)

        self.supervisor1 = self.crear_supervisor_profile(rol=User.GERENTE)
        self.supervisor2 = self.crear_supervisor_profile(rol=User.GERENTE)
        self.supervisor3 = self.crear_supervisor_profile(rol=User.SUPERVISOR)
        self.supervisor4 = self.crear_supervisor_profile(rol=User.REFERENTE)

        # calificaciones y auditorias de gestion para campana1
        opcion_calificacion11 = OpcionCalificacionFactory(
            campana=self.campana1, tipo=OpcionCalificacion.GESTION)
        self.calificacion11 = CalificacionClienteFactory(
            opcion_calificacion=opcion_calificacion11)

        # calificacion de gestion para campana2
        opcion_calificacion21_gestion = OpcionCalificacionFactory(
            campana=self.campana2, tipo=OpcionCalificacion.GESTION)
        opcion_calificacion21_no_accion = OpcionCalificacionFactory(
            campana=self.campana2, tipo=OpcionCalificacion.NO_ACCION)
        self.calificacion21 = CalificacionClienteFactory(
            opcion_calificacion=opcion_calificacion21_no_accion)
        self.calificacion22 = CalificacionClienteFactory(
            opcion_calificacion=opcion_calificacion21_gestion)
        self.calificacion23 = CalificacionClienteFactory(
            opcion_calificacion=opcion_calificacion21_gestion)
        self.calificacion24 = CalificacionClienteFactory(
            opcion_calificacion=opcion_calificacion21_gestion)
        self.calificacion25 = CalificacionClienteFactory(
            opcion_calificacion=opcion_calificacion21_gestion)
        self.queue_campana_2 = QueueFactory(campana=self.campana2)
        QueueMemberFactory(member=self.calificacion25.agente,
                           queue_name=self.queue_campana_2)

        self.auditoria_aprobada = AuditoriaCalificacionFactory(
            calificacion=self.calificacion23,
            resultado=AuditoriaCalificacion.APROBADA)
        self.auditoria_rechazada = AuditoriaCalificacionFactory(
            calificacion=self.calificacion24,
            resultado=AuditoriaCalificacion.RECHAZADA)
        self.auditoria_rechazada = AuditoriaCalificacionFactory(
            calificacion=self.calificacion25,
            resultado=AuditoriaCalificacion.OBSERVADA)

        self.campana2.supervisors.add(self.supervisor2.user)
        self.campana3.supervisors.add(self.supervisor2.user)

        # calificacion de gestion para campana2
        opcion_calificacion31_gestion = OpcionCalificacionFactory(
            campana=self.campana3, tipo=OpcionCalificacion.GESTION)
        self.calificacion31 = CalificacionClienteFactory(
            opcion_calificacion=opcion_calificacion31_gestion)

        self.client.login(username=self.supervisor2.user,
                          password=self.DEFAULT_PASSWORD)
Exemple #7
0
    def setUp(self):
        self.usuario_admin_supervisor = UserFactory(is_staff=True,
                                                    is_supervisor=True)
        self.usuario_admin_supervisor.set_password(self.PWD)
        self.usuario_admin_supervisor.save()

        self.user_agente = self.crear_user_agente()
        self.campana = CampanaFactory()
        self.agente_profile = self.crear_agente_profile(self.user_agente)
        self.opcion_calificacion = OpcionCalificacionFactory(
            campana=self.campana, tipo=OpcionCalificacion.GESTION)
        self.calificacion = CalificacionClienteFactory(
            opcion_calificacion=self.opcion_calificacion)
        self.grabacion1 = GrabacionFactory.create(
            duracion=0,
            agente=self.agente_profile,
            callid=self.calificacion.callid,
            campana=self.campana)
        self.grabacion2 = GrabacionFactory(duracion=0,
                                           agente=self.agente_profile,
                                           campana=self.campana)
        self.grabacion3 = GrabacionFactory(duracion=0,
                                           agente=self.agente_profile,
                                           campana=self.campana)
        self.marca_campana1 = GrabacionMarcaFactory(
            callid=self.grabacion1.callid)
        self.marca_campana2 = GrabacionMarcaFactory(
            callid=self.grabacion2.callid)

        self.client.login(username=self.usuario_admin_supervisor.username,
                          password=self.PWD)
 def test_calificacion_cliente_creacion_redirecciona_a_otro_formulario_gestion(
         self, post):
     nuevo_formulario = FormularioFactory()
     campo_formulario = FieldFormularioFactory(formulario=nuevo_formulario,
                                               nombre_campo='otro_campo')
     nombre_opcion = NombreCalificacionFactory.create(nombre='otra opcion')
     opcion_calificacion = OpcionCalificacionFactory.create(
         campana=self.campana,
         nombre=nombre_opcion,
         tipo=OpcionCalificacion.GESTION,
         formulario=nuevo_formulario)
     url = reverse('calificacion_formulario_update_or_create',
                   kwargs={
                       'pk_campana': self.campana.pk,
                       'pk_contacto': self.contacto.pk
                   })
     post_data = self._obtener_post_data_calificacion_cliente()
     post_data['opcion_calificacion'] = opcion_calificacion.pk
     response = self.client.post(url, post_data, follow=True)
     self.assertTemplateUsed(
         response, 'formulario/respuesta_formulario_gestion_agente.html')
     self.assertTrue(campo_formulario.nombre_campo in
                     response.context_data['form'].fields)
     self.assertFalse(self.campo_formulario.nombre_campo in
                      response.context_data['form'].fields)
Exemple #9
0
    def test_api_opciones_calificacion_ocultando_opcion_calificacion(self):
        opcion_calificacion_2 = OpcionCalificacionFactory(
            campana=self.campana_activa)
        self.opcion_calificacion.oculta = True
        self.opcion_calificacion.save()
        token_agente = Token.objects.get(user=self.agente_profile.user).key
        client = APIClient()
        client.credentials(HTTP_AUTHORIZATION='Bearer ' + token_agente)
        url = reverse('api_campana_opciones_calificacion_intern-list',
                      args=(self.campana_activa.pk, ))

        response = client.get(url)
        self.assertEqual(response.status_code, 200)
        self.assertEqual(len(response.json()), 2)
        opcion_data_1 = response.json()[0]
        opcion_data_2 = response.json()[1]
        if response.json()[1]['id'] == self.opcion_calificacion.id:
            opcion_data_1 = response.json()[1]
            opcion_data_2 = response.json()[0]
        self.assertEqual(opcion_data_1['id'], self.opcion_calificacion.id)
        self.assertEqual(opcion_data_2['id'], opcion_calificacion_2.id)
        self.assertEqual(opcion_data_1['name'],
                         self.opcion_calificacion.nombre)
        self.assertEqual(opcion_data_2['name'], opcion_calificacion_2.nombre)
        self.assertTrue(opcion_data_1['hidden'])
        self.assertFalse(opcion_data_2['hidden'])
Exemple #10
0
    def setUp(self):
        super(APITest, self).setUp()
        self.factory = RequestFactory()

        self.supervisor_admin = self.crear_supervisor_profile(
            rol=User.ADMINISTRADOR)
        self.supervisor = self.crear_supervisor_profile(rol=User.SUPERVISOR)
        self.agente_profile = self.crear_agente_profile()

        self.campana_activa = CampanaFactory.create(
            estado=Campana.ESTADO_ACTIVA)
        self.campana_activa_supervisor = CampanaFactory.create(
            estado=Campana.ESTADO_ACTIVA)
        self.campana_activa_supervisor.supervisors.add(self.supervisor.user)
        self.campana_finalizada = CampanaFactory(
            estado=Campana.ESTADO_FINALIZADA)
        self.queue = QueueFactory.create(campana=self.campana_activa)
        self.queue2 = QueueFactory.create(
            campana=self.campana_activa_supervisor)
        self.queue3 = QueueFactory.create(campana=self.campana_finalizada)
        QueueMemberFactory.create(member=self.agente_profile,
                                  queue_name=self.queue)
        self.sistema_externo = SistemaExternoFactory()
        self.opcion_calificacion = OpcionCalificacionFactory(
            campana=self.campana_activa)

        self.calificacion_cliente = CalificacionClienteFactory(
            opcion_calificacion=self.opcion_calificacion,
            agente=self.agente_profile)

        for user in User.objects.all():
            Token.objects.create(user=user)
Exemple #11
0
    def setUp(self):
        super(APITest, self).setUp()
        self.factory = RequestFactory()

        self.supervisor_admin = self.crear_supervisor_profile(
            rol=User.ADMINISTRADOR)
        self.supervisor = self.crear_supervisor_profile(rol=User.SUPERVISOR)
        self.agente_profile = self.crear_agente_profile()

        self.campana_activa = CampanaFactory.create(
            estado=Campana.ESTADO_ACTIVA,
            type=Campana.TYPE_MANUAL,
            nombre='activa uno')
        self.campana_activa_2 = CampanaFactory.create(
            estado=Campana.ESTADO_ACTIVA,
            type=Campana.TYPE_PREVIEW,
            nombre='activa dos')
        self.campana_activa_supervisor = CampanaFactory.create(
            estado=Campana.ESTADO_ACTIVA,
            type=Campana.TYPE_ENTRANTE,
            nombre='activa supervisor uno')
        self.campana_activa_supervisor.supervisors.add(self.supervisor.user)
        self.campana_finalizada = CampanaFactory(
            estado=Campana.ESTADO_FINALIZADA)
        self.queue = QueueFactory.create(campana=self.campana_activa)
        self.queue1 = QueueFactory.create(campana=self.campana_activa_2)
        self.queue2 = QueueFactory.create(
            campana=self.campana_activa_supervisor)
        self.queue3 = QueueFactory.create(campana=self.campana_finalizada)
        QueueMemberFactory.create(member=self.agente_profile,
                                  queue_name=self.queue)
        self.sistema_externo = SistemaExternoFactory()
        self.opcion_calificacion = OpcionCalificacionFactory(
            campana=self.campana_activa)

        self.contacto = ContactoFactory(
            bd_contacto=self.campana_activa.bd_contacto)
        self.calificacion_cliente = CalificacionClienteFactory(
            opcion_calificacion=self.opcion_calificacion,
            agente=self.agente_profile,
            contacto=self.contacto)

        for user in User.objects.all():
            Token.objects.create(user=user)
Exemple #12
0
    def setUp(self):
        self.supervisor1 = self.crear_supervisor_profile(rol=User.SUPERVISOR)
        self.supervisor2 = self.crear_supervisor_profile(rol=User.SUPERVISOR)

        self.agente1 = self.crear_agente_profile()
        self.agente2 = self.crear_agente_profile()

        self.campana1 = CampanaFactory(estado=Campana.ESTADO_ACTIVA)
        self.queue_campana_1 = QueueFactory(campana=self.campana1)
        QueueMemberFactory(member=self.agente1,
                           queue_name=self.queue_campana_1)
        self.campana1.supervisors.add(self.supervisor1.user)

        self.campana2 = CampanaFactory(estado=Campana.ESTADO_ACTIVA)
        self.queue_campana_2 = QueueFactory(campana=self.campana2)
        QueueMemberFactory(member=self.agente2,
                           queue_name=self.queue_campana_2)
        self.campana2.supervisors.add(self.supervisor2.user)

        self.contacto = ContactoFactory(id_externo='id_ext')
        self.campana3 = CampanaFactory(estado=Campana.ESTADO_ACTIVA)
        self.campana3.bd_contacto.genera_contactos([self.contacto])
        self.campana3.supervisors.add(self.supervisor1.user)

        self.opcion_calificacion = OpcionCalificacionFactory(
            campana=self.campana1, tipo=OpcionCalificacion.GESTION)
        self.calificacion = CalificacionClienteFactory(
            opcion_calificacion=self.opcion_calificacion)
        update_change_reason(self.calificacion, 'calificacion')
        self.grabacion1 = GrabacionFactory.create(
            duracion=1,
            agente=self.agente1,
            callid=self.calificacion.callid,
            campana=self.campana1,
            id_cliente='-1')
        self.grabacion2 = GrabacionFactory(duracion=1,
                                           agente=self.agente1,
                                           campana=self.campana1)
        self.grabacion3 = GrabacionFactory(duracion=1,
                                           agente=self.agente1,
                                           campana=self.campana1)
        self.marca_campana1 = GrabacionMarcaFactory(
            callid=self.grabacion1.callid)
        self.marca_campana2 = GrabacionMarcaFactory(
            callid=self.grabacion2.callid)

        self.grabacion2_1 = GrabacionFactory.create(duracion=1,
                                                    agente=self.agente2,
                                                    campana=self.campana2)
        self.marca_campana2_1 = GrabacionMarcaFactory(
            callid=self.grabacion2_1.callid)

        self.grabacion3_1 = GrabacionFactory.create(
            tel_cliente=self.contacto.telefono,
            agente=self.agente2,
            campana=self.campana3)
 def test_calificaciones_agenda_se_adicionan_a_llamadas_pendientes(self):
     campana_manual = CampanaFactory(type=Campana.TYPE_MANUAL, estado=Campana.ESTADO_ACTIVA)
     opcion_calificacion_agenda = OpcionCalificacionFactory(
         nombre=settings.CALIFICACION_REAGENDA, campana=campana_manual,
         tipo=OpcionCalificacion.AGENDA)
     CalificacionClienteFactory(
         opcion_calificacion=opcion_calificacion_agenda, agente=self.agente_profile)
     estadisticas_service = EstadisticasService()
     llamadas_pendientes, _, _, _, _ = estadisticas_service.obtener_total_llamadas(
         campana_manual)
     self.assertEqual(llamadas_pendientes, 1)
Exemple #14
0
    def setUp(self):
        super(ReporteDeLLamadasSalientesDeSupervisionTest, self).setUp()
        self.generador = GeneradorDeLlamadaLogs()

        self.supervisor = SupervisorProfileFactory()
        self.agente1 = AgenteProfileFactory()

        self.manual = CampanaFactory.create(type=Campana.TYPE_MANUAL,
                                            nombre='camp-manual-1',
                                            estado=Campana.ESTADO_ACTIVA,
                                            supervisors=[self.supervisor.user])
        self.opcion_calificacion_m1 = OpcionCalificacionFactory(
            campana=self.manual, tipo=OpcionCalificacion.GESTION)
        self.preview = CampanaFactory.create(
            type=Campana.TYPE_PREVIEW,
            nombre='camp-preview-1',
            estado=Campana.ESTADO_ACTIVA,
            supervisors=[self.supervisor.user])
        self.opcion_calificacion_p1 = OpcionCalificacionFactory(
            campana=self.preview, tipo=OpcionCalificacion.GESTION)

        # Campañas que no deben estar en los reportes por no ser del supervisor
        self.manual2 = CampanaFactory.create(type=Campana.TYPE_MANUAL,
                                             nombre='camp-manual-2',
                                             estado=Campana.ESTADO_ACTIVA)
        self.preview2 = CampanaFactory.create(type=Campana.TYPE_PREVIEW,
                                              nombre='camp-preview-2',
                                              estado=Campana.ESTADO_ACTIVA)

        # Campañas que no deben estar en los reportes por no ser MANUAL o PREVIEW
        self.dialer = CampanaFactory.create(type=Campana.TYPE_DIALER,
                                            nombre='camp-dialer-1',
                                            estado=Campana.ESTADO_ACTIVA,
                                            supervisors=[self.supervisor.user])
        self.opcion_calificacion_d1 = OpcionCalificacionFactory(
            campana=self.dialer, tipo=OpcionCalificacion.GESTION)
        self.dialer2 = CampanaFactory.create(type=Campana.TYPE_DIALER,
                                             nombre='camp-dialer-2',
                                             estado=Campana.ESTADO_ACTIVA)
Exemple #15
0
    def setUp(self):
        super(LimitarAgendasPersonalesTests, self).setUp()

        self.grupo1 = GrupoFactory(nombre='grupo1', limitar_agendas_personales=True,
                                   cantidad_agendas_personales=1)
        self.grupo2 = GrupoFactory(nombre='grupo2', limitar_agendas_personales=True,
                                   cantidad_agendas_personales=0)
        self.grupo3 = GrupoFactory(nombre='grupo3', limitar_agendas_personales=False,
                                   cantidad_agendas_personales=0)

        self.agente_1 = self.crear_agente_profile()
        self.agente_1.grupo = self.grupo1
        self.agente_1.save()

        self.agente_2 = self.crear_agente_profile()
        self.agente_2.grupo = self.grupo2
        self.agente_2.save()

        self.agente_3 = self.crear_agente_profile()
        self.agente_3.grupo = self.grupo3
        self.agente_3.save()

        self.contacto = ContactoFactory.create()

        self.campana_preview = CampanaFactory.create(estado=Campana.ESTADO_ACTIVA,
                                                     type=Campana.TYPE_PREVIEW)
        self.campana_dialer = CampanaFactory.create(estado=Campana.ESTADO_ACTIVA,
                                                    type=Campana.TYPE_DIALER)

        self.nombre_calificacion_agenda = NombreCalificacion.objects.get(
            nombre=settings.CALIFICACION_REAGENDA)

        self.opcion_calificacion_agenda_campana_preview = OpcionCalificacionFactory.create(
            campana=self.campana_preview, nombre=self.nombre_calificacion_agenda.nombre,
            tipo=OpcionCalificacion.AGENDA)
        self.opcion_calificacion_agenda_campana_dialer = OpcionCalificacionFactory.create(
            campana=self.campana_dialer, nombre=self.nombre_calificacion_agenda.nombre,
            tipo=OpcionCalificacion.AGENDA)
Exemple #16
0
    def setUp(self):
        super(CalificacionTests, self).setUp()

        self.agente_1 = self.crear_agente_profile()
        self.agente_2 = self.crear_agente_profile()
        self.agente_3 = self.crear_agente_profile()
        self.supervisor = self.crear_supervisor_profile()

        self.campana = CampanaFactory.create(estado=Campana.ESTADO_ACTIVA,
                                             type=Campana.TYPE_MANUAL)
        self.campana.supervisors.add(self.supervisor.user)

        self.nombre_calificacion_agenda = NombreCalificacion.objects.get(
            nombre=settings.CALIFICACION_REAGENDA)
        self.opcion_calificacion_agenda = OpcionCalificacionFactory.create(
            campana=self.campana,
            nombre=self.nombre_calificacion_agenda.nombre,
            tipo=OpcionCalificacion.AGENDA)

        self.contacto_1 = ContactoFactory.create()
        self.campana.bd_contacto.contactos.add(self.contacto_1)
        self.contacto_2 = ContactoFactory.create()
        self.campana.bd_contacto.contactos.add(self.contacto_2)

        self.calificacion_1 = CalificacionClienteFactory(
            opcion_calificacion=self.opcion_calificacion_agenda,
            agente=self.agente_1,
            contacto=self.contacto_1)
        self.agenda_1 = AgendaContactoFactory(
            agente=self.agente_1,
            contacto=self.contacto_1,
            campana=self.campana,
            tipo_agenda=AgendaContacto.TYPE_PERSONAL)
        self.calificacion_2 = CalificacionClienteFactory(
            opcion_calificacion=self.opcion_calificacion_agenda,
            agente=self.agente_2,
            contacto=self.contacto_2)
        self.agenda_2 = AgendaContactoFactory(
            agente=self.agente_2,
            contacto=self.contacto_2,
            campana=self.campana,
            tipo_agenda=AgendaContacto.TYPE_PERSONAL)

        self.queue = QueueFactory.create(campana=self.campana)
        QueueMemberFactory.create(member=self.agente_1, queue_name=self.queue)
        QueueMemberFactory.create(member=self.agente_2, queue_name=self.queue)

        self.client.login(username=self.supervisor.user.username,
                          password=PASSWORD)
Exemple #17
0
    def setUp(self):
        super(ReporteDeLLamadasEntrantesDeSupervisionTest, self).setUp()
        self.generador = GeneradorDeLlamadaLogs()

        self.agente1 = self.crear_agente_profile()
        self.agente2 = self.crear_agente_profile()

        self.entrante1 = CampanaFactory.create(type=Campana.TYPE_ENTRANTE, nombre='camp-entrante-1',
                                               estado=Campana.ESTADO_ACTIVA)
        self.opcion_calificacion = OpcionCalificacionFactory(campana=self.entrante1,
                                                             tipo=OpcionCalificacion.GESTION)
        # Campaña que no debe estar en los reportes por no ser del supervisor
        self.entrante2 = CampanaFactory.create(type=Campana.TYPE_ENTRANTE, nombre='camp-entrante-2',
                                               estado=Campana.ESTADO_ACTIVA)
        self.queue = QueueFactory.create(campana=self.entrante1)
 def test_calificaciones_agenda_se_adicionan_a_llamadas_pendientes(self):
     campana_manual = CampanaFactory(type=Campana.TYPE_MANUAL, estado=Campana.ESTADO_ACTIVA)
     opcion_calificacion_agenda = OpcionCalificacionFactory(
         nombre=settings.CALIFICACION_REAGENDA, campana=campana_manual,
         tipo=OpcionCalificacion.AGENDA)
     log = LlamadaLogFactory(campana_id=campana_manual.pk)
     CalificacionClienteFactory(
         callid=log.callid,
         opcion_calificacion=opcion_calificacion_agenda, agente=self.agente_profile)
     hoy_ahora = fecha_hora_local(timezone.now())
     fecha_desde = datetime_hora_minima_dia_utc(hoy_ahora)
     fecha_hasta = datetime_hora_maxima_dia_utc(hoy_ahora)
     estadisticas_service = EstadisticasService(campana_manual, fecha_desde, fecha_hasta)
     estadisticas_service.calcular_estadisticas_totales()
     self.assertEqual(estadisticas_service.reporte_totales_llamadas.llamadas_pendientes, 1)
Exemple #19
0
 def test_api_modificar_calificacion_NO_permite_modificarla_a_opcion_calificacion_oculta(
         self):
     token_agente = Token.objects.get(user=self.agente_profile.user).key
     client = APIClient()
     client.credentials(HTTP_AUTHORIZATION='Bearer ' + token_agente)
     opcion_oculta = OpcionCalificacionFactory(campana=self.campana_activa,
                                               oculta=True)
     post_data = {
         'idContact': self.calificacion_cliente.contacto.pk,
         'idDispositionOption': opcion_oculta.pk,
         'comments': self.calificacion_cliente.observaciones
     }
     url = reverse('api_disposition-detail',
                   args=(self.calificacion_cliente.pk, ))
     response = client.put(url, post_data)
     self.assertEqual(response.status_code, 400)
     expected_result = {
         'status': 'ERROR',
         'idDispositionOption': 'Disposition option id not found'
     }
     self.assertEqual(response.json(), expected_result)
    def setUp(self):
        super(ReporteDeLLamadasEntrantesDeSupervisionTest, self).setUp()
        self.generador = GeneradorDeLlamadaLogs()

        self.supervisor = SupervisorProfileFactory()
        self.supervisor.user.set_password(self.PWD)
        self.supervisor.user.save()

        self.agente1 = AgenteProfileFactory()

        self.entrante1 = CampanaFactory.create(
            type=Campana.TYPE_ENTRANTE,
            nombre='camp-entrante-1',
            estado=Campana.ESTADO_ACTIVA,
            supervisors=[self.supervisor.user])
        self.opcion_calificacion = OpcionCalificacionFactory(
            campana=self.entrante1, tipo=OpcionCalificacion.GESTION)
        # Campaña que no debe estar en los reportes por no ser del supervisor
        self.entrante2 = CampanaFactory.create(type=Campana.TYPE_ENTRANTE,
                                               nombre='camp-entrante-2',
                                               estado=Campana.ESTADO_ACTIVA)
    def test_no_permite_auditar_en_campanas_no_asignadas(self):
        campana_no_asignada = CampanaFactory.create(
            estado=Campana.ESTADO_ACTIVA)
        nombre_opcion_no_asignada = NombreCalificacionFactory.create()
        opcion_calificacion_no_asignada = OpcionCalificacionFactory.create(
            campana=campana_no_asignada,
            nombre=nombre_opcion_no_asignada.nombre)
        contacto_no_asignada = ContactoFactory.create()
        campana_no_asignada.bd_contacto.contactos.add(contacto_no_asignada)
        calificacion_no_asignada = CalificacionClienteFactory(
            opcion_calificacion=opcion_calificacion_no_asignada,
            agente=self.agente,
            contacto=contacto_no_asignada)

        url = reverse('auditar_calificacion_cliente',
                      args=(calificacion_no_asignada.id, ))
        response = self.client.get(url, follow=True)
        self.assertEqual(response.status_code, 200)
        self.assertRedirects(response,
                             reverse('buscar_auditorias_gestion', args=(1, )))
        self.assertContains(
            response,
            _("No tiene permiso para auditar calificaciones de esta campaña."))
Exemple #22
0
    def setUp(self):
        self.factory = RequestFactory()

        self.supervisor_admin = SupervisorProfileFactory(is_administrador=True)
        self.supervisor_admin.user.set_password(self.PWD)
        self.supervisor_admin.user.save()

        self.supervisor = SupervisorProfileFactory(is_administrador=False)
        self.supervisor.user.set_password(self.PWD)
        self.supervisor.user.save()

        self.agente_profile = AgenteProfileFactory()
        self.agente_profile.user.set_password(self.PWD)
        self.agente_profile.user.is_agente = True
        self.agente_profile.user.save()

        self.campana_activa = CampanaFactory.create(
            estado=Campana.ESTADO_ACTIVA)
        self.campana_activa_supervisor = CampanaFactory.create(
            estado=Campana.ESTADO_ACTIVA)
        self.campana_activa_supervisor.supervisors.add(self.supervisor.user)
        self.campana_finalizada = CampanaFactory(
            estado=Campana.ESTADO_FINALIZADA)
        self.queue = QueueFactory.create(campana=self.campana_activa)
        QueueMemberFactory.create(member=self.agente_profile,
                                  queue_name=self.queue)
        self.sistema_externo = SistemaExternoFactory()
        self.opcion_calificacion = OpcionCalificacionFactory(
            campana=self.campana_activa)

        self.calificacion_cliente = CalificacionClienteFactory(
            opcion_calificacion=self.opcion_calificacion,
            agente=self.agente_profile)

        for user in User.objects.all():
            Token.objects.create(user=user)
Exemple #23
0
    def setUp(self):
        self.supervisor1 = self.crear_supervisor_profile(rol=User.SUPERVISOR)
        self.supervisor2 = self.crear_supervisor_profile(rol=User.SUPERVISOR)

        self.agente1 = self.crear_agente_profile()
        self.agente2 = self.crear_agente_profile()

        self.campana1 = CampanaFactory(estado=Campana.ESTADO_ACTIVA)
        self.queue_campana_1 = QueueFactory(campana=self.campana1)
        QueueMemberFactory(member=self.agente1,
                           queue_name=self.queue_campana_1)
        self.campana1.supervisors.add(self.supervisor1.user)

        self.campana2 = CampanaFactory(estado=Campana.ESTADO_ACTIVA)
        self.queue_campana_2 = QueueFactory(campana=self.campana2)
        QueueMemberFactory(member=self.agente2,
                           queue_name=self.queue_campana_2)
        self.campana2.supervisors.add(self.supervisor2.user)

        self.contacto = ContactoFactory(id_externo='id_ext')
        self.campana3 = CampanaFactory(estado=Campana.ESTADO_ACTIVA)
        self.campana3.bd_contacto.genera_contactos([self.contacto])
        self.campana3.supervisors.add(self.supervisor1.user)

        self.opcion_calificacion = OpcionCalificacionFactory(
            campana=self.campana1, tipo=OpcionCalificacion.GESTION)
        self.calificacion = CalificacionClienteFactory(
            opcion_calificacion=self.opcion_calificacion)
        update_change_reason(self.calificacion, 'calificacion')

        self.llamada_log1 = LlamadaLogFactory.create(
            duracion_llamada=1,
            agente_id=self.agente1.id,
            callid=self.calificacion.callid,
            campana_id=self.campana1.id,
            contacto_id='-1',
            event='COMPLETEAGENT')
        self.llamada_log2 = LlamadaLogFactory.create(
            duracion_llamada=1,
            agente_id=self.agente1.id,
            campana_id=self.campana1.id,
            event='COMPLETEAGENT')
        self.llamada_log3 = LlamadaLogFactory.create(
            duracion_llamada=1,
            agente_id=self.agente1.id,
            campana_id=self.campana1.id,
            event='COMPLETEAGENT')
        self.marca_campana1 = GrabacionMarcaFactory(
            callid=self.llamada_log1.callid)
        self.marca_campana2 = GrabacionMarcaFactory(
            callid=self.llamada_log2.callid)

        self.llamada_log2_1 = LlamadaLogFactory.create(
            duracion_llamada=1,
            agente_id=self.agente2.id,
            campana_id=self.campana2.id,
            event='COMPLETEAGENT')
        self.marca_campana2_1 = GrabacionMarcaFactory(
            callid=self.llamada_log2_1.callid)

        self.llamada_log3_1 = LlamadaLogFactory.create(
            numero_marcado=self.contacto.telefono,
            agente_id=self.agente2.id,
            campana_id=self.campana3.id,
            event='COMPLETEAGENT')

        (_, hace_mucho, ahora) = self._obtener_fechas()
        self.rango_hace_mucho = hace_mucho.date().strftime('%d/%m/%Y') + ' - ' + \
            ahora.date().strftime('%d/%m/%Y')
Exemple #24
0
    def _crear_datos_entorno(self):

        admin = User.objects.filter(is_staff=True).first()

        # crear grupo
        grupo = GrupoFactory()

        # crear modulo
        modulo = ModuloFactory()

        # crear agente
        agente = AgenteProfileFactory(grupo=grupo, reported_by=admin)
        agente.modulos.add(modulo)
        agente.user.username = self.agent_username
        agente.user.set_password(self.agent_password)
        agente.sip_extension = 1000 + agente.id
        agente.user.is_agente = True
        agente.user.save()
        agente.save()

        asterisk_sip_service = ActivacionAgenteService()
        asterisk_sip_service.activar()

        # crear audio
        ArchivoDeAudioFactory()

        # crear pausa
        PausaFactory()

        # crear formulario (2 campos)
        form = FormularioFactory()
        FieldFormularioFactory.create_batch(2, formulario=form)

        # crear califs.(1 gestion y 1 normal)
        success = NombreCalificacionFactory(nombre='Success')
        angry = NombreCalificacionFactory(nombre='Hangs up angry')

        # crear BD (3 contactos)
        bd_contacto = BaseDatosContactoFactory()

        ContactoFactory.create_batch(3, bd_contacto=bd_contacto)

        # crear campaña manual
        campana_manual = CampanaFactory(
            nombre='test_manual_campaign', bd_contacto=bd_contacto, type=Campana.TYPE_MANUAL,
            reported_by=admin, es_manual=True, estado=Campana.ESTADO_ACTIVA
        )
        # crear Queue para la campaña
        Queue.objects.create(
            campana=campana_manual,
            name=campana_manual.nombre,
            maxlen=5,
            wrapuptime=5,
            servicelevel=30,
            strategy='rrmemory',
            eventmemberstatus=True,
            eventwhencalled=True,
            ringinuse=True,
            setinterfacevar=True,
            weight=0,
            wait=120
        )

        # opciones de calificacion
        OpcionCalificacionFactory(
            nombre=success.nombre, campana=campana_manual, tipo=OpcionCalificacion.GESTION)
        OpcionCalificacionFactory(
            nombre=angry.nombre, campana=campana_manual, tipo=OpcionCalificacion.NO_ACCION)

        activacion_queue_service = ActivacionQueueService()
        activacion_queue_service.activar()

        # crea un troncal y con este una ruta entrante hacia el pbx-emulator
        text_config = ("type=friend\n"
                       "host=pbx-emulator\n"
                       "defaultuser=01177660010\n"
                       "secret=OMLtraining72\n"
                       "qualify=yes\n"
                       "insecure=invite\n"
                       "context=from-pstn\n"
                       "disallow=all\n"
                       "allow=alaw\n")
        register_string = "01177660010:OMLtraining72@pbx-emulator"
        troncal_pbx_emulator = TroncalSIPFactory(
            text_config=text_config, register_string=register_string, canales_maximos=1000,
            caller_id='')
        sincronizador_troncal = SincronizadorDeConfiguracionTroncalSipEnAsterisk()
        sincronizador_troncal.regenerar_troncales(troncal_pbx_emulator)
        ruta_saliente = RutaSalienteFactory(ring_time=25, dial_options="Tt")
        PatronDeDiscadoFactory(ruta_saliente=ruta_saliente, match_pattern="X.")
        OrdenTroncalFactory(ruta_saliente=ruta_saliente, orden=0, troncal=troncal_pbx_emulator)
        sincronizador_ruta_saliente = SincronizadorDeConfiguracionDeRutaSalienteEnAsterisk()
        sincronizador_ruta_saliente.regenerar_rutas_salientes(ruta_saliente)
Exemple #25
0
class APITest(OMLBaseTest):
    """Agrupa todos los test relacionados con los servicios creados para la API del sistema"""
    def setUp(self):
        super(APITest, self).setUp()
        self.factory = RequestFactory()

        self.supervisor_admin = self.crear_supervisor_profile(
            rol=User.ADMINISTRADOR)
        self.supervisor = self.crear_supervisor_profile(rol=User.SUPERVISOR)
        self.agente_profile = self.crear_agente_profile()

        self.campana_activa = CampanaFactory.create(
            estado=Campana.ESTADO_ACTIVA,
            type=Campana.TYPE_MANUAL,
            nombre='activa uno')
        self.campana_activa_2 = CampanaFactory.create(
            estado=Campana.ESTADO_ACTIVA,
            type=Campana.TYPE_PREVIEW,
            nombre='activa dos')
        self.campana_activa_supervisor = CampanaFactory.create(
            estado=Campana.ESTADO_ACTIVA,
            type=Campana.TYPE_ENTRANTE,
            nombre='activa supervisor uno')
        self.campana_activa_supervisor.supervisors.add(self.supervisor.user)
        self.campana_finalizada = CampanaFactory(
            estado=Campana.ESTADO_FINALIZADA)
        self.queue = QueueFactory.create(campana=self.campana_activa)
        self.queue1 = QueueFactory.create(campana=self.campana_activa_2)
        self.queue2 = QueueFactory.create(
            campana=self.campana_activa_supervisor)
        self.queue3 = QueueFactory.create(campana=self.campana_finalizada)
        QueueMemberFactory.create(member=self.agente_profile,
                                  queue_name=self.queue)
        self.sistema_externo = SistemaExternoFactory()
        self.opcion_calificacion = OpcionCalificacionFactory(
            campana=self.campana_activa)

        self.contacto = ContactoFactory(
            bd_contacto=self.campana_activa.bd_contacto)
        self.calificacion_cliente = CalificacionClienteFactory(
            opcion_calificacion=self.opcion_calificacion,
            agente=self.agente_profile,
            contacto=self.contacto)

        for user in User.objects.all():
            Token.objects.create(user=user)

    def test_api_campanas_supervisor_usuario_supervisor_admin_obtiene_todas_campanas_activas(
            self):
        self.client.login(username=self.supervisor_admin.user.username,
                          password=PASSWORD)
        url = reverse('api_campanas_de_supervisor')
        response = self.client.get(url)
        ids_campanas_esperadas = set(
            Campana.objects.obtener_activas().values_list('id', flat=True))
        ids_campanas_devueltas = set(
            [campana['id'] for campana in response.data])
        self.assertEqual(ids_campanas_esperadas, ids_campanas_devueltas)

    def test_api_campanas_supervisor_admin_filtro_nombre(self):
        self.client.login(username=self.supervisor_admin.user.username,
                          password=PASSWORD)
        url = reverse('api_campanas_de_supervisor')
        response = self.client.get(url, {'name': 'uno'})
        ids_campanas_esperadas = set(
            (self.campana_activa.id, self.campana_activa_supervisor.id))
        ids_campanas_devueltas = set(
            [campana['id'] for campana in response.data])
        self.assertEqual(ids_campanas_esperadas, ids_campanas_devueltas)

    def test_api_campanas_supervisor_admin_filtro_tipo(self):
        self.client.login(username=self.supervisor_admin.user.username,
                          password=PASSWORD)
        url = reverse('api_campanas_de_supervisor')
        response = self.client.get(url, {'type': Campana.TYPE_MANUAL})
        ids_campanas_esperadas = set([self.campana_activa.id])
        ids_campanas_devueltas = set(
            [campana['id'] for campana in response.data])
        self.assertEqual(ids_campanas_esperadas, ids_campanas_devueltas)

    def test_api_campanas_supervisor_admin_filtro_tipos(self):
        self.client.login(username=self.supervisor_admin.user.username,
                          password=PASSWORD)
        url = reverse('api_campanas_de_supervisor')
        response = self.client.get(
            url, {'type': str([Campana.TYPE_MANUAL, Campana.TYPE_PREVIEW])})
        ids_campanas_esperadas = set(
            [self.campana_activa.id, self.campana_activa_2.id])
        ids_campanas_devueltas = set(
            [campana['id'] for campana in response.data])
        self.assertEqual(ids_campanas_esperadas, ids_campanas_devueltas)

    def test_api_campanas_supervisor_admin_filtro_agente(self):
        self.client.login(username=self.supervisor_admin.user.username,
                          password=PASSWORD)
        url = reverse('api_campanas_de_supervisor')
        QueueMemberFactory.create(
            member=self.agente_profile,
            queue_name=self.campana_activa_supervisor.queue_campana)
        response = self.client.get(url, {'agent': self.agente_profile.id})
        ids_campanas_esperadas = set(
            (self.campana_activa.id, self.campana_activa_supervisor.id))
        ids_campanas_devueltas = set(
            [campana['id'] for campana in response.data])
        self.assertEqual(ids_campanas_esperadas, ids_campanas_devueltas)

    def test_api_campanas_supervisor_usr_supervisor_no_admin_obtiene_campanas_activas_asignadas(
            self):
        self.client.login(username=self.supervisor.user.username,
                          password=PASSWORD)
        url = reverse('api_campanas_de_supervisor')
        response = self.client.get(url)
        self.assertEqual(len(response.data), 1)
        self.assertEqual(response.data[0]['id'],
                         self.campana_activa_supervisor.id)

    def test_servicio_campanas_supervisor_usuario_agente_no_accede_a_servicio(
            self):
        self.client.login(username=self.agente_profile.user.username,
                          password=PASSWORD)
        url = reverse('api_campanas_de_supervisor')
        response = self.client.get(url)
        self.assertEqual(response.status_code, 403)

    def test_servicio_campanas_supervisor_usuario_no_logueado_no_accede_a_servicio(
            self):
        url = reverse('api_campanas_de_supervisor')
        response = self.client.get(url)
        self.assertEqual(response.status_code, 403)

    def test_servicio_agentes_activos_usuario_no_logueado_no_accede_a_servicio(
            self):
        url = reverse('api_agentes_activos')
        response = self.client.get(url, follow=True)
        self.assertTemplateUsed(response, 'registration/login.html')

    def test_servicio_opciones_calificaciones_usuario_no_logueado_no_accede_a_servicio(
            self):
        url = reverse('api_campana_opciones_calificacion-list',
                      args=[self.campana_activa.pk, 1])
        response = self.client.get(url, follow=True)
        self.assertEqual(response.status_code, 403)

    def test_servicio_opciones_calificaciones_usuario_no_agente_no_accede_a_servicio(
            self):
        url = reverse('api_campana_opciones_calificacion-list',
                      args=[self.campana_activa.pk, 1])
        self.client.login(username=self.supervisor_admin.user.username,
                          password=PASSWORD)
        response = self.client.get(url, follow=True)
        self.assertEqual(response.status_code, 403)

    def test_servicio_opciones_calificaciones_usuario_agente_accede_a_servicio(
            self):
        id_externo = "id_externo_campana_activa"
        self.sistema_externo.campanas.add(self.campana_activa)
        self.campana_activa.id_externo = id_externo
        self.campana_activa.save()
        self.client.login(username=self.agente_profile.user.username,
                          password=PASSWORD)
        url = reverse('api_campana_opciones_calificacion-list',
                      args=[id_externo, self.sistema_externo.pk])
        response = self.client.get(url, follow=True)
        self.assertEqual(response.status_code, 200)
        self.assertEqual(response.json()[0]['name'],
                         self.opcion_calificacion.nombre)

    def test_servicio_opciones_calificaciones_usuario_agente_accede_a_servicio_via_token(
            self):
        token_agente = Token.objects.get(user=self.agente_profile.user).key
        client = APIClient()
        client.credentials(HTTP_AUTHORIZATION='Bearer ' + token_agente)
        id_externo = "id_externo_campana_activa"
        self.sistema_externo.campanas.add(self.campana_activa)
        self.campana_activa.id_externo = id_externo
        self.campana_activa.save()
        url = reverse('api_campana_opciones_calificacion-list',
                      args=[id_externo, self.sistema_externo.pk])
        response = client.get(url, follow=True)
        self.assertEqual(response.status_code, 200)
        self.assertEqual(response.json()[0]['name'],
                         self.opcion_calificacion.nombre)

    def test_api_vista_opciones_calificaciones_no_es_accessible_usando_token_no_agente(
            self):
        token_supervisor = Token.objects.get(
            user=self.supervisor_admin.user).key
        client = APIClient()
        client.credentials(HTTP_AUTHORIZATION='Bearer ' + token_supervisor)
        url = reverse('api_campana_opciones_calificacion-list',
                      args=[1, self.sistema_externo.pk])
        response = client.get(url)
        self.assertEqual(response.status_code, 403)

    def test_api_opciones_calificacion_devuelve_404_si_sistema_externo_no_es_entero(
            self):
        token_agente = Token.objects.get(user=self.agente_profile.user).key
        client = APIClient()
        client.credentials(HTTP_AUTHORIZATION='Bearer ' + token_agente)
        url = reverse('api_campana_opciones_calificacion-list', args=(1, 1))
        response = client.get(url)
        self.assertEqual(response.status_code, 404)

    def test_api_opciones_calificacion_sin_sistema_externo_devuelve_404_id_campana_no_entero(
            self):
        token_agente = Token.objects.get(user=self.agente_profile.user).key
        client = APIClient()
        client.credentials(HTTP_AUTHORIZATION='Bearer ' + token_agente)
        url = reverse('api_campana_opciones_calificacion_intern-list',
                      args=("campana_id_str", ))
        response = client.get(url)
        self.assertEqual(response.status_code, 404)

    def test_api_opciones_calificacion_sin_sistema_externo_usa_id_campana_oml(
            self):
        token_agente = Token.objects.get(user=self.agente_profile.user).key
        client = APIClient()
        client.credentials(HTTP_AUTHORIZATION='Bearer ' + token_agente)
        url = reverse('api_campana_opciones_calificacion_intern-list',
                      args=(self.campana_activa.pk, ))

        response = client.get(url)
        self.assertEqual(response.status_code, 200)
        self.assertEqual(response.json()[0]['name'],
                         self.opcion_calificacion.nombre)

    def test_api_opciones_calificacion_ocultando_opcion_calificacion(self):
        opcion_calificacion_2 = OpcionCalificacionFactory(
            campana=self.campana_activa)
        self.opcion_calificacion.oculta = True
        self.opcion_calificacion.save()
        token_agente = Token.objects.get(user=self.agente_profile.user).key
        client = APIClient()
        client.credentials(HTTP_AUTHORIZATION='Bearer ' + token_agente)
        url = reverse('api_campana_opciones_calificacion_intern-list',
                      args=(self.campana_activa.pk, ))

        response = client.get(url)
        self.assertEqual(response.status_code, 200)
        self.assertEqual(len(response.json()), 2)
        opcion_data_1 = response.json()[0]
        opcion_data_2 = response.json()[1]
        if response.json()[1]['id'] == self.opcion_calificacion.id:
            opcion_data_1 = response.json()[1]
            opcion_data_2 = response.json()[0]
        self.assertEqual(opcion_data_1['id'], self.opcion_calificacion.id)
        self.assertEqual(opcion_data_2['id'], opcion_calificacion_2.id)
        self.assertEqual(opcion_data_1['name'],
                         self.opcion_calificacion.nombre)
        self.assertEqual(opcion_data_2['name'], opcion_calificacion_2.nombre)
        self.assertTrue(opcion_data_1['hidden'])
        self.assertFalse(opcion_data_2['hidden'])

    def set_redis_mock_return_values(self, redis_mock_class, keys, values):

        redis_fake_dict = dict(zip(keys, values))
        redis_mock_class.return_value.keys.return_value = keys

        def hgetall_fake(key):
            return redis_fake_dict[key]

        redis_mock_class.return_value.hgetall = hgetall_fake

        return redis_mock_class

    @patch(
        'ominicontacto_app.services.asterisk.supervisor_activity.redis.Redis')
    def test_servicio_agentes_activos_funciona_correctamente(self, Redis):
        ag1_pk = self.agente_profile.pk
        self.campana_activa.supervisors.add(self.supervisor_admin.user)
        ag2 = self.crear_agente_profile()
        QueueMemberFactory.create(member=ag2, queue_name=self.queue)
        key1 = 'OML:AGENT:{0}'.format(ag1_pk)
        key2 = 'OML:AGENT:{0}'.format(ag2.pk)
        key3 = 'OML:SUPERVISOR:{0}'.format(self.supervisor_admin.pk)
        now = datetime.now()
        timestamp = datetime.timestamp(now)
        key1_value = {
            'TIMESTAMP': timestamp,
            'STATUS': 'READY',
            'NAME': self.agente_profile.user.get_full_name(),
            'SIP': self.agente_profile.sip_extension
        }
        key2_value = {
            'TIMESTAMP': timestamp,
            'NAME': ag2.user.get_full_name(),
            'SIP': ag2.sip_extension,
            'STATUS': 'PAUSE',
        }
        key3_value = {
            str(ag1_pk):
            json.dumps({
                'grupo': self.agente_profile.grupo.nombre,
                'campana': [
                    self.campana_activa.nombre,
                ]
            }),
            str(ag2.pk):
            json.dumps({
                'grupo': ag2.grupo.nombre,
                'campana': [
                    self.campana_activa.nombre,
                ]
            }),
        }

        Redis = self.set_redis_mock_return_values(
            Redis, [key1, key2, key3], [key1_value, key2_value, key3_value])

        self.client.login(username=self.supervisor_admin.user.username,
                          password=PASSWORD)
        url = reverse('api_agentes_activos')
        response = self.client.get(url)
        response_json = response.json()
        ag1_value = response_json[0]
        ag2_value = response_json[1]
        self.assertEqual(len(response_json), 2)
        self.assertEqual(ag1_value['id'], ag1_pk)
        self.assertEqual(ag2_value['id'], ag2.pk)

    @patch(
        'ominicontacto_app.services.asterisk.supervisor_activity.redis.Redis')
    def test_servicio_agentes_activos_no_muestra_entradas_status_vacio(
            self, Redis):
        ag1_pk = self.agente_profile.pk
        self.campana_activa.supervisors.add(self.supervisor_admin.user)
        ag2 = self.crear_agente_profile()
        QueueMemberFactory.create(member=ag2, queue_name=self.queue)
        key1 = 'OML:AGENT:{0}'.format(ag1_pk)
        key2 = 'OML:AGENT:{0}'.format(ag2.pk)
        key3 = 'OML:SUPERVISOR:{0}'.format(self.supervisor_admin.pk)
        now = datetime.now()
        timestamp = datetime.timestamp(now)
        key1_value = {
            'TIMESTAMP': timestamp,
            'STATUS': 'READY',
            'NAME': self.agente_profile.user.get_full_name(),
            'SIP': self.agente_profile.sip_extension
        }
        key2_value = {
            'TIMESTAMP': timestamp,
            'NAME': ag2.user.get_full_name(),
            'SIP': ag2.sip_extension
        }
        key3_value = {
            str(ag1_pk):
            json.dumps({
                'grupo': self.agente_profile.grupo.nombre,
                'campana': [
                    self.campana_activa.nombre,
                ]
            })
        }
        Redis = self.set_redis_mock_return_values(
            Redis, [key1, key2, key3], [key1_value, key2_value, key3_value])

        self.client.login(username=self.supervisor_admin.user.username,
                          password=PASSWORD)
        url = reverse('api_agentes_activos')
        response = self.client.get(url)
        response_json = response.json()
        ag_value = response_json[0]
        self.assertEqual(len(response_json), 1)
        self.assertEqual(ag_value['id'], ag1_pk)

    @patch(
        'ominicontacto_app.services.asterisk.supervisor_activity.redis.Redis')
    def test_servicio_agentes_activos_no_muestra_entradas_con_menos_campos(
            self, Redis):
        ag1_pk = self.agente_profile.pk
        self.campana_activa.supervisors.add(self.supervisor_admin.user)
        ag2 = self.crear_agente_profile()
        QueueMemberFactory.create(member=ag2, queue_name=self.queue)
        key1 = 'OML:AGENT:{0}'.format(ag1_pk)
        key2 = 'OML:AGENT:{0}'.format(ag2.pk)
        key3 = 'OML:SUPERVISOR:{0}'.format(self.supervisor_admin.pk)
        now = datetime.now()
        timestamp = datetime.timestamp(now)
        key1_value = {
            'STATUS': 'READY',
            'NAME': self.agente_profile.user.get_full_name(),
            'SIP': self.agente_profile.sip_extension
        }
        key2_value = {
            'TIMESTAMP': timestamp,
            'NAME': ag2.user.get_full_name(),
            'SIP': ag2.sip_extension
        }
        key3_value = {
            str(ag1_pk):
            json.dumps({
                'grupo': self.agente_profile.grupo.nombre,
                'campana': [
                    self.campana_activa.nombre,
                ]
            })
        }
        Redis = self.set_redis_mock_return_values(
            Redis, [key1, key2, key3], [key1_value, key2_value, key3_value])

        self.client.login(username=self.supervisor_admin.user.username,
                          password=PASSWORD)
        url = reverse('api_agentes_activos')
        response = self.client.get(url)
        response_json = response.json()
        self.assertEqual(len(response_json), 0)

    def test_api_login_devuelve_token_asociado_al_usuario_password(self):
        url = 'https://{0}{1}'.format(settings.OML_OMNILEADS_HOSTNAME,
                                      reverse('api_login'))
        user = self.supervisor_admin.user
        password = PASSWORD
        post_data = {
            'username': user.username,
            'password': password,
        }
        request = self.factory.post(url, data=post_data)
        response = login(request)
        token_obj = Token.objects.get(user=user)
        self.assertEqual(response.data['token'], token_obj.key)

    def test_api_vista_contactos_campanas_es_accessible_usando_token_agente(
            self):
        ContactoFactory(bd_contacto=self.campana_activa.bd_contacto)
        cantidad = self.campana_activa.bd_contacto.contactos.count()
        token_agente = Token.objects.get(user=self.agente_profile.user).key
        client = APIClient()
        client.credentials(HTTP_AUTHORIZATION='Bearer ' + token_agente)
        url = reverse('api_contactos_campana', args=(self.campana_activa.pk, ))
        response = client.get(url, {
            'search[value]': 1,
            'start': 1,
            'length': 10,
            'draw': 10
        },
                              format='json')
        self.assertEqual(response.status_code, 200)
        self.assertEqual(response.data['recordsTotal'], cantidad)

    def test_api_vista_contactos_campanas_no_es_accessible_usando_token_no_agente(
            self):
        token_agente = Token.objects.get(user=self.supervisor_admin.user).key
        client = APIClient()
        client.credentials(HTTP_AUTHORIZATION='Bearer ' + token_agente)
        url = reverse('api_contactos_campana', args=(self.campana_activa.pk, ))
        response = client.get(url, {
            'search[value]': 1,
            'start': 1,
            'length': 10,
            'draw': 10
        },
                              format='json')
        self.assertEqual(response.status_code, 403)

    def test_api_adiciona_calificacion_ids_internos(self):
        token_agente = Token.objects.get(user=self.agente_profile.user).key
        client = APIClient()
        client.credentials(HTTP_AUTHORIZATION='Bearer ' + token_agente)
        observaciones = 'calificacion externa'
        contacto = ContactoFactory(bd_contacto=self.campana_activa.bd_contacto)
        url = reverse('api_disposition-list')
        post_data = {
            'idContact': contacto.pk,
            'idDispositionOption': self.opcion_calificacion.pk,
            'comments': observaciones
        }
        calificaciones_count = CalificacionCliente.objects.count()
        client.post(url, post_data)
        self.assertEqual(CalificacionCliente.objects.count(),
                         calificaciones_count + 1)

    def test_api_adiciona_calificacion_ids_externos(self):
        self.client.login(username=self.agente_profile.user.username,
                          password=PASSWORD)
        observaciones = 'calificacion externa'
        id_contacto_externo = 'contacto_externo_1'
        AgenteEnSistemaExternoFactory(agente=self.agente_profile,
                                      sistema_externo=self.sistema_externo)
        ContactoFactory(bd_contacto=self.campana_activa.bd_contacto,
                        id_externo=id_contacto_externo)
        url = reverse('api_disposition-list')
        post_data = {
            'idExternalSystem': self.sistema_externo.pk,
            'idContact': id_contacto_externo,
            'idDispositionOption': self.opcion_calificacion.pk,
            'comments': observaciones
        }
        calificaciones_count = CalificacionCliente.objects.count()
        self.client.post(url, post_data)
        self.assertEqual(CalificacionCliente.objects.count(),
                         calificaciones_count + 1)

    def test_api_adiciona_calificacion_ids_internos_no_se_accede_credenciales_no_agente(
            self):
        observaciones = 'calificacion externa'
        contacto = ContactoFactory(bd_contacto=self.campana_activa.bd_contacto)
        url = reverse('api_disposition-list')
        post_data = {
            'idContact': contacto.pk,
            'idAgent': self.agente_profile.pk,
            'idDispositionOption': self.opcion_calificacion.pk,
            'comments': observaciones
        }
        token_supervisor = Token.objects.get(
            user=self.supervisor_admin.user).key
        client = APIClient()
        client.credentials(HTTP_AUTHORIZATION='Bearer ' + token_supervisor)
        url = reverse('api_disposition-list')
        response = client.post(url, post_data)
        self.assertEqual(response.status_code, 403)

    def test_api_crea_nueva_calificacion_con_nuevo_contacto_metadata_vacia(
            self):
        self.client.login(username=self.agente_profile.user.username,
                          password=PASSWORD)
        observaciones = 'calificacion externa'
        phone = '1232343523'
        id_contacto_externo = 'contacto_externo_1'
        url = reverse('api_disposition_new_contact-list')
        post_data = {
            'phone': phone,
            'idExternalContact': id_contacto_externo,
            'idDispositionOption': self.opcion_calificacion.pk,
            'comments': observaciones
        }
        calificaciones_count = CalificacionCliente.objects.count()
        contactos_count = Contacto.objects.count()
        self.client.post(url, post_data)
        self.assertEqual(CalificacionCliente.objects.count(),
                         calificaciones_count + 1)
        self.assertEqual(Contacto.objects.count(), contactos_count + 1)

    def test_api_crea_nueva_calificacion_con_nuevo_contacto_con_valores_metadata(
            self):
        token_agente = Token.objects.get(user=self.agente_profile.user).key
        client = APIClient()
        client.credentials(HTTP_AUTHORIZATION='Bearer ' + token_agente)
        observaciones = 'calificacion externa'
        phone = '1232343523'
        id_contacto_externo = 'contacto_externo_1'
        url = reverse('api_disposition_new_contact-list')
        post_data = {
            'phone': phone,
            'idExternalContact': id_contacto_externo,
            'idDispositionOption': self.opcion_calificacion.pk,
            'comments': observaciones,
        }
        contacto_a_crear = ContactoFactory.build(
            bd_contacto=self.campana_activa.bd_contacto)
        post_data.update(contacto_a_crear.obtener_datos())
        post_data.pop('telefono')
        calificaciones_count = CalificacionCliente.objects.count()
        contactos_count = Contacto.objects.count()
        client.post(url, post_data)
        self.assertEqual(CalificacionCliente.objects.count(),
                         calificaciones_count + 1)
        self.assertEqual(Contacto.objects.count(), contactos_count + 1)
        self.assertTrue(
            Contacto.objects.filter(datos=contacto_a_crear.datos).exists())

    def test_api_crear_nueva_calificacion_con_nuevo_contacto_con_opcion_oculta_falla(
            self):
        self.opcion_calificacion.oculta = True
        self.opcion_calificacion.save()
        self.client.login(username=self.agente_profile.user.username,
                          password=PASSWORD)
        observaciones = 'calificacion externa'
        phone = '1232343523'
        id_contacto_externo = 'contacto_externo_1'
        url = reverse('api_disposition_new_contact-list')
        post_data = {
            'phone': phone,
            'idExternalContact': id_contacto_externo,
            'idDispositionOption': self.opcion_calificacion.pk,
            'comments': observaciones
        }
        calificaciones_count = CalificacionCliente.objects.count()
        contactos_count = Contacto.objects.count()
        response = self.client.post(url, post_data)
        response_data = response.json()
        self.assertEqual(response.status_code, 400)
        self.assertIn('idDispositionOption', response_data)
        self.assertEqual(response_data['idDispositionOption'],
                         'Disposition option id not found')
        self.assertEqual(CalificacionCliente.objects.count(),
                         calificaciones_count)
        self.assertEqual(Contacto.objects.count(), contactos_count)

    def test_api_crear_calificacion_impide_calificar_mas_de_una_vez_contacto_campana(
            self):
        token_agente = Token.objects.get(user=self.agente_profile.user).key
        client = APIClient()
        client.credentials(HTTP_AUTHORIZATION='Bearer ' + token_agente)
        observaciones = 'calificacion externa'
        post_data = {
            'idContact': self.calificacion_cliente.contacto.pk,
            'idAgent': self.agente_profile.pk,
            'idDispositionOption': self.opcion_calificacion.pk,
            'comments': observaciones
        }
        url = reverse('api_disposition-list')
        response = client.post(url, post_data)
        self.assertEqual(response.status_code, 400)

    def test_api_modificar_calificacion_impide_calificar_mas_de_una_vez_contacto_campana(
            self):
        contacto_nuevo = ContactoFactory(
            bd_contacto=self.campana_activa.bd_contacto)
        CalificacionClienteFactory(
            opcion_calificacion=self.opcion_calificacion,
            contacto=contacto_nuevo)
        token_agente = Token.objects.get(user=self.agente_profile.user).key
        client = APIClient()
        client.credentials(HTTP_AUTHORIZATION='Bearer ' + token_agente)
        observaciones = 'calificacion externa'
        post_data = {
            'id': self.calificacion_cliente.pk,
            'idContact': contacto_nuevo.pk,
            'idAgent': self.agente_profile.pk,
            'idDispositionOption': self.opcion_calificacion.pk,
            'comments': observaciones
        }
        url = reverse('api_disposition-detail',
                      args=(self.calificacion_cliente.pk, ))
        response = client.put(url, post_data)
        self.assertEqual(response.status_code, 400)
        self.assertEqual(str(response.data['status']), 'ERROR')

    def test_api_modificar_calificacion_permite_modificarla_con_opcion_calificacion_oculta(
            self):
        token_agente = Token.objects.get(user=self.agente_profile.user).key
        client = APIClient()
        client.credentials(HTTP_AUTHORIZATION='Bearer ' + token_agente)
        self.opcion_calificacion.oculta = True
        self.opcion_calificacion.save()
        observaciones = 'Nuevas observaciones'
        post_data = {
            'idContact': self.calificacion_cliente.contacto.pk,
            'idDispositionOption': self.opcion_calificacion.pk,
            'comments': observaciones
        }
        url = reverse('api_disposition-detail',
                      args=(self.calificacion_cliente.pk, ))
        response = client.put(url, post_data)
        self.assertEqual(response.status_code, 200)
        expected_result = {
            "id": self.calificacion_cliente.id,
            "idContact": self.calificacion_cliente.contacto.id,
            "callid": None,
            "idDispositionOption":
            self.calificacion_cliente.opcion_calificacion.id,
            "comments": observaciones
        }
        self.assertEqual(response.json(), expected_result)

    def test_api_modificar_calificacion_NO_permite_modificarla_a_opcion_calificacion_oculta(
            self):
        token_agente = Token.objects.get(user=self.agente_profile.user).key
        client = APIClient()
        client.credentials(HTTP_AUTHORIZATION='Bearer ' + token_agente)
        opcion_oculta = OpcionCalificacionFactory(campana=self.campana_activa,
                                                  oculta=True)
        post_data = {
            'idContact': self.calificacion_cliente.contacto.pk,
            'idDispositionOption': opcion_oculta.pk,
            'comments': self.calificacion_cliente.observaciones
        }
        url = reverse('api_disposition-detail',
                      args=(self.calificacion_cliente.pk, ))
        response = client.put(url, post_data)
        self.assertEqual(response.status_code, 400)
        expected_result = {
            'status': 'ERROR',
            'idDispositionOption': 'Disposition option id not found'
        }
        self.assertEqual(response.json(), expected_result)

    def test_api_crear_calificacion_con_opcion_oculta_para_contacto_existente_falla(
            self):
        id_contacto = self.calificacion_cliente.contacto.pk
        CalificacionCliente.objects.all().delete()
        self.opcion_calificacion.oculta = True
        self.opcion_calificacion.save()

        token_agente = Token.objects.get(user=self.agente_profile.user).key
        client = APIClient()
        client.credentials(HTTP_AUTHORIZATION='Bearer ' + token_agente)
        observaciones = 'calificacion externa'
        post_data = {
            'idContact': id_contacto,
            'idAgent': self.agente_profile.pk,
            'idDispositionOption': self.opcion_calificacion.pk,
            'comments': observaciones
        }
        url = reverse('api_disposition-list')
        response = client.post(url, post_data)
        self.assertEqual(response.status_code, 400)
        response_data = response.json()
        self.assertEqual(response_data['status'], 'ERROR')
        self.assertIn('idDispositionOption', response_data)
        self.assertEqual(response_data['idDispositionOption'],
                         'Disposition option id not found')

    def test_api_muestra_solo_las_calificaciones_que_ha_hecho_el_agente_que_accede(
            self):
        contacto_nuevo = ContactoFactory(
            bd_contacto=self.campana_activa.bd_contacto)
        CalificacionClienteFactory(
            opcion_calificacion=self.opcion_calificacion,
            contacto=contacto_nuevo)
        token_agente = Token.objects.get(user=self.agente_profile.user).key
        client = APIClient()
        client.credentials(HTTP_AUTHORIZATION='Bearer ' + token_agente)
        url = reverse('api_disposition-list')
        response = client.get(url)
        self.assertEqual(response.status_code, 200)
        self.assertEqual(len(response.data), 1)

    @patch(
        'ominicontacto_app.services.asterisk.asterisk_ami.AMIManagerConnector')
    @patch.object(AgentActivityAmiManager, "login_agent")
    def test_api_vista_login_de_agente_retorno_de_valores_correctos(
            self, login_agent, manager):
        self.client.login(username=self.agente_profile.user.username,
                          password=PASSWORD)
        login_agent.return_value = False
        url = reverse('api_agent_asterisk_login')
        response = self.client.post(url)
        self.assertEqual(response.status_code, 200)
        self.assertEqual(response.json()['status'], 'OK')

    @patch(
        'ominicontacto_app.services.asterisk.asterisk_ami.AMIManagerConnector')
    @patch.object(AgentActivityAmiManager, "login_agent")
    def test_api_vista_login_de_agente_retorno_de_valores_erroneos(
            self, login_agent, manager):
        self.client.login(username=self.agente_profile.user.username,
                          password=PASSWORD)
        login_agent.return_value = True
        url = reverse('api_agent_asterisk_login')
        response = self.client.post(url)
        self.assertEqual(response.status_code, 200)
        self.assertEqual(response.json()['status'], 'ERROR')

    @patch(
        'ominicontacto_app.services.asterisk.asterisk_ami.AMIManagerConnector')
    @patch.object(AgentActivityAmiManager, "pause_agent")
    def test_api_vista_pausa_de_agente_retorno_de_valores_correctos(
            self, pause_agent, manager):
        self.client.login(username=self.agente_profile.user.username,
                          password=PASSWORD)
        pause_agent.return_value = False, False
        url = reverse('api_make_pause')
        post_data = {'pause_id': 1}
        response = self.client.post(url, post_data)
        self.assertEqual(response.status_code, 200)
        self.assertEqual(response.json()['status'], 'OK')

    @patch(
        'ominicontacto_app.services.asterisk.asterisk_ami.AMIManagerConnector')
    @patch.object(AgentActivityAmiManager, "pause_agent")
    def test_api_vista_pausa_de_agente_retorno_de_valores_erroneos(
            self, pause_agent, manager):
        self.client.login(username=self.agente_profile.user.username,
                          password=PASSWORD)
        pause_agent.return_value = True, False
        url = reverse('api_make_pause')
        post_data = {'pause_id': 1}
        response = self.client.post(url, post_data)
        self.assertEqual(response.status_code, 200)
        self.assertEqual(response.json()['status'], 'ERROR')

    @patch(
        'ominicontacto_app.services.asterisk.asterisk_ami.AMIManagerConnector')
    @patch.object(AgentActivityAmiManager, "unpause_agent")
    def test_api_vista_despausa_de_agente_retorno_de_valores_correctos(
            self, unpause_agent, manager):
        self.client.login(username=self.agente_profile.user.username,
                          password=PASSWORD)
        unpause_agent.return_value = False, False
        url = reverse('api_make_unpause')
        post_data = {'pause_id': 1}
        response = self.client.post(url, post_data)
        self.assertEqual(response.status_code, 200)
        self.assertEqual(response.json()['status'], 'OK')

    @patch(
        'ominicontacto_app.services.asterisk.asterisk_ami.AMIManagerConnector')
    @patch.object(AgentActivityAmiManager, "unpause_agent")
    def test_api_vista_despausa_de_agente_retorno_de_valores_erroneos(
            self, unpause_agent, manager):
        self.client.login(username=self.agente_profile.user.username,
                          password=PASSWORD)
        unpause_agent.return_value = True, False
        url = reverse('api_make_unpause')
        post_data = {'pause_id': 1}
        response = self.client.post(url, post_data)
        self.assertEqual(response.status_code, 200)
        self.assertEqual(response.json()['status'], 'ERROR')