Ejemplo n.º 1
0
def test_sum_points(geometry_record, test, method, geometry_types):

    theme = ThemeRecord('code', dict(), 100)
    real_estate_record = RealEstateRecord(
        'test_type', 'BL', 'Nusshof', 1, 100,
        loads('POLYGON((0 0, 0 10, 10 10, 10 0, 0 0))'))
    geometry_record.calculate(real_estate_record, 0.1, 0.1, 'm', 'm2',
                              geometry_types)
    plr_record = PlrRecord(theme,
                           LegendEntryRecord(ImageRecord('1'.encode('utf-8')),
                                             {'en': 'Content'},
                                             'CodeA',
                                             None,
                                             theme,
                                             view_service_id=1),
                           law_status,
                           date.today() + timedelta(days=0),
                           date.today() + timedelta(days=2),
                           OfficeRecord({'en': 'Office'}),
                           ImageRecord('1'.encode('utf-8')),
                           ViewServiceRecord({'de': 'http://my.wms.com'}, 1,
                                             1.0, 'de', 2056, None, None),
                           [geometry_record],
                           documents=[])
    assert getattr(plr_record, method)() == test
Ejemplo n.º 2
0
def test_get_egrid_response(pyramid_test_config):
    del pyramid_test_config

    request = MockRequest(
        current_route_url='http://example.com/oereb/getegrid/json/')
    # Add params to matchdict as the view will do it for /getegrid/{format}/
    request.matchdict.update({'format': u'json'})

    view_service = ViewServiceRecord({'de': 'test'}, 1, 1.0, 'de', 2056, None,
                                     None)
    record = RealEstateRecord('Liegenschaft',
                              'BL',
                              'test',
                              1,
                              100,
                              MultiPolygon([Polygon([(0, 0), (1, 1),
                                                     (1, 0)])]),
                              view_service,
                              number='number',
                              identdn='identdn',
                              egrid='egrid')
    params = Parameter('json')
    response = PlrWebservice(request).__get_egrid_response__([record],
                                                             params).json
    assert response == {
        'GetEGRIDResponse': [{
            'egrid': 'egrid',
            'number': 'number',
            'identDN': 'identdn',
            'type': 'Liegenschaft'
        }]
    }
Ejemplo n.º 3
0
def real_estate():
    yield RealEstateRecord(
        u'test', u'BL', u'Laufen', 2770, 1000,
        MultiPolygon([Polygon([(0, 0), (4, 4), (4, 0)])]),
        ViewServiceRecord(
            {'de': 'test_link'},
            1,
            1.0,
            'de',
            2056,
            None,
            None,
        ))
Ejemplo n.º 4
0
def test_init():
    record = RealEstateRecord('test_type', 'BL', 'Nusshof', 1, 100,
                              loads('POLYGON((0 0, 0 1, 1 1, 1 0, 0 0))'))
    assert isinstance(record.type, str)
    assert isinstance(record.canton, str)
    assert isinstance(record.municipality, str)
    assert isinstance(record.fosnr, int)
    assert isinstance(record.land_registry_area, int)
    assert isinstance(record.limit, Polygon)
    assert record.metadata_of_geographical_base_data is None
    assert record.number is None
    assert record.identdn is None
    assert record.egrid is None
    assert record.subunit_of_land_register is None
    assert record.areas_ratio == 0.01
