Esempio n. 1
0
    def test_hace_peticion_sitio_externo_en_servidor(self, request_get):
        self.campana.type = Campana.TYPE_PREVIEW
        self.campana.tipo_interaccion = Campana.SITIO_EXTERNO
        sitio_externo = SitioExternoFactory(disparador=SitioExterno.SERVER,
                                            metodo=SitioExterno.GET,
                                            objetivo=None, formato=None)
        self.campana.sitio_externo = sitio_externo
        self.campana.save()
        ParametrosCrmFactory(campana=self.campana)
        call_data = self.get_call_data()
        url = reverse('calificar_llamada', kwargs={'call_data_json': json.dumps(call_data)})

        self.client.get(url)
        parametros = sitio_externo.get_parametros(self.agente_profile,
                                                  self.campana,
                                                  self.contacto,
                                                  call_data)
        request_get.assert_called_with(sitio_externo.url, params=parametros)
Esempio n. 2
0
class TestsSitioExterno(OMLBaseTest):
    PWD = u'admin123'

    def setUp(self, *args, **kwargs):
        self.agente = self.crear_agente_profile()
        self.sitio_externo = SitioExternoFactory()
        self.campana = CampanaFactory(sitio_externo=self.sitio_externo,
                                      tipo_interaccion=2)
        self.contacto = ContactoFactory()
        self.call_data = {
            'call_id': '1234',
            'agent_id': str(self.agente.id),
            'telefono': '351351351',
            'id_contacto': str(self.contacto.id),
            'rec_filename': 'rec_filename',
            'call_wait_duration': '44',
        }
        super(TestsSitioExterno, self).setUp(*args, **kwargs)

    def test_obtener_parametros_campana(self):
        nombres = ['id', 'nombre', 'tipo']
        for nombre in nombres:
            ParametrosCrmFactory(campana=self.campana, tipo=ParametrosCrm.DATO_CAMPANA,
                                 nombre=nombre, valor=nombre)
        parametros = self.sitio_externo.get_parametros(self.agente, self.campana, self.contacto,
                                                       self.call_data)
        self.assertEqual(len(parametros), len(nombres))
        for nombre in nombres:
            self.assertIn(nombre, parametros)
        self.assertEqual(parametros['id'], str(self.campana.id))
        self.assertEqual(parametros['nombre'], self.campana.nombre)
        self.assertEqual(parametros['tipo'], self.campana.get_type_display())

    def test_obtener_parametros_llamada(self):
        nombres = ['call_id', 'agent_id', 'telefono', 'id_contacto', 'rec_filename',
                   'call_wait_duration']
        for nombre in nombres:
            ParametrosCrmFactory(campana=self.campana, tipo=ParametrosCrm.DATO_LLAMADA,
                                 nombre=nombre, valor=nombre)
        parametros = self.sitio_externo.get_parametros(self.agente, self.campana, self.contacto,
                                                       self.call_data)
        self.assertEqual(len(parametros), len(nombres))
        for nombre in nombres:
            self.assertIn(nombre, parametros)
        self.assertEqual(parametros['call_id'], self.call_data['call_id'])
        self.assertEqual(parametros['agent_id'], self.call_data['agent_id'])
        self.assertEqual(parametros['telefono'], self.call_data['telefono'])
        self.assertEqual(parametros['id_contacto'], self.call_data['id_contacto'])
        self.assertEqual(parametros['rec_filename'], self.call_data['rec_filename'])
        self.assertEqual(parametros['call_wait_duration'], self.call_data['call_wait_duration'])

    def test_obtener_parametros_contacto(self):
        for nombre in COLUMNAS_DB_DEFAULT:
            ParametrosCrmFactory(campana=self.campana, tipo=ParametrosCrm.DATO_CONTACTO,
                                 nombre=nombre, valor=nombre)
        parametros = self.sitio_externo.get_parametros(self.agente, self.campana, self.contacto,
                                                       self.call_data)
        self.assertEqual(len(parametros), len(COLUMNAS_DB_DEFAULT))
        for nombre in COLUMNAS_DB_DEFAULT:
            self.assertIn(nombre, parametros)

    def test_obtener_parametros_custom(self):
        ParametrosCrmFactory(campana=self.campana, tipo=ParametrosCrm.CUSTOM,
                             nombre='nombre_1', valor='valor_1')
        ParametrosCrmFactory(campana=self.campana, tipo=ParametrosCrm.CUSTOM,
                             nombre='nombre_2', valor='valor_2')
        parametros = self.sitio_externo.get_parametros(self.agente, self.campana, self.contacto,
                                                       self.call_data)
        self.assertEqual(len(parametros), 2)
        self.assertIn('nombre_1', parametros)
        self.assertIn('nombre_2', parametros)
        self.assertEqual(parametros['nombre_1'], 'valor_1')
        self.assertEqual(parametros['nombre_2'], 'valor_2')

    def test_obtener_beautiful_url_con_parametros(self):
        self.sitio_externo.url = 'https://oml.com/{1}/{2}/{3}/{4}'
        ParametrosCrmFactory(campana=self.campana, tipo=ParametrosCrm.DATO_CONTACTO,
                             nombre='{1}', valor='telefono')
        ParametrosCrmFactory(campana=self.campana, tipo=ParametrosCrm.DATO_CAMPANA,
                             nombre='{2}', valor='id')
        ParametrosCrmFactory(campana=self.campana, tipo=ParametrosCrm.DATO_LLAMADA,
                             nombre='{3}', valor='call_id')
        ParametrosCrmFactory(campana=self.campana, tipo=ParametrosCrm.CUSTOM,
                             nombre='{4}', valor='valor_1')
        url = self.sitio_externo.get_url_interaccion(self.agente, self.campana, self.contacto,
                                                     self.call_data)
        self.assertEqual(url,
                         'https://oml.com/' + self.contacto.telefono + '/' + str(self.campana.id) +
                         '/' + self.call_data['call_id'] + '/valor_1')
        self.assertEqual(self.sitio_externo.get_parametros(self.agente, self.campana, self.contacto,
                                                           self.call_data), {})