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)
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), {})