コード例 #1
0
ファイル: test_init.py プロジェクト: odorie/api-gestion-poc
def test_process_housenumber_skip_duplicate_cia_on_different_source(session):
    group = factories.GroupFactory(municipality__insee="90001",
                                   fantoir="900010016")
    factories.HouseNumberFactory(parent=group,
                                 number="2",
                                 ordinal="B",
                                 attributes={"source": "DGFiP"})
    factories.HouseNumberFactory(parent=group,
                                 number="2",
                                 ordinal="",
                                 attributes={"source": "DGFiP"})

    # There is no ordinal, but the CIA refers to an ordinal, like if the
    # ordinal has been removed. But the housenumber without ordinal already
    # exists in the DB.
    data = {
        "type": "housenumber",
        "source": "BAN",
        "cia": "90001_0016_2_B",
        "group:fantoir": "900010016",
        "numero": "2",
        "ordinal": ""
    }
    process_row(data)
    assert models.HouseNumber.select().count() == 2
    housenumber = models.HouseNumber.first(
        models.HouseNumber.cia == "90001_0016_2_B")
    assert housenumber.ordinal == "B"
コード例 #2
0
ファイル: test_init.py プロジェクト: odorie/api-gestion-poc
def test_process_housenumber_from_oldban(session):
    data = {
        "type": "housenumber",
        "source": "BAN (2016-06-05)",
        "cia": "90001_0005_2_BIS",
        "group:fantoir": "900010005",
        "numero": "2",
        "ordinal": "BIS",
        "ign": "ADRNIVX_0000000259416737",
        "postcode:code": "90400",
        "postcode:complement": "90002",
        "municipality:insee": "90001"
    }
    group = factories.GroupFactory(municipality__insee="90001",
                                   fantoir="900010005")
    factories.HouseNumberFactory(parent=group, number="2", ordinal="bis")
    factories.PostCodeFactory(municipality=group.municipality,
                              code="90400",
                              complement="90002")
    process_row(data)
    assert models.HouseNumber.select().count() == 1
    housenumber = models.HouseNumber.first()
    assert housenumber.attributes['source'] == "BAN (2016-06-05)"
    assert housenumber.parent == group
    assert housenumber.number == "2"
    assert housenumber.ordinal == "BIS"
    assert housenumber.postcode.code == "90400"
    assert housenumber.postcode.complement == "90002"
    assert housenumber.postcode.municipality.insee == "90001"
    assert housenumber.ign == "ADRNIVX_0000000259416737"
    assert len(housenumber.versions) == 2
コード例 #3
0
ファイル: test_init.py プロジェクト: odorie/api-gestion-poc
def test_process_positions_from_sga_ign(session):
    data = {
        'type': 'position',
        'kind': 'segment',
        'positioning': 'interpolation',
        'source': 'IGN (2016-04)',
        'housenumber:cia': '90004_0022_1_',
        'ign': 'ADRNIVX_0000000354868426',
        'geometry': {
            'type': 'Point',
            'coordinates': [6.82920162869564, 47.6098351749073]
        }
    }
    group = factories.GroupFactory(municipality__insee='90004',
                                   fantoir='900040022')
    housenumber = factories.HouseNumberFactory(parent=group,
                                               number='1',
                                               ordinal='')
    process_row(data)
    assert models.Position.select().count() == 1
    position = models.Position.first()
    assert position.kind == models.Position.SEGMENT
    assert position.positioning == models.Position.INTERPOLATION
    assert position.source == 'IGN (2016-04)'
    assert position.ign == 'ADRNIVX_0000000354868426'
    assert position.housenumber == housenumber
    assert position.center.coords == (6.82920162869564, 47.6098351749073)
コード例 #4
0
ファイル: test_init.py プロジェクト: odorie/api-gestion-poc
def test_can_update_position_from_ign_identifier(session):
    data = {
        'type': 'position',
        'kind': 'segment',
        'positioning': 'interpolation',
        'source': 'IGN (2016-04)',
        'housenumber:cia': '90004_0022_1_',
        'ign': 'ADRNIVX_0000000354868426',
        'geometry': {
            'type': 'Point',
            'coordinates': [6.82920162869564, 47.6098351749073]
        }
    }
    housenumber = factories.HouseNumberFactory(
        parent__fantoir='900040022',
        parent__municipality__insee='90004',
        number='1',
        ordinal='')
    position = factories.PositionFactory(ign='ADRNIVX_0000000354868426',
                                         housenumber=housenumber)
    process_row(data)
    assert models.Position.select().count() == 1
    position = models.Position.first()
    assert position.source == 'IGN (2016-04)'
    assert position.housenumber == housenumber