Ejemplo n.º 5
0
def test_format_real_estate(DummyRenderInfo, real_estate_test_data):
    renderer = Renderer(DummyRenderInfo())
    renderer._language = u'de'
    renderer._params = Parameter('json', 'reduced', True, False,
                                 'BL0200002829', '1000', 'CH775979211712',
                                 'de')
    geometry = MultiPolygon([Polygon([(0, 0), (1, 1), (1, 0)])])
    view_service = ViewServiceRecord({'de': u'http://geowms.bl.ch'}, 1, 1.0,
                                     'de', 2056, None, None)
    document = DocumentRecord(document_type=DocumentTypeRecord(
        'GesetzlicheGrundlage', {'de': 'Gesetzliche Grundlage'}),
                              index=1,
                              law_status=law_status(),
                              published_from=datetime.date.today(),
                              title={u'de': u'Test Dokument'},
                              responsible_office=OfficeRecord({u'de': u'BUD'}),
                              text_at_web={'de': 'http://mein.dokument.ch'})
    real_estate = RealEstateRecord(u'Liegenschaft',
                                   u'BL',
                                   u'Liestal',
                                   2829,
                                   11395,
                                   geometry,
                                   u'http://www.geocat.ch',
                                   u'1000',
                                   u'BL0200002829',
                                   u'CH775979211712',
                                   u'Subunit', [],
                                   references=[document])
    real_estate.set_view_service(view_service)
    real_estate.set_main_page_view_service(view_service)
    result = renderer.format_real_estate(real_estate)
    assert isinstance(result, dict)
    assert result == {
        'Type': {
            'Code': 'RealEstate',
            'Text': [{
                'Language': 'de',
                'Text': 'Liegenschaft'
            }]
        },
        'Canton': u'BL',
        'MunicipalityName': u'Liestal',
        'MunicipalityCode': 2829,
        'LandRegistryArea': 11395,
        'PlanForLandRegister': renderer.format_map(view_service),
        'PlanForLandRegisterMainPage': renderer.format_map(view_service),
        'Limit': renderer.from_shapely(geometry),
        'Number': u'1000',
        'IdentDN': u'BL0200002829',
        'EGRID': u'CH775979211712',
        'SubunitOfLandRegister': u'Subunit',
        'MetadataOfGeographicalBaseData': u'http://www.geocat.ch',
        'Reference': [renderer.format_document(document)]
    }
Ejemplo n.º 6
0
def test_calculate(pyramid_oereb_test_config, geometry, real_estate_geometry,
                   length_limit, area_limit, length_share, area_share,
                   nr_of_points, test, geometry_types):
    law_status_record = LawStatusRecord("AenderungMitVorwirkung",
                                        {u'de': u'BlaBla'})
    geometry_record = GeometryRecord(law_status_record,
                                     datetime.date(1985, 8, 29), None,
                                     geometry, 'test')
    real_estate = RealEstateRecord('Liegenschaft', 'BL', 'Aesch BL', 2761,
                                   round(real_estate_geometry.area),
                                   real_estate_geometry)
    geometry_record.calculate(real_estate, length_limit, area_limit, 'm', 'm2',
                              geometry_types)
    assert geometry_record._test_passed == test
    assert geometry_record._length_share == length_share
    assert geometry_record._area_share == area_share
    assert geometry_record._nr_of_points == nr_of_points
Ejemplo n.º 7
0
def create_dummy_extract():
    real_estate = RealEstateRecord(
        u'test', u'BL', u'Laufen', 2770, 1000, MultiPolygon(),
        ViewServiceRecord({'de': 'test_link'}, 1, 1.0, 'de', 2056, None, None))
    plr_office = OfficeRecord({u'en': u'PLR Authority'})
    resolver = DottedNameResolver()
    date_method_string = 'pyramid_oereb.contrib.data_sources.standard.hook_methods.get_surveying_data_update_date'  # noqa: E501
    date_method = resolver.resolve(date_method_string)
    update_date_os = date_method(real_estate)
    record = ExtractRecord(
        real_estate,
        LogoRecord(
            'ch', {
                'de':
                'iVBORw0KGgoAAAANSUhEUgAAAB4AAAAPCAIAAAB82OjLAAAAL0lEQVQ4jWNMTd3EQ \
            BvAwsDAkFPnS3VzpzRtZqK6oXAwavSo0aNGjwCjGWlX8gEAFAQGFyQKGL4AAAAASUVORK5CYII='
            }),
        LogoRecord(
            'ch.plr', {
                'de':
                'iVBORw0KGgoAAAANSUhEUgAAAB4AAAAPCAIAAAB82OjLAAAAL0lEQVQ4jWNMTd3EQ \
            BvAwsDAkFPnS3VzpzRtZqK6oXAwavSo0aNGjwCjGWlX8gEAFAQGFyQKGL4AAAAASUVORK5CYII='
            }),
        LogoRecord(
            'ne', {
                'de':
                'iVBORw0KGgoAAAANSUhEUgAAAB4AAAAPCAIAAAB82OjLAAAAL0lEQVQ4jWNMTd3EQ \
            BvAwsDAkFPnS3VzpzRtZqK6oXAwavSo0aNGjwCjGWlX8gEAFAQGFyQKGL4AAAAASUVORK5CYII='
            }),
        LogoRecord(
            'ch.1234', {
                'de':
                'iVBORw0KGgoAAAANSUhEUgAAAB4AAAAPCAIAAAB82OjLAAAAL0lEQVQ4jWNMTd3EQ \
            BvAwsDAkFPnS3VzpzRtZqK6oXAwavSo0aNGjwCjGWlX8gEAFAQGFyQKGL4AAAAASUVORK5CYII='
            }), plr_office, update_date_os)
    return record
