def setUp(self, *args, **kwargs): super(TestsABMSitioExterno, self).setUp(*args, **kwargs) self.admin = self.crear_administrador() self.agente = self.crear_user_agente() self.agente.set_password(self.PWD) self.admin.set_password(self.PWD) self.sitio_externo = SitioExternoFactory()
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_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)
def test_muestra_link_sitio_externo(self): self.campana.type = Campana.TYPE_PREVIEW self.campana.tipo_interaccion = Campana.SITIO_EXTERNO sitio_externo = SitioExternoFactory() self.campana.sitio_externo = sitio_externo self.campana.save() parametro1 = ParametrosCrmFactory(campana=self.campana) call_data = self.get_call_data() url = reverse('calificar_llamada', kwargs={'call_data_json': json.dumps(call_data)}) response = self.client.get(url) self.assertContains(response, sitio_externo.url) self.assertContains(response, '"%s": "%s"' % (parametro1.nombre, parametro1.valor))
def test_redirecciona_a_sitio_externo(self): self.campana.type = Campana.TYPE_PREVIEW self.campana.tipo_interaccion = Campana.SITIO_EXTERNO sitio_externo = SitioExternoFactory(disparador=SitioExterno.AUTOMATICO, metodo=SitioExterno.GET, objetivo=SitioExterno.EMBEBIDO) self.campana.sitio_externo = sitio_externo self.campana.save() parametro1 = ParametrosCrmFactory(campana=self.campana) call_data = self.get_call_data() url = reverse('calificar_llamada', kwargs={'call_data_json': json.dumps(call_data)}) response = self.client.get(url, follow=False) self.assertEqual(response.status_code, 302) param_1 = '%s=%s' % (parametro1.nombre, parametro1.valor) equal_url = (response.url == '%s?%s' % (sitio_externo.url, param_1)) self.assertTrue(equal_url)
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), {})
class TestsABMSitioExterno(OMLBaseTest): PWD = u'admin123' def setUp(self, *args, **kwargs): super(TestsABMSitioExterno, self).setUp(*args, **kwargs) self.admin = self.crear_administrador() self.agente = self.crear_user_agente() self.agente.set_password(self.PWD) self.admin.set_password(self.PWD) self.sitio_externo = SitioExternoFactory() def _obtener_post_sitio_externo(self): return { 'nombre': 'test_ruta_entrante', 'url': 'http://www.infobae.com/', 'disparador': SitioExterno.BOTON, 'metodo': SitioExterno.GET, # 'formato': None, 'objetivo': SitioExterno.EMBEBIDO, } def test_crear_sitio_externo(self): url = reverse('sitio_externo_create') self.client.login(username=self.admin.username, password=self.PWD) post_data = self._obtener_post_sitio_externo() n_sitio_externo = SitioExterno.objects.count() response = self.client.post(url, post_data, follow=True) self.assertEqual(SitioExterno.objects.count(), n_sitio_externo + 1) list_url = reverse('sitio_externo_list') self.assertRedirects(response, list_url) def test_update_sitio_externo(self): url = reverse('modificar_sitio_externo', args=[self.sitio_externo.pk]) self.client.login(username=self.admin.username, password=self.PWD) nombre_modificado = 'sitio_crm_ventas' post_data = self._obtener_post_sitio_externo() post_data['nombre'] = nombre_modificado response = self.client.post(url, post_data, follow=True) self.sitio_externo.refresh_from_db() self.assertEqual(self.sitio_externo.nombre, nombre_modificado) list_url = reverse('sitio_externo_list') self.assertRedirects(response, list_url) def test_admin_elimina_sitio_externo(self): url = reverse('sitio_externo_delete', args=[self.sitio_externo.pk]) self.client.login(username=self.admin.username, password=self.PWD) n_sitio_externo = SitioExterno.objects.count() response = self.client.post(url, follow=True) self.assertEqual(SitioExterno.objects.count(), n_sitio_externo - 1) list_url = reverse('sitio_externo_list') self.assertRedirects(response, list_url) def test_no_se_permite_eliminar_sitio_externo_asociado_campana(self): url = reverse('sitio_externo_delete', args=[self.sitio_externo.pk]) self.client.login(username=self.admin.username, password=self.PWD) CampanaFactory.create(sitio_externo=self.sitio_externo, tipo_interaccion=2) n_sitio_externo = SitioExterno.objects.count() self.client.post(url, follow=True) self.assertEqual(SitioExterno.objects.count(), n_sitio_externo) def test_usuario_no_admin_no_puede_eliminar_sitio_externo(self): self.client.login(username=self.agente.username, password=self.PWD) url = reverse('sitio_externo_delete', args=[self.sitio_externo.pk]) response = self.client.post(url, follow=True) self.assertTemplateUsed(response, '403.html')