コード例 #5
0
ファイル: test_init.py プロジェクト: odorie/api-gestion-poc
def test_process_positions_from_oldban(session):
    data = {
        "type": "position",
        "kind": "unknown",
        "name": "Bâtiment A",
        "source": "BAN (2016-06-05)",
        "housenumber:cia": "90001_0005_5_",
        "ign": "ADRNIVX_0000000259416584",
        "geometry": {
            "type": "Point",
            "coordinates": [6.871125, 47.602046]
        }
    }
    group = factories.GroupFactory(municipality__insee="90001",
                                   fantoir="900010005")
    housenumber = factories.HouseNumberFactory(parent=group,
                                               number="5",
                                               ordinal="")
    process_row(data)
    assert models.Position.select().count() == 1
    position = models.Position.first()
    assert position.kind == models.Position.UNKNOWN
    assert position.source == "BAN (2016-06-05)"
    assert position.housenumber == housenumber
    assert position.center.coords == (6.871125, 47.602046)
    assert position.name == "Bâtiment A"
コード例 #6
0
def test_can_update_housenumber_laposte_with_ign_id(session):
    data = {"type": "housenumber", "source": "IGN/Poste (2016-06)",
            "ign": "ADRNIVX_0000000261488312", "laposte": "060012222M"}
    housenumber = factories.HouseNumberFactory(ign='ADRNIVX_0000000261488312')
    process_row(data)
    assert models.HouseNumber.select().count() == 1
    housenumber = models.HouseNumber.first()
    assert housenumber.laposte == '060012222M'
コード例 #7
0
def test_import_housenumber_cea(session):
    data = {'type': 'housenumber', 'cia': '33001_B072_2_',
            'laposte': '33001223T2', 'numero': '2', 'ordinal': '',
            'source': 'IGN/Poste (2016-04)', 'group:fantoir': '33001B072'}
    group = factories.GroupFactory(municipality__insee='33001',
                                   fantoir='33001B072', kind=models.Group.AREA)
    factories.HouseNumberFactory(parent=group, number='2', ordinal='')
    process_row(data)
    assert models.HouseNumber.select().count() == 1
    housenumber = models.HouseNumber.first()
    assert housenumber.laposte == '33001223T2'
コード例 #8
0
def test_can_update_housenumber_postcode_with_laposte_id(session):
    data = {"type": "housenumber", "source": "Poste (2016-06)",
            "laposte": "060012223P", "postcode:code": "06910",
            "municipality:insee": "06900"}
    postcode = factories.PostCodeFactory(code='06910',
                                         municipality__insee='06900')
    housenumber = factories.HouseNumberFactory(laposte='060012223P')
    process_row(data)
    assert models.HouseNumber.select().count() == 1
    housenumber = models.HouseNumber.first()
    assert housenumber.postcode == postcode
コード例 #9
0
def test_bal_should_update_housenumber_by_id(staff):
    housenumber = factories.HouseNumberFactory(number="1")
    content = """cle_interop,uid_adresse,voie_nom,numero,suffixe,commune_nom,position,x,y,long,lat,source,date_der_maj\n
35001_0010_00001,{id},Square Ella Maillart,1,,Acigné,bâtiment,,,,,Rennes Métropole,2013-10-23
"""
    content = content.format(id=housenumber.id)
    bal(StringIO(content))
    assert models.HouseNumber.select().count() == 1
    housenumber = models.HouseNumber.select().first()
    assert housenumber.number == "1"
    assert housenumber.version == 2
コード例 #10
0
def test_can_match_position_parent_from_ign_id(session):
    data = {"type": "position", "source": "IGN (2016-06)",
            "ign": "XXX",
            "geometry": {"type": "Point",
                         "coordinates": [6.82920162869564, 47.6098351749073]},
            "housenumber:ign": "ADRNIVX_0000000261474435"}
    housenumber = factories.HouseNumberFactory(ign='ADRNIVX_0000000261474435')
    process_row(data)
    assert models.Position.select().count() == 1
    position = models.Position.first()
    assert position.housenumber == housenumber
    assert position.ign == 'XXX'
コード例 #11
0
def test_modify_housenumber_ancestors(session, monkeypatch):
    monkeypatch.setattr('ban.commands.helpers.confirm', lambda *x, **wk: True)
    mun1 = factories.MunicipalityFactory(insee='33001', name='Mun1')
    mun2 = factories.MunicipalityFactory(insee='33002', name='Mun2')
    gr = factories.GroupFactory(municipality=mun2, name='GrToto')
    hn = factories.HouseNumberFactory(parent=gr, number='1')
    merge(mun1.insee, sources=[mun2.insee], name='Toto', label='TOTO')
    hn = models.HouseNumber.select().where(
        models.HouseNumber.number == '1').first()
    gr_area = models.Group.select().where(
        models.Group.name == mun2.name).first()
    assert hn.ancestors == gr_area
コード例 #12
0
def test_export_housenumber():
    hn = factories.HouseNumberFactory(number='1')
    path = Path(__file__).parent / 'data'
    resources('HouseNumber', path)

    filepath = path.joinpath('housenumber.ndjson')
    with filepath.open() as f:
        lines = f.readlines()
        assert len(lines) == 1
        # Plus, JSON transform internals tuples to lists.
        assert json.loads(lines[0]) == json.loads(dumps(hn.as_export))
    filepath.unlink()
