Ejemplo n.º 1
0
def test_getegrid_gnss():
    with pyramid_oereb_test_config():
        request = MockRequest(
            current_route_url=
            'http://example.com/oereb/getegrid/json/?GNSS=-19.917989937473,32.1244978460310'
        )

        # Add params to matchdict as the view will do it for /getegrid/{format}/
        request.matchdict.update({'format': u'json'})

        request.params.update({'GNSS': '32.1244978460310,-19.917989937473'})
        webservice = PlrWebservice(request)
        response = webservice.get_egrid_coord().json
        with open(schema_json_extract) as f:
            schema = json.loads(f.read())
        Draft4Validator.check_schema(schema)
        validator = Draft4Validator(schema)
        validator.validate(response)
        assert isinstance(response, dict)
        real_estates = response.get('GetEGRIDResponse')
        assert isinstance(real_estates, list)
        assert len(real_estates) == 1
        assert real_estates[0]['egrid'] == u'TEST'
        assert real_estates[0]['number'] == u'1000'
        assert real_estates[0]['identDN'] == u'BLTEST'
Ejemplo n.º 2
0
def test_get_egrid_response():
    with pyramid_oereb_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('test', 1, 1.0, {'de': 'test'}, None)
        record = RealEstateRecord('test',
                                  'BL',
                                  'test',
                                  1,
                                  100,
                                  MultiPolygon(
                                      [Polygon([(0, 0), (1, 1), (1, 0)])]),
                                  view_service,
                                  number='number',
                                  identdn='identdn',
                                  egrid='egrid')
        response = PlrWebservice(request).__get_egrid_response__([record]).json
        assert response == {
            'GetEGRIDResponse': [{
                'egrid': 'egrid',
                'number': 'number',
                'identDN': 'identdn'
            }]
        }
Ejemplo n.º 3
0
def test_getegrid_address():
    with pyramid_oereb_test_config():
        request = MockRequest(
            current_route_url=
            'http://example.com/oereb/getegrid/json/4410/test/10')

        # Add params to matchdict as the view will do it for
        # /getegrid/{format}/{postalcode}/{localisation}/{number}
        request.matchdict.update({
            'format': u'json',
            'postalcode': u'4410',
            'localisation': u'test',
            'number': u'10'
        })
        webservice = PlrWebservice(request)
        response = webservice.get_egrid_address().json
        with open(schema_json_extract) as f:
            schema = json.loads(f.read())
        Draft4Validator.check_schema(schema)
        validator = Draft4Validator(schema)
        validator.validate(response)
        assert isinstance(response, dict)
        assert response.get('GetEGRIDResponse') is not None
        assert response.get('GetEGRIDResponse')[0].get('egrid') == u'TEST'
        assert response.get('GetEGRIDResponse')[0].get('number') == u'1000'
        assert response.get('GetEGRIDResponse')[0].get('identDN') == u'BLTEST'
Ejemplo n.º 4
0
def test_format_map(params, legend_at_web, expected_legend_at_web):
    with pyramid_oereb_test_config():
        renderer = Renderer(DummyRenderInfo())
        renderer._language = u'de'
        renderer._params = params
        renderer._request = MockRequest()
        legend_entry = LegendEntryRecord(ImageRecord('1'.encode('utf-8')),
                                         {u'de': u'Legendeneintrag'},
                                         u'CodeA',
                                         u'type_code_list',
                                         ThemeRecord(u'ContaminatedSites',
                                                     {u'de': u'Test'}),
                                         view_service_id=1)
        view_service = ViewServiceRecord('http://my.wms.ch', 1, 1.0,
                                         legend_at_web, [legend_entry])
        view_service.image = ImageRecord('1'.encode('utf-8'))
        result = renderer.format_map(view_service)
        assert isinstance(result, dict)
        expected_result = {
            'Image': base64.b64encode('1'.encode('utf-8')).decode('ascii'),
            'layerIndex': 1,
            'layerOpacity': 1.0,
            'ReferenceWMS': 'http://my.wms.ch',
            'OtherLegend': [renderer.format_legend_entry(legend_entry)]
        }
        if expected_legend_at_web is not None:
            expected_result['LegendAtWeb'] = expected_legend_at_web
        assert result == expected_result
