def test_valida_columna_con_telefono(self): bd = BaseDatosContacto(pk=1) metadata = bd.get_metadata() metadata.cantidad_de_columnas = 4 # metadata.save() with self.assertRaises(AssertionError): # columna_con_telefono NO puede ser 4 metadata.columna_con_telefono = 4
def test_genera_base_datos_falla_archivo_xls(self): bd = BaseDatosContacto(id=1) bd.nombre_archivo_importacion = "planilla-ejemplo-0.xls" bd.save() # ----- creacion_base_de_datos_service = CreacionBaseDatosService() with self.assertRaises(OmlArchivoImportacionInvalidoError): creacion_base_de_datos_service.genera_base_dato_contacto(bd)
def test_define_base_dato_contacto(self): bd = BaseDatosContacto(id=1) bd.save() # ----- creacion_base_de_datos_service = CreacionBaseDatosService() creacion_base_de_datos_service.define_base_dato_contacto(bd) self.assertEqual(bd.estado, BaseDatosContacto.ESTADO_DEFINIDA)
def test_valida_nombres_de_columnas(self): bd = BaseDatosContacto(pk=1) metadata = bd.get_metadata() metadata.cantidad_de_columnas = 4 metadata.nombres_de_columnas = ["a", "b", "c", "d"] # metadata.save() with self.assertRaises(AssertionError): metadata.nombres_de_columnas = ["a", "b", "c"] with self.assertRaises(AssertionError): metadata.nombres_de_columnas = ["a", "b", "c", "d", "e"]
def test_guarda_datos_correctos(self): bd = BaseDatosContacto(pk=1) metadata = bd.get_metadata() metadata.cantidad_de_columnas = 2 metadata.columna_con_telefono = 1 metadata.nombres_de_columnas = ["A", "B"] metadata.primer_fila_es_encabezado = True metadata.save() self.assertDictEqual(json.loads(bd.metadata), {'col_telefono': 1, 'cant_col': 2, 'nombres_de_columnas': ["A", "B"], 'prim_fila_enc': True, })
def crear_bd_contactos(self, archivo, nombre_archivo, nombre_bd) -> int: model_base_contactos = BaseDatosContacto() if self._existe_bd_contactos(nombre_bd): raise (OmlError( _("Ya existe una base de datos de contactos con ese nombre"))) self.parser = BaseDatosContactoArchivoCSVParser( nombre_archivo, archivo) if not self.parser.es_valida_extension( ) or not self.parser.es_valido_archivo(): file_invalid_msg = _( "El archivo especificado para realizar la importación de " "contactos no es válido.") raise (OmlArchivoImportacionInvalidoError(file_invalid_msg)) if not self.parser.headers_no_repetidos(): raise OmlParserRepeatedColumnsError( _("El archivo a procesar tiene nombres de columnas " "repetidos.")) model_base_contactos.archivo_importacion = archivo model_base_contactos.nombre_archivo_importacion = nombre_archivo model_base_contactos.nombre = nombre_bd model_base_contactos.save() return model_base_contactos.id
def test_importa_contacto(self): # 3543009865,lkasdjlfkaf,0351156219387 # 111534509230,dkasjflkja,0351156982639 # 2830173491,alsdkjfieasdf,3516983419 # 3560127341,kahvuahdsfasdfa,2954638961 bd = BaseDatosContacto(id=1) bd.archivo_importacion = File(open(self.get_test_resource( "planilla-ejemplo-1.csv"), 'r')) bd.nombre_archivo_importacion = "planilla-ejemplo-1.csv" bd.save() metadata = bd.get_metadata() metadata.cantidad_de_columnas = 3 metadata.columna_con_telefono = 0 metadata.columnas_con_telefono = [0, 2] metadata.columna_id_externo = 1 metadata.nombres_de_columnas = ["telefono", "nombre", "celular"] metadata.save() # ----- creacion_base_de_datos_service = CreacionBaseDatosService() creacion_base_de_datos_service.importa_contactos(bd, ["telefono", "celular"], 1) self.assertEqual(bd.contactos.count(), 4) for contacto in bd.contactos.all(): self.assertIsNotNone(contacto.id_externo)
def test_importa_archivo_utf8_correctamente(self): bd = BaseDatosContacto(id=1) bd.archivo_importacion = File(open(self.get_test_resource( "planilla-ejemplo-6.csv"), 'r')) bd.nombre_archivo_importacion = "bd-contactos-utf8.csv" bd.save() # ----- service = CreacionBaseDatosService() service.genera_base_dato_contacto(bd) metadata = bd.get_metadata() metadata.cantidad_de_columnas = 2 metadata.columna_con_telefono = 0 metadata.columnas_con_telefono = [0] metadata.nombres_de_columnas = ["telefono", "Nombre"] metadata.primer_fila_es_encabezado = True metadata.save() service.importa_contactos(bd, ['telefono'], None) self.assertEquals(Contacto.objects.count(), 2) contactos = list(Contacto.objects.all()) contactos_dict = dict([(c.telefono, c.datos) for c in contactos]) self.assertIn('375849371648', contactos_dict) self.assertIn('957327493493', contactos_dict)
def test_parsea_datos_correctos(self): bd = BaseDatosContacto(pk=1, metadata=self.metadata_codificada) self.assertEqual(bd.get_metadata().columna_con_telefono, 6) self.assertEqual(bd.get_metadata().cantidad_de_columnas, 9)
def test_genera_valueerror_sin_datos(self): with self.assertRaises(ValueError): BaseDatosContacto().get_metadata().columna_con_telefono