コード例 #13
0
def test_can_update_housenumber_with_parent_number_and_ordinal(session):
    data = {"type": "housenumber", "source": "Poste (2016-06)",
            "group:laposte": "00067358", "laposte": "060012223P",
            "numero": "5", "ordinal": "", "postcode:code": "06910",
            "municipality:insee": "06900"}
    postcode = factories.PostCodeFactory(code='06910',
                                         municipality__insee='06900')
    housenumber = factories.HouseNumberFactory(parent__laposte='00067358',
                                               number='5', ordinal='')
    process_row(data)
    assert models.HouseNumber.select().count() == 1
    housenumber = models.HouseNumber.first()
    assert housenumber.laposte == '060012223P'
    assert housenumber.postcode == postcode
コード例 #14
0
def test_bal_should_add_position_to_existing_housenumber(staff):
    group = factories.GroupFactory(municipality__insee="35001",
                                   name="Square Ella Maillart",
                                   fantoir="350010010")
    housenumber = factories.HouseNumberFactory(number="1",
                                               parent=group,
                                               ordinal=None)
    content = """cle_interop,uid_adresse,voie_nom,numero,suffixe,commune_nom,position,x,y,long,lat,source,date_der_maj\n
35001_0010_00001,,Square Ella Maillart,1,,Acigné,bâtiment,363371.73430419,6791798.91601974,-1.52808691540987,48.1396656060165,Rennes Métropole,2013-10-23
"""
    bal(StringIO(content))
    assert models.Position.select().count() == 1
    position = models.Position.select().first()
    assert position.center == (-1.52808691540987, 48.1396656060165)
    position.housenumber == housenumber
コード例 #15
0
def test_bal_should_update_housenumber_by_cia(staff):
    group = factories.GroupFactory(name="Square Ella Maillart",
                                   municipality__insee="35001",
                                   fantoir="350010010")
    housenumber = factories.HouseNumberFactory(number="1",
                                               parent=group,
                                               ordinal=None)
    content = """cle_interop,uid_adresse,voie_nom,numero,suffixe,commune_nom,position,x,y,long,lat,source,date_der_maj\n
35001_0010_00001,,Square Ella Maillart,1,,Acigné,bâtiment,,,,,Rennes Métropole,2013-10-23
"""
    bal(StringIO(content))
    assert models.HouseNumber.select().count() == 1
    housenumber = models.HouseNumber.select().first()
    assert housenumber.number == "1"
    assert housenumber.version == 2
コード例 #16
0
def test_process_position_from_dgfip(session):
    data = {"type": "position", "kind": "entrance",
            "source": "DGFiP/BANO (2016-04)",
            "housenumber:cia": "90001_0016_15_bis",
            "geometry": {"type": "Point",
                         "coordinates": [6.87116577514, 47.6029533961]}}
    group = factories.GroupFactory(municipality__insee="90001",
                                   fantoir="900010016")
    housenumber = factories.HouseNumberFactory(parent=group, number="15",
                                               ordinal="bis")
    process_row(data)
    assert models.Position.select().count() == 1
    position = models.Position.first()
    assert position.kind == models.Position.ENTRANCE
    assert position.source == "DGFiP/BANO (2016-04)"
    assert position.housenumber == housenumber
    assert position.center.coords == (6.87116577514, 47.6029533961)
コード例 #17
0
ファイル: test_commands.py プロジェクト: pjegouic/ban
def test_export_resources():
    mun = factories.MunicipalityFactory()
    street = factories.GroupFactory(municipality=mun)
    hn = factories.HouseNumberFactory(parent=street)
    factories.PositionFactory(housenumber=hn)
    deleted = factories.PositionFactory(housenumber=hn)
    deleted.mark_deleted()
    path = Path(__file__).parent / 'data/export.sjson'
    resources(path)

    with path.open() as f:
        lines = f.readlines()
        assert len(lines) == 3
        # loads/dumps to compare string dates to string dates.
        assert json.loads(lines[0]) == json.loads(dumps(mun.as_resource))
        assert json.loads(lines[1]) == json.loads(dumps(street.as_resource))
        # Plus, JSON transform internals tuples to lists.
        assert json.loads(lines[2]) == json.loads(dumps(hn.as_resource))
    path.unlink()
コード例 #18
0
def test_bal_should_update_housenumber_when_updating_group(staff):
    group = factories.GroupFactory(municipality__insee="38185",
                                   name="Esplanade Alain Le Ray",
                                   fantoir="381850172")
    housenumber = factories.HouseNumberFactory(number=None,
                                               parent=group,
                                               ordinal=None)
    content = """cle_interop;uid_adresse;voie_nom;numero;suffixe;commune_nom;position;x;y;long;lat;source;date_der_maj\n
38185_0172_99999;;Esplanade Alain Le Ray;99999;;Grenoble;délivrance postale;914027.84;6457539.01;5.72559773087959;45.1839130425293;Ville de Grenoble;2010-12-21
"""
    bal(StringIO(content))
    assert models.Group.select().count() == 1
    assert models.HouseNumber.select().count() == 1
    housenumber = models.HouseNumber.first()
    assert housenumber.parent == group
    assert housenumber.number is None
    assert models.Position.select().count() == 1
    position = models.Position.first()
    assert position.housenumber == housenumber
    assert position.center == (5.72559773087959, 45.1839130425293)