Ejemplo n.º 5
0
def test_get_egrid_response_no_content():
    with pyramid_oereb_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'})

        response = PlrWebservice(request).__get_egrid_response__([])
        assert isinstance(response, HTTPNoContent)
def test_get_egrid_coord(params):
    with pyramid_oereb_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'})

        request.params.update(params)
        webservice = PlrWebservice(request)
        webservice.get_egrid_coord()
Ejemplo n.º 7
0
def _get_test_extract(glossary):
    date = datetime.datetime.now()
    file_adapter = FileAdapter()
    with pyramid_oereb_test_config():
        view_service = ViewServiceRecord(u'http://geowms.bl.ch', 1, 1.0,
                                         {'de': u'http://geowms.bl.ch'}, None)
        real_estate = RealEstateRecord(
            u'RealEstate', 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 = Config.get('extract').get('base_data').get(
            'methods').get('date')
        date_method = resolver.resolve(date_method_string)
        av_update_date = date_method(real_estate)
        base_data = Config.get_base_data(av_update_date)

        av_provider_method_string = Config.get('extract').get('base_data').get(
            'methods').get('provider')
        av_provider_method = resolver.resolve(av_provider_method_string)
        cadaster_state = date
        theme = ThemeRecord(u'TEST', {'de': u'TEST TEXT'})
        datasources = [DatasourceRecord(theme, date, office_record)]
        plr_cadastre_authority = Config.get_plr_cadastre_authority()
        embeddable = EmbeddableRecord(cadaster_state, plr_cadastre_authority,
                                      av_provider_method(real_estate),
                                      av_update_date, datasources)
        extract = ExtractRecord(
            real_estate,
            ImageRecord(file_adapter.read('tests/resources/python.svg')),
            ImageRecord(file_adapter.read('tests/resources/python.svg')),
            ImageRecord(file_adapter.read('tests/resources/python.svg')),
            ImageRecord(file_adapter.read('tests/resources/python.svg')),
            office_record,
            base_data,
            embeddable,
            exclusions_of_liability=[
                ExclusionOfLiabilityRecord({'de': u'Haftungsausschluss'},
                                           {'de': u'Test'})
            ],
            glossaries=glossary,
            general_information={'de': u'Allgemeine Informationen'},
            certification={'de': u'certification'},
            certification_at_web={'de': u'certification_at_web'},
        )
        # 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.º 8
0
def test_return_json(topics):
    with pyramid_oereb_test_config() as pyramid_config:
        pyramid_config.add_renderer('pyramid_oereb_extract_json',
                                    'pyramid_oereb.lib.renderer.extract.json_.Renderer')
        request = MockRequest()
        request.matchdict.update({
            'flavour': 'REDUCED',
            'format': 'JSON',
            'param1': 'GEOMETRY',
            'param2': 'TEST'
        })
        request.params.update({
            'TOPICS': topics
        })
        service = PlrWebservice(request)
        response = service.get_extract_by_id()

    with open(schema_json_extract) as f:
        schema = json.loads(f.read())
    Draft4Validator.check_schema(schema)
    validator = Draft4Validator(schema)
    response = json.loads(response.body.decode('utf-8'))
    validator.validate(response)

    assert isinstance(response, dict)

    extract = response.get('GetExtractByIdResponse').get('extract')
    real_estate = extract.get('RealEstate')

    assert isinstance(real_estate, dict)
    if topics == 'ALL':
        assert len(real_estate.get('RestrictionOnLandownership')) == 3
        assert len(extract.get('ConcernedTheme')) == 3
        assert len(extract.get('NotConcernedTheme')) == 14
        assert len(extract.get('ThemeWithoutData')) == 0
        restrictions = real_estate.get('RestrictionOnLandownership')
        assert restrictions[0]['Theme']['Code'] == 'LandUsePlans'
        assert restrictions[1]['Theme']['Code'] == 'MotorwaysBuildingLines'
        assert restrictions[2]['Theme']['Code'] == 'ContaminatedSites'
    if topics == 'ALL_FEDERAL':
        assert len(real_estate.get('RestrictionOnLandownership')) == 1
        assert len(extract.get('ConcernedTheme')) == 1
        assert len(extract.get('NotConcernedTheme')) == 9
        assert len(extract.get('ThemeWithoutData')) == 0
        restrictions = real_estate.get('RestrictionOnLandownership')
        assert restrictions[0]['Theme']['Code'] == 'MotorwaysBuildingLines'
    if topics == 'ContaminatedSites,RailwaysProjectPlanningZones':
        assert len(real_estate.get('RestrictionOnLandownership')) == 1
        assert len(extract.get('ConcernedTheme')) == 1
        assert len(extract.get('NotConcernedTheme')) == 1
        assert len(extract.get('ThemeWithoutData')) == 0
        restrictions = real_estate.get('RestrictionOnLandownership')
        assert restrictions[0]['Theme']['Code'] == 'ContaminatedSites'
def test_get_symbol_ref():
    record = LegendEntryRecord(
        ImageRecord(FileAdapter().read('tests/resources/logo_canton.png')),
        {'de': 'Test'},
        'CodeA',
        'http://my.codelist.com/test.xml',
        ThemeRecord('ContaminatedSites', {'de': 'Belastete Standorte'}),
        view_service_id='1'
    )
    with pyramid_oereb_test_config():
        request = DummyRequest()
        url = urlparse(get_symbol_ref(request, record))
        assert url.path == '/image/symbol/ContaminatedSites/1/CodeA.png'
Ejemplo n.º 10
0
def test_get_symbol_ref():
    record = LegendEntryRecord(
        ImageRecord('1'.encode('utf-8')),
        {'de': 'Test'},
        'CodeA',
        'http://my.codelist.com/test.xml',
        ThemeRecord('ContaminatedSites', {'de': 'Belastete Standorte'}),
        view_service_id='1'
    )
    with pyramid_oereb_test_config():
        request = DummyRequest()
        url = urlparse(get_symbol_ref(request, record))
        assert url.path == '/image/symbol/ContaminatedSites/1/CodeA'
def test_get_extract_by_id(params):
    with pyramid_oereb_test_config() as pyramid_config:
        pyramid_config.add_renderer(
            'pyramid_oereb_extract_json',
            'pyramid_oereb.lib.renderer.extract.json_.Renderer')
        request = MockRequest()
        request.matchdict.update({
            'flavour': 'REDUCED',
            'format': 'JSON',
            'param1': 'GEOMETRY',
            'param2': 'TEST'
        })
        request.params.update(params)
        service = PlrWebservice(request)
        service.get_extract_by_id()
Ejemplo n.º 12
0
def test_get_symbol_ref(theme_code):
    with pyramid_oereb_test_config():
        request = MockRequest()
        record = LegendEntryRecord(ImageRecord(
            FileAdapter().read('tests/resources/python.svg')), {'de': 'Test'},
                                   u'test',
                                   u'test',
                                   ThemeRecord(theme_code, {'de': 'Test'}),
                                   view_service_id=1)
        if theme_code == u'NotExistingTheme':
            with pytest.raises(HTTPServerError):
                Base.get_symbol_ref(request, record)
        else:
            ref = Base.get_symbol_ref(request, record)
            assert ref == 'http://example.com/image/symbol/{}/{}/{}.svg'.format(
                theme_code, record.view_service_id, record.type_code)
def test_getcapabilities():
    with pyramid_oereb_test_config():
        request = MockRequest(current_route_url='http://example.com/oereb/capabilities/json')

        # Add params to matchdict as the view will do it for /capabilities/{format}
        request.matchdict.update({
            'format': u'json'
        })

        service = PlrWebservice(request)
        with open(schema_json_extract) as f:
            schema = json.loads(f.read())
        Draft4Validator.check_schema(schema)
        validator = Draft4Validator(schema)
        response = service.get_capabilities().json
        validator.validate(response)

        assert isinstance(response, dict)
        caps = response.get('GetCapabilitiesResponse')

        assert isinstance(caps[u'topic'], list)
        assert len(caps[u'topic']) == 17
        assert caps[u'topic'][15][u'Code'] == u'ForestPerimeters'
        forest_perimeter_languages = list(map(lambda l: l[u'Language'], caps[u'topic'][15][u'Text']))
        assert u'de' in forest_perimeter_languages
        assert u'fr' in forest_perimeter_languages
        assert u'it' in forest_perimeter_languages
        assert u'rm' in forest_perimeter_languages

        assert isinstance(caps[u'flavour'], list)
        assert len(caps[u'flavour']) == 3
        assert u'REDUCED' in caps[u'flavour']
        assert u'FULL' in caps[u'flavour']
        assert u'EMBEDDABLE' in caps[u'flavour']

        assert isinstance(caps[u'language'], list)
        assert len(caps[u'language']) == 4
        assert u'de' in caps[u'language']
        assert u'fr' in caps[u'language']
        assert u'it' in caps[u'language']
        assert u'rm' in caps[u'language']

        assert isinstance(caps[u'crs'], list)
        assert len(caps[u'crs']) == 1
        assert caps[u'crs'][0] == u'epsg:2056'

        assert isinstance(caps[u'municipality'], list)
Ejemplo n.º 14
0
def test_getversions_json():
    with pyramid_oereb_test_config():
        request = MockRequest(
            current_route_url='http://example.com/oereb/versions/json')

        # Add params to matchdict as the view will do it for /versions/{format}
        request.matchdict.update({'format': u'json'})

        webservice = PlrWebservice(request)
        versions = webservice.get_versions().json
        with open(schema_json_versions) as f:
            schema = json.loads(f.read())
        Draft4Validator.check_schema(schema)
        validator = Draft4Validator(schema)
        validator.validate(versions)
        assert isinstance(versions, dict)
        supported_version = versions.get('GetVersionsResponse')
        assert len(supported_version.get('supportedVersion')) == 1
Ejemplo n.º 15
0
def test_format_legend_entry(parameter):
    with pyramid_oereb_test_config():
        renderer = Renderer(DummyRenderInfo())
        renderer._language = u'de'
        renderer._params = parameter
        renderer._request = MockRequest()
        theme = ThemeRecord(u'ContaminatedSites', {u'de': u'Test'})
        legend_entry = LegendEntryRecord(
            ImageRecord(FileAdapter().read('tests/resources/python.svg')),
            {u'de': u'Legendeneintrag'},
            u'CodeA',
            u'type_code_list',
            theme,
            {'de': u'Subthema'},
            u'Weiteres Thema',
            view_service_id=1
        )
        result = renderer.format_legend_entry(legend_entry)
        expected = {
            'LegendText': renderer.get_multilingual_text({'de': 'Legendeneintrag'}),
            'TypeCode': 'CodeA',
            'TypeCodelist': 'type_code_list',
            'Theme': renderer.format_theme(theme),
            'SubTheme': 'Subthema',
            'OtherTheme': 'Weiteres Thema'
        }
        if parameter.images:
            expected.update({
                'Symbol': ImageRecord(FileAdapter().read('tests/resources/python.svg')).encode()
            })
        else:
            expected.update({
                'SymbolRef': 'http://example.com/image/symbol/{theme_code}/{view_service_id}/{code}.svg'
                    .format(
                        theme_code='ContaminatedSites',
                        view_service_id=1,
                        code='CodeA'
                    )
            })
        assert isinstance(result, dict)
        assert result == expected
Ejemplo n.º 16
0
def test_getegrid_xy():
    with pyramid_oereb_test_config():
        url = 'http://example.com/oereb/getegrid/json/?XY=-1999999.032739449,-999998.940457533'
        request = MockRequest(current_route_url=url)

        # Add params to matchdict as the view will do it for /getegrid/{format}/
        request.matchdict.update({'format': u'json'})

        request.params.update({'XY': '-1999999.032739449,-999998.940457533'})
        webservice = PlrWebservice(request)
        response = webservice.get_egrid_coord().json
        with open(schema_json_extract) as f:
            schema = json.loads(f.read())
        Draft4Validator.check_schema(schema)
        validator = Draft4Validator(schema)
        validator.validate(response)
        assert isinstance(response, dict)
        real_estates = response.get('GetEGRIDResponse')
        assert isinstance(real_estates, list)
        assert len(real_estates) == 2
        assert real_estates[0]['egrid'] == u'TEST'
        assert real_estates[0]['number'] == u'1000'
        assert real_estates[0]['identDN'] == u'BLTEST'
Ejemplo n.º 17
0
def test_return_json(topics):
    with pyramid_oereb_test_config() as pyramid_config:
        pyramid_config.add_renderer(
            'pyramid_oereb_extract_json',
            'pyramid_oereb.lib.renderer.extract.json_.Renderer')
        request = MockRequest()
        request.matchdict.update({
            'flavour': 'REDUCED',
            'format': 'JSON',
            'param1': 'GEOMETRY',
            'param2': 'TEST'
        })
        request.params.update({'TOPICS': topics})
        service = PlrWebservice(request)
        response = service.get_extract_by_id()

    with open(schema_json_extract) as f:
        schema = json.loads(f.read())
    Draft4Validator.check_schema(schema)
    validator = Draft4Validator(schema)
    response = json.loads(response.body.decode('utf-8'))
    validator.validate(response)

    assert isinstance(response, dict)

    extract = response.get('GetExtractByIdResponse').get('extract')
    real_estate = extract.get('RealEstate')

    assert isinstance(real_estate, dict)
    if topics == 'ALL':
        assert len(real_estate.get('RestrictionOnLandownership')) == 3
        assert len(extract.get('ConcernedTheme')) == 3
        assert len(extract.get('NotConcernedTheme')) == 14
        assert len(extract.get('ThemeWithoutData')) == 0
        restrictions = real_estate.get('RestrictionOnLandownership')
        assert restrictions[0]['Theme']['Code'] == 'LandUsePlans'
        assert restrictions[1]['Theme']['Code'] == 'MotorwaysBuildingLines'
        assert restrictions[2]['Theme']['Code'] == 'ContaminatedSites'
        # Check consistency of ordering (according to config) for not concerned themes
        assert extract.get(
            'NotConcernedTheme')[0]['Code'] == 'MotorwaysProjectPlaningZones'
        assert extract.get(
            'NotConcernedTheme')[1]['Code'] == 'RailwaysBuildingLines'
        assert extract.get(
            'NotConcernedTheme')[2]['Code'] == 'RailwaysProjectPlanningZones'
        assert extract.get(
            'NotConcernedTheme')[3]['Code'] == 'AirportsProjectPlanningZones'
        assert extract.get(
            'NotConcernedTheme')[4]['Code'] == 'AirportsBuildingLines'
        assert extract.get(
            'NotConcernedTheme')[5]['Code'] == 'AirportsSecurityZonePlans'
        assert extract.get(
            'NotConcernedTheme')[6]['Code'] == 'ContaminatedMilitarySites'
        assert extract.get(
            'NotConcernedTheme')[7]['Code'] == 'ContaminatedCivilAviationSites'
        assert extract.get('NotConcernedTheme'
                           )[8]['Code'] == 'ContaminatedPublicTransportSites'
        assert extract.get(
            'NotConcernedTheme')[9]['Code'] == 'GroundwaterProtectionZones'
        assert extract.get(
            'NotConcernedTheme')[10]['Code'] == 'GroundwaterProtectionSites'
        assert extract.get(
            'NotConcernedTheme')[11]['Code'] == 'NoiseSensitivityLevels'
        assert extract.get(
            'NotConcernedTheme')[12]['Code'] == 'ForestPerimeters'
        assert extract.get(
            'NotConcernedTheme')[13]['Code'] == 'ForestDistanceLines'

    if topics == 'ALL_FEDERAL':
        assert len(real_estate.get('RestrictionOnLandownership')) == 1
        assert len(extract.get('ConcernedTheme')) == 1
        assert len(extract.get('NotConcernedTheme')) == 9
        assert len(extract.get('ThemeWithoutData')) == 0
        restrictions = real_estate.get('RestrictionOnLandownership')
        assert restrictions[0]['Theme']['Code'] == 'MotorwaysBuildingLines'
    if topics == 'ContaminatedSites,RailwaysProjectPlanningZones':
        assert len(real_estate.get('RestrictionOnLandownership')) == 1
        assert len(extract.get('ConcernedTheme')) == 1
        assert len(extract.get('NotConcernedTheme')) == 1
        assert len(extract.get('ThemeWithoutData')) == 0
        restrictions = real_estate.get('RestrictionOnLandownership')
        assert restrictions[0]['Theme']['Code'] == 'ContaminatedSites'
Ejemplo n.º 18
0
def test_render(parameter, glossaries_input, glossaries_expected):
    date = datetime.datetime.now()
    with pyramid_oereb_test_config():
        view_service = ViewServiceRecord(u'http://geowms.bl.ch', 1, 1.0,
                                         {'de': u'http://geowms.bl.ch'}, None)
        real_estate = RealEstateRecord(
            u'RealEstate', 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 = Config.get('extract').get('base_data').get(
            'methods').get('date')
        date_method = resolver.resolve(date_method_string)
        av_update_date = date_method(real_estate)
        base_data = Config.get_base_data(av_update_date)

        av_provider_method_string = Config.get('extract').get('base_data').get(
            'methods').get('provider')
        av_provider_method = resolver.resolve(av_provider_method_string)
        cadaster_state = date
        theme = ThemeRecord(u'TEST', {'de': u'TEST TEXT'})
        datasources = [DatasourceRecord(theme, date, office_record)]
        plr_cadastre_authority = Config.get_plr_cadastre_authority()
        embeddable = EmbeddableRecord(cadaster_state, plr_cadastre_authority,
                                      av_provider_method(real_estate),
                                      av_update_date, datasources)
        extract = ExtractRecord(
            real_estate,
            ImageRecord('1'.encode('utf-8')),
            ImageRecord('2'.encode('utf-8')),
            ImageRecord('3'.encode('utf-8')),
            ImageRecord('4'.encode('utf-8')),
            office_record,
            base_data,
            embeddable,
            exclusions_of_liability=[
                ExclusionOfLiabilityRecord({'de': u'Haftungsausschluss'},
                                           {'de': u'Test'})
            ],
            glossaries=glossaries_input,
            general_information={'de': u'Allgemeine Informationen'},
            certification={'de': u'certification'},
            certification_at_web={'de': u'certification_at_web'},
        )
        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': [],
                'isReduced':
                True,
                'PLRCadastreAuthority':
                renderer.format_office(office_record),
                'BaseData':
                renderer.get_multilingual_text(
                    Config.get_base_data(av_update_date)),
                'RealEstate':
                renderer.format_real_estate(real_estate),
                'Certification': [{
                    'Language': 'de',
                    'Text': 'certification'
                }],
                'CertificationAtWeb': [{
                    'Language': 'de',
                    'Text': 'certification_at_web'
                }],
                'GeneralInformation': [{
                    'Language': 'de',
                    'Text': 'Allgemeine Informationen'
                }],
                'QRCode':
                '1'.encode('utf-8'),
                'ExclusionOfLiability': [{
                    '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':
                    base64.b64encode('1'.encode('utf-8')).decode('ascii'),
                    'FederalLogo':
                    base64.b64encode('2'.encode('utf-8')).decode('ascii'),
                    'CantonalLogo':
                    base64.b64encode('3'.encode('utf-8')).decode('ascii'),
                    'MunicipalityLogo':
                    base64.b64encode('4'.encode('utf-8')).decode('ascii'),
                })
            else:
                expected.update({
                    'LogoPLRCadastreRef':
                    u'http://example.com/image/logo/oereb/de',
                    'FederalLogoRef':
                    u'http://example.com/image/logo/confederation/de',
                    'CantonalLogoRef':
                    u'http://example.com/image/logo/canton/de',
                    'MunicipalityLogoRef':
                    u'http://example.com/image/municipality/2829'
                })
            assert result == expected
Ejemplo n.º 19
0
def test_format_plr(parameter):
    with pyramid_oereb_test_config():
        renderer = Renderer(DummyRenderInfo())
        renderer._language = 'de'
        renderer._params = parameter
        renderer._request = MockRequest()
        document = DocumentRecord('Law', law_status(), datetime.date.today(),
                                  {u'de': u'Test Dokument'},
                                  OfficeRecord({u'de': u'BUD'}),
                                  {'de': 'http://mein.dokument.ch'})
        if parameter.flavour == 'reduced':
            documents = [document]
        else:
            documents = None
        theme = ThemeRecord(u'ContaminatedSites', {u'de': u'Test theme'})
        office = OfficeRecord({'de': 'Test Office'})
        legend_entry = LegendEntryRecord(ImageRecord(
            base64.b64encode('1'.encode('utf-8'))), {'de': 'Test'},
                                         'CodeA',
                                         'TypeCodeList',
                                         theme,
                                         view_service_id=1)
        view_service = ViewServiceRecord('http://geowms.bl.ch', 1, 1.0,
                                         {'de': u'http://geowms.bl.ch'},
                                         [legend_entry])
        geometry = GeometryRecord(law_status(), datetime.date.today(),
                                  Point(1, 1))
        plr = PlrRecord(theme, {'de': 'Test'},
                        law_status(),
                        datetime.date.today(),
                        office,
                        ImageRecord('1'.encode('utf-8')),
                        view_service, [geometry],
                        sub_theme={'de': 'Subtopic'},
                        other_theme='Additional topic',
                        type_code='CodeA',
                        type_code_list='TypeCodeList',
                        documents=documents,
                        view_service_id=1)
        plr.part_in_percent = 0.5
        if parameter.flavour == 'full':
            with pytest.raises(ValueError):
                renderer.format_plr([plr])
        else:
            result = renderer.format_plr([plr])
            assert isinstance(result, list)
            assert len(result) == 1
            assert isinstance(result[0], dict)
            expected = {
                'Information': renderer.get_multilingual_text(plr.information),
                'Theme': renderer.format_theme(plr.theme),
                'Lawstatus': {
                    'Code': 'inForce',
                    'Text': {
                        'Language': 'de',
                        'Text': 'In Kraft'
                    }
                },
                'ResponsibleOffice':
                renderer.format_office(plr.responsible_office),
                'Map': renderer.format_map(plr.view_service),
                'SubTheme': 'Subtopic',
                'OtherTheme': 'Additional topic',
                'TypeCode': 'CodeA',
                'TypeCodelist': 'TypeCodeList',
                'LegalProvisions': [renderer.format_document(document)],
                'PartInPercent': 0.5
            }
            if parameter.images:
                expected.update({
                    'Symbol':
                    base64.b64encode('1'.encode('utf-8')).decode('ascii')
                })
            else:
                expected.update({
                    'SymbolRef':
                    'http://example.com/image/symbol/{theme}/{view_service_id}/{code}'
                    .format(theme='ContaminatedSites',
                            view_service_id=1,
                            code='CodeA')
                })
            assert result[0] == expected