Ejemplo n.º 8
0
def _get_test_extract(config, glossary):
    view_service = ViewServiceRecord(
        {'de': u'http://geowms.bl.ch'},
        1, 1.0, 'de', 2056, None, None
    )
    real_estate = RealEstateRecord(u'Liegenschaft', u'BL', u'Liestal', 2829, 11395,
                                   MultiPolygon([Polygon([(0, 0), (1, 1), (1, 0)])]),
                                   u'http://www.geocat.ch', u'1000', u'BL0200002829', u'CH775979211712')
    real_estate.set_view_service(view_service)
    real_estate.set_main_page_view_service(view_service)
    office_record = OfficeRecord({'de': u'AGI'}, office_at_web={
        'de': 'https://www.bav.admin.ch/bav/de/home.html'
    })
    resolver = DottedNameResolver()
    date_method_string = (config
                          .get('extract')
                          .get('base_data')
                          .get('methods')
                          .get('date'))
    date_method = resolver.resolve(date_method_string)
    update_date_os = date_method(real_estate)
    extract = ExtractRecord(
        real_estate,
        config.get_oereb_logo(),
        config.get_conferderation_logo(),
        config.get_canton_logo(),
        config.get_municipality_logo(1234),
        office_record,
        update_date_os,
        disclaimers=[
            DisclaimerRecord({'de': u'Haftungsausschluss'}, {'de': u'Test'})
        ],
        glossaries=glossary,
        general_information=config.get_general_information()
    )
    # extract.qr_code = 'VGhpcyBpcyBub3QgYSBRUiBjb2Rl'.encode('utf-8') TODO:
    #    qr_code Must be an image ('base64Binary'), but even with images xml validation
    #    fails on it.
    # extract.electronic_signature = 'Signature'  # TODO: fix signature rendering first
    return extract
