def test_clean_string(self):
        """Los campos de texto deberían ser normalizados en el proceso de
        normalización."""
        self._ctx.session.query(self._tmp_departments).\
            filter_by(in1='70105').\
            update({'nam': '  Sarmiento\n\nSarmiento'})

        step = DepartmentsExtractionStep()
        departments = step.run(self._tmp_departments, self._ctx)
        name = self._ctx.session.query(departments).\
            filter_by(id='70105').\
            one().nombre
        self.assertEqual(name, 'Sarmiento')
    def test_single(self):
        """Los departamentos deberían poder ser procesados desde la tabla
        tmp_departamentos e insertados en la tabla correspondiente
        georef_departamentos."""
        step = DepartmentsExtractionStep()
        departments = step.run(self._tmp_departments, self._ctx)

        self.assertEqual(
            self._ctx.session.query(departments).count(), SAN_JUAN_DEPT_COUNT)

        report_data = self._ctx.report.get_data('departments_extraction')
        self.assertEqual(len(report_data['new_entities_ids']),
                         SAN_JUAN_DEPT_COUNT)
    def test_id_length(self):
        """Si se recibe un departamento con longitud de ID inválida, no
        debería procesarse."""
        self._ctx.session.query(self._tmp_departments).\
            filter_by(in1='70105').\
            update({'in1': '701055'})

        step = DepartmentsExtractionStep()
        departments = step.run(self._tmp_departments, self._ctx)
        self.assertEqual(
            self._ctx.session.query(departments).count(),
            SAN_JUAN_DEPT_COUNT - 1)

        report_data = self._ctx.report.get_data('departments_extraction')
        self.assertEqual(report_data['errors'][0][0], '701055')
    def test_field_change(self):
        """Si se modifica un campo de un departamento (no el ID), luego de la
        extracción el campo nuevo debería figurar en georef_departamentos."""
        # Ejecutar la extracción por primera vez
        step = DepartmentsExtractionStep()
        step.run(self._tmp_departments, self._ctx)

        self._ctx.session.query(self._tmp_departments).\
            filter_by(in1='70105').\
            update({'nam': 'Sarmientoo'})

        departments = step.run(self._tmp_departments, self._ctx)
        name = self._ctx.session.query(departments).\
            filter_by(id='70105').\
            one().nombre
        self.assertEqual(name, 'Sarmientoo')
    def test_invalid_province(self):
        """Si un departamento hace referencia a una provincia inexistente, se
        debería reportar el error."""
        new_id = '79105'
        self._ctx.session.query(self._tmp_departments).\
            filter_by(in1='70105').\
            update({'in1': new_id})

        step = DepartmentsExtractionStep()
        departments = step.run(self._tmp_departments, self._ctx)
        query = self._ctx.session.query(departments).filter_by(id=new_id)
        self.assertEqual(query.count(), 0)

        report_data = self._ctx.report.get_data('departments_extraction')
        self.assertEqual(len(report_data['errors']), 1)
        self.assertEqual(len(report_data['new_entities_ids']),
                         SAN_JUAN_DEPT_COUNT - 1)
示例#6
0
    def create_test_departments(cls, extract=False):
        # Cargar los departamentos de la provincia de prueba
        cls.copy_test_file('test_departamentos/test_departamentos.dbf')
        cls.copy_test_file('test_departamentos/test_departamentos.shp')
        cls.copy_test_file('test_departamentos/test_departamentos.shx')
        cls.copy_test_file('test_departamentos/test_departamentos.prj')

        loader = Ogr2ogrStep(table_name='tmp_departamentos',
                             geom_type='MultiPolygon',
                             env={'SHAPE_ENCODING': 'utf-8'},
                             metadata=cls._metadata,
                             db_config=cls._ctx.config['test_db'])

        cls._tmp_departments = loader.run('test_departamentos', cls._ctx)

        if extract:
            step = DepartmentsExtractionStep()
            step.run(cls._tmp_departments, cls._ctx)

        return cls._tmp_departments
    def test_id_change(self):
        """Si se modifica el ID de un departamento, se debería eliminar el
        departamento con el ID antiguo y se debería generar uno nuevo en la
        tabla georef_departamentos."""
        # Ejecutar la extracción por primera vez
        step = DepartmentsExtractionStep()
        step.run(self._tmp_departments, self._ctx)

        # Modificar el ID de un departamento
        self._ctx.session.query(self._tmp_departments).\
            filter_by(in1='70105').\
            update({'in1': '70100'})

        step.run(self._tmp_departments, self._ctx)
        report_data = self._ctx.report.get_data('departments_extraction')
        self.assertListEqual(report_data['new_entities_ids'], ['70100'])
        self.assertListEqual(report_data['deleted_entities_ids'], ['70105'])