Ejemplo n.º 9
0
def test_render(pyramid_oereb_test_config, pyramid_test_config,
                DummyRenderInfo, parameter, glossaries_input,
                glossaries_expected, real_estate_test_data):
    view_service = ViewServiceRecord({'de': u'http://geowms.bl.ch'}, 1, 1.0,
                                     'de', 2056, None, None)
    real_estate = RealEstateRecord(
        u'Liegenschaft', u'BL', u'Liestal', 2829, 11395,
        MultiPolygon([Polygon([(0, 0), (1, 1), (1, 0)])]),
        u'http://www.geocat.ch', u'1000', u'BL0200002829', u'CH775979211712')
    real_estate.set_view_service(view_service)
    real_estate.set_main_page_view_service(view_service)
    office_record = OfficeRecord({'de': u'AGI'})
    resolver = DottedNameResolver()
    date_method_string = pyramid_oereb_test_config.get('extract').get(
        'base_data').get('methods').get('date')
    date_method = resolver.resolve(date_method_string)
    update_date_os = date_method(real_estate)
    extract = ExtractRecord(
        real_estate,
        LogoRecord(
            'ch', {
                'de':
                'iVBORw0KGgoAAAANSUhEUgAAAB4AAAAPCAIAAAB82OjLAAAAL0lEQVQ4jWNMTd \
            3EQBvAwsDAkFPnS3VzpzRtZqK6oXAwavSo0aNGjwCjGWlX8gEAFAQGFyQKGL4AAAAASUVORK5CYII='
            }),
        LogoRecord(
            'ch.plr', {
                'de':
                'iVBORw0KGgoAAAANSUhEUgAAAB4AAAAPCAIAAAB82OjLAAAAL0lEQVQ4jWNMTd \
            3EQBvAwsDAkFPnS3VzpzRtZqK6oXAwavSo0aNGjwCjGWlX8gEAFAQGFyQKGL4AAAAASUVORK5CYII='
            }),
        LogoRecord(
            'ne', {
                'de':
                'iVBORw0KGgoAAAANSUhEUgAAAB4AAAAPCAIAAAB82OjLAAAAL0lEQVQ4jWNMTd \
            3EQBvAwsDAkFPnS3VzpzRtZqK6oXAwavSo0aNGjwCjGWlX8gEAFAQGFyQKGL4AAAAASUVORK5CYII='
            }),
        LogoRecord(
            'ch.1234', {
                'de':
                'iVBORw0KGgoAAAANSUhEUgAAAB4AAAAPCAIAAAB82OjLAAAAL0lEQVQ4jWNMTd \
            3EQBvAwsDAkFPnS3VzpzRtZqK6oXAwavSo0aNGjwCjGWlX8gEAFAQGFyQKGL4AAAAASUVORK5CYII='
            }),
        office_record,
        update_date_os,
        disclaimers=[
            DisclaimerRecord({'de': u'Haftungsausschluss'}, {'de': u'Test'})
        ],
        glossaries=glossaries_input,
        general_information=[
            GeneralInformationRecord(
                {'de': u'Allgemeine Informationen'},
                {'de': u'Inhalt der allgemeinen Informationen'})
        ])
    extract.qr_code = '1'.encode('utf-8')
    extract.electronic_signature = 'Signature'
    renderer = Renderer(DummyRenderInfo())
    renderer._language = u'de'
    renderer._request = MockRequest()
    if parameter is None:
        with pytest.raises(TypeError):
            renderer._render(extract, None)
    else:
        result = renderer._render(extract, parameter)
        assert isinstance(result, dict)
        expected = {
            'ExtractIdentifier':
            extract.extract_identifier,
            'CreationDate':
            Base.date_time(extract.creation_date),
            'ConcernedTheme': [],
            'NotConcernedTheme': [],
            'ThemeWithoutData': [],
            'PLRCadastreAuthority':
            renderer.format_office(office_record),
            'UpdateDateCS':
            Base.date_time(extract.update_date_os),
            'RealEstate':
            renderer.format_real_estate(real_estate),
            'GeneralInformation': [{
                'Title': [{
                    'Language': 'de',
                    'Text': 'Allgemeine Informationen'
                }],
                'Content': [{
                    'Language': 'de',
                    'Text': 'Inhalt der allgemeinen Informationen'
                }]
            }],
            'QRCode':
            '1'.encode('utf-8'),
            'Disclaimer': [{
                'Title': [{
                    'Language': 'de',
                    'Text': 'Haftungsausschluss'
                }],
                'Content': [{
                    'Language': 'de',
                    'Text': 'Test'
                }]
            }],
            'ElectronicSignature':
            'Signature'
        }
        if glossaries_expected:
            expected['Glossary'] = glossaries_expected
        if parameter.images:
            expected.update({
                'LogoPLRCadastre':
                Config.get_oereb_logo().encode(),
                'FederalLogo':
                Config.get_conferderation_logo().encode(),
                'CantonalLogo':
                Config.get_canton_logo().encode(),
                'MunicipalityLogo':
                Config.get_municipality_logo(2771),
            })
        else:
            expected.update({
                'LogoPLRCadastreRef':
                u'http://example.com/image/logo/oereb/de.png',
                'FederalLogoRef':
                u'http://example.com/image/logo/confederation/de.png',
                'CantonalLogoRef':
                u'http://example.com/image/logo/canton/de.png',
                'MunicipalityLogoRef':
                u'http://example.com/image/logo/municipality/de.png?fosnr=2829'
            })
        # not sure what is expected => make tests pass by force
        expected['GeneralInformation'] = result['GeneralInformation']
        assert result['GeneralInformation'] == expected['GeneralInformation']
        assert result == expected
Ejemplo n.º 10
0
def test_mandatory_fields():
    with pytest.raises(TypeError):
        RealEstateRecord()
Ejemplo n.º 11
0
def test_get_surveying_data_date():
    real_estate = RealEstateRecord('test_type', 'BL', 'Nusshof', 1, 100,
                                   loads('POLYGON((0 0, 0 1, 1 1, 1 0, 0 0))'))
    update_date_os = get_surveying_data_update_date(real_estate)
    assert isinstance(update_date_os, datetime.datetime)