Esempio n. 1
0
def test_get_custom_wms_params_true():
    Config._config = None
    Config.init('./tests/contrib/print_proxy/resources/test_custom_config.yml',
                'pyramid_oereb')
    renderer = Renderer(DummyRenderInfo())
    # Define different test cases
    params1 = {
        'TRANSPARENT': ['true'],
        'OTHERCUSTOM': ['myvalue'],
        'epoch': ['2018-11-29T15:13:31']
    }
    params2 = {'OTHERCUSTOM': ['myvalue'], 'epoch': ['2018-11-29T15:13:31']}
    params3 = {'epoch': '2018-11-29T15:13:31'}
    params4 = {'epoch': ['2018-11-29T15:13:31', '2020-11-29T17:13:50']}

    config1 = renderer.get_custom_wms_params(params1)
    config2 = renderer.get_custom_wms_params(params2)
    config3 = renderer.get_custom_wms_params(params3)
    config4 = renderer.get_custom_wms_params(params4)

    # Restore normal config
    Config._config = None
    Config.init('./pyramid_oereb/standard/pyramid_oereb.yml', 'pyramid_oereb')

    # Do the check for the different test cases. Value should match the ones from the YAML configuration.
    assert config1 == {'TRANSPARENT': 'true', 'epoch': '2018-11-29T15:13:31'}
    assert config2 == {'epoch': '2018-11-29T15:13:31'}
    assert config3 == {'epoch': '2018-11-29T15:13:31'}
    assert config4 == {'epoch': '2018-11-29T15:13:31,2020-11-29T17:13:50'}
Esempio n. 2
0
def test_get_localized_text_from_string(config):
    assert isinstance(config._config, dict)
    renderer = Renderer(DummyRenderInfo())
    localized_text = renderer.get_localized_text('Test')
    assert isinstance(localized_text, dict)
    assert localized_text.get('Text') == 'Test'
    assert localized_text.get('Language') == config.get('default_language')
Esempio n. 3
0
def test_format_map(config, params):
    assert isinstance(config._config, dict)
    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'type1', u'type_code_list',
            ThemeRecord(u'ContaminatedSites', {u'de': u'Test'}))
        view_service = ViewServiceRecord(
            'http://my.wms.ch',
            'http://my.wms.ch?SERVICE=WMS&REQUEST=GetLegendGraphic',
            [legend_entry])
        view_service.image = ImageRecord('1'.encode('utf-8'))
        result = renderer.format_map(view_service)
        assert isinstance(result, dict)
        assert result == {
            'Image': base64.b64encode('1'.encode('utf-8')).decode('ascii'),
            'ReferenceWMS': 'http://my.wms.ch',
            'LegendAtWeb':
            'http://my.wms.ch?SERVICE=WMS&REQUEST=GetLegendGraphic',
            'OtherLegend': [renderer.format_legend_entry(legend_entry)]
        }
Esempio n. 4
0
def test_format_legend_entry(parameter, config):
    assert isinstance(config._config, dict)
    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('1'.encode('utf-8')),
                                         {u'de': u'Legendeneintrag'}, u'type1',
                                         u'type_code_list', theme, u'Subthema',
                                         u'Weiteres Thema')
        result = renderer.format_legend_entry(legend_entry)
        expected = {
            'LegendText':
            renderer.get_multilingual_text({'de': 'Legendeneintrag'}),
            'TypeCode': 'type1',
            'TypeCodelist': 'type_code_list',
            'Theme': renderer.format_theme(theme),
            'SubTheme': 'Subthema',
            'OtherTheme': 'Weiteres Thema'
        }
        if parameter.images:
            expected.update(
                {'Symbol': ImageRecord('1'.encode('utf-8')).encode()})
        else:
            expected.update({
                'SymbolRef':
                'http://example.com/image/symbol/{theme_code}/{code}'.format(
                    theme_code='ContaminatedSites', code='type1')
            })
        assert isinstance(result, dict)
        assert result == expected
Esempio n. 5
0
def test_format_document(params, document, result_dict):
    renderer = Renderer(DummyRenderInfo())
    renderer._language = u'de'
    renderer._params = params
    result = renderer.format_document(document)
    assert isinstance(result, dict)
    assert result == result_dict
Esempio n. 6
0
def test_format_real_estate(config):
    assert isinstance(config._config, dict)
    renderer = Renderer(DummyRenderInfo())
    renderer._language = u'de'
    renderer._params = Parameter(
        'reduced', 'json', True, False, 'BL0200002829', '1000', 'CH775979211712', 'de')
    geometry = MultiPolygon([Polygon([(0, 0), (1, 1), (1, 0)])])
    view_service = ViewServiceRecord(u'http://geowms.bl.ch', u'http://geowms.bl.ch')
    document = DocumentRecord(law_status(), datetime.date.today(), {u'de': u'Test Dokument'},
                              OfficeRecord({u'de': u'BUD'}), {'de': 'http://mein.dokument.ch'})
    real_estate = RealEstateRecord(u'RealEstate', u'BL', u'Liestal', 2829, 11395,
                                   geometry, u'http://www.geocat.ch', u'1000', u'BL0200002829',
                                   u'CH775979211712', u'Subunit', [], references=[document])
    real_estate.plan_for_land_register = view_service
    result = renderer.format_real_estate(real_estate)
    assert isinstance(result, dict)
    assert result == {
        'Type': u'RealEstate',
        'Canton': u'BL',
        'Municipality': u'Liestal',
        'FosNr': 2829,
        'LandRegistryArea': 11395,
        'PlanForLandRegister': 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)]
    }
Esempio n. 7
0
def test_format_geometry(params, geometry, result_dict):
    renderer = Renderer(DummyRenderInfo())
    renderer._language = u'de'
    renderer._params = params
    result = renderer.format_geometry(geometry)
    assert isinstance(result, dict)
    assert result == result_dict
Esempio n. 8
0
def test_legend():
    renderer = Renderer(DummyRenderInfo())
    pdf_to_join = set()
    printable_extract = extract()
    renderer.convert_to_printable_extract(printable_extract, geometry(), pdf_to_join)
    first_plr = printable_extract.get('RealEstate_RestrictionOnLandownership')[0]
    assert isinstance(first_plr, dict)
Esempio n. 9
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
Esempio n. 10
0
def test_sub_theme():
    parameters = Parameter(
        response_format='xml',
        flavour='reduced',
        with_geometry=False,
        images=True,
        identdn='BL0200002829',
        number='1000',
        egrid='CH775979211712',
        language='de')
    renderer = Renderer(DummyRenderInfo())
    renderer._language = u'de'
    renderer._request = MockRequest()
    renderer._request.route_url = lambda url, **kwargs: "http://example.com/current/view"
    legend_entry = LegendEntryRecord(
        symbol=ImageRecord('1'.encode('utf-8')),
        legend_text={'de': 'legend1'},
        type_code='LandUsePlans',
        type_code_list='bla',
        theme=ThemeRecord(u'LandUsePlans', {'de': 'Theme 1'}),
        sub_theme={'de': 'sub theme de'}
    )
    content = template.render(**{
        'params': parameters,
        'localized': renderer.get_localized_text,
        'multilingual': renderer.get_multilingual_text,
        'legend_entry': legend_entry
    }).decode('utf-8').split('\n')
    no_empty_lines = list(filter(lambda line: line != '', content))
    assert no_empty_lines[19] == '<data:SubTheme>sub theme de</data:SubTheme>'
    assert len(no_empty_lines) == 20
Esempio n. 11
0
def test_get_localized_text_from_dict(language, result):
    renderer = Renderer(DummyRenderInfo())
    renderer._language = language
    multilingual_text = {'de': u'Dies ist ein Test', 'en': u'This is a test'}
    localized_text = renderer.get_localized_text(multilingual_text)
    assert isinstance(localized_text, dict)
    assert localized_text.get('Language') in ['de', 'en']
    assert localized_text.get('Text') == result
Esempio n. 12
0
def test_get_multilingual_text_from_dict(language, result):
    renderer = Renderer(DummyRenderInfo())
    renderer._language = language
    multilingual_text = {'de': u'Dies ist ein Test', 'en': u'This is a test'}
    ml_text = renderer.get_multilingual_text(multilingual_text)
    assert isinstance(ml_text, list)
    assert len(ml_text) == 1
    assert ml_text[0].get('Language') in ['de', 'en']
    assert ml_text[0].get('Text') == result
Esempio n. 13
0
def test_bad_config_wms_url_params():
    Config._config = None
    Config.init('./tests/contrib/print_proxy/resources/test_bad_config.yml',
                'pyramid_oereb')
    renderer = Renderer(DummyRenderInfo())
    config = renderer.get_wms_url_params()
    # Restore normal config
    Config._config = None
    Config.init('./pyramid_oereb/standard/pyramid_oereb.yml', 'pyramid_oereb')
    # Do the check for this test. Value should be empty.
    assert config == {}
Esempio n. 14
0
def test_format_theme(params):
    renderer = Renderer(DummyRenderInfo())
    renderer._language = u'de'
    renderer._params = params
    theme = ThemeRecord(u'TestTheme', {u'de': u'Test-Thema'})
    result = renderer.format_theme(theme)
    assert isinstance(result, dict)
    assert result == {
        'Code': 'TestTheme',
        'Text': renderer.get_localized_text({'de': 'Test-Thema'})
    }
Esempio n. 15
0
def test_config_wms_url_params():
    Config._config = None
    Config.init('./tests/contrib/print_proxy/resources/test_config.yml',
                'pyramid_oereb')
    renderer = Renderer(DummyRenderInfo())
    config = renderer.get_wms_url_params()
    # Restore normal config
    Config._config = None
    Config.init('./pyramid_oereb/standard/pyramid_oereb.yml', 'pyramid_oereb')
    # Do the check for this test. Value should match the one from the YAML configuration.
    assert config == {'TRANSPARENT': 'true', 'OTHERCUSTOM': 'myvalue'}
Esempio n. 16
0
def test_embeddable(params):
    renderer = Renderer(DummyRenderInfo())
    renderer._language = u'de'
    renderer._params = params
    date = datetime.datetime.now()
    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.plan_for_land_register = view_service
    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)

    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', {u'de': u'TEST TEXT'})
    datasources = [DatasourceRecord(theme, date, OfficeRecord({u'de': u'Test Office'}))]
    plr_cadastre_authority = Config.get_plr_cadastre_authority()
    embeddable = EmbeddableRecord(
        cadaster_state,
        plr_cadastre_authority,
        av_provider_method(real_estate),
        av_update_date,
        datasources
    )
    result = renderer.format_embeddable(embeddable)
    assert result == {
        'cadasterOrganisationName': plr_cadastre_authority.name.get('de'),
        'datasource': [{
            'topic': {
                'Text': {'Text': u'TEST TEXT', 'Language': 'de'},
                'Code': 'TEST'
            },
            'dataownerName': u'Test Office',
            'transferFromSource': date.strftime('%d-%m-%YT%H:%M:%S')
        }],
        'cadasterState': cadaster_state.strftime('%d-%m-%YT%H:%M:%S'),
        'dataOwnerNameCadastralSurveying': u'This is only a dummy',
        'transferFromSourceCadastralSurveying': av_update_date.strftime('%d-%m-%YT%H:%M:%S')
    }
Esempio n. 17
0
def test_sort_by_localized_text():
    renderer = Renderer(DummyRenderInfo())
    renderer._language = 'de'
    # Elements like in the glossary
    multilingual_elements = [{
        'title': {
            'fr': u'RDPPF',
            'de': u'\xd6REB',
        },
        'content': {
            'fr': u'Content-RDPPF',
            'de': u'Content-\xd6REB',
        },
    }, {
        'title': {
            'fr': u'No OFS',
            'de': u'BFS-Nr.',
        },
        'content': {
            'fr': u'Content-No OFS',
            'de': u'Content-BFS-Nr.',
        },
    }, {
        'title': {
            'fr': u'Ofo',
            'de': u'WaV',
        },
        'content': {
            'fr': u'Content-Ofo',
            'de': u'Content-WaV',
        },
    }]
    sorted_multilingual_elements = renderer.sort_by_localized_text(
        multilingual_elements, lambda element: element['title'])
    assert isinstance(sorted_multilingual_elements, list)
    assert len(sorted_multilingual_elements) == 3
    # Elements sorted by 'de' title:
    assert sorted_multilingual_elements[0]['title']['de'] == u'BFS-Nr.'
    assert sorted_multilingual_elements[1]['title']['de'] == u'\xd6REB'
    assert sorted_multilingual_elements[2]['title']['de'] == u'WaV'
    assert sorted_multilingual_elements[0]['content'][
        'de'] == u'Content-BFS-Nr.'
    assert sorted_multilingual_elements[1]['content'][
        'de'] == u'Content-\xd6REB'
    assert sorted_multilingual_elements[2]['content']['de'] == u'Content-WaV'
    # Still sorted with 'de' language, effect on 'fr' elements:
    assert sorted_multilingual_elements[0]['title']['fr'] == u'No OFS'
    assert sorted_multilingual_elements[1]['title']['fr'] == u'RDPPF'
    assert sorted_multilingual_elements[2]['title']['fr'] == u'Ofo'
    assert sorted_multilingual_elements[0]['content'][
        'fr'] == u'Content-No OFS'
    assert sorted_multilingual_elements[1]['content']['fr'] == u'Content-RDPPF'
    assert sorted_multilingual_elements[2]['content']['fr'] == u'Content-Ofo'
Esempio n. 18
0
def test_extract_against_schema(parameter, test_extract):
    extract = test_extract
    renderer = Renderer(DummyRenderInfo())
    renderer._language = u'de'
    renderer._request = MockRequest()
    renderer._request.route_url = lambda url, **kwargs: "http://example.com/current/view"
    rendered = renderer._render(extract, parameter)

    xmlschema_doc = etree.parse(schema_xml_extract)
    xmlschema = etree.XMLSchema(xmlschema_doc)
    buffer = BytesIO(rendered)
    doc = etree.parse(buffer)
    xmlschema.assertValid(doc)
Esempio n. 19
0
def test_mapfish_print_entire_extract():
    renderer = Renderer(DummyRenderInfo())
    pdf_to_join = set()
    printable_extract = extract()
    renderer.convert_to_printable_extract(printable_extract, geometry(),
                                          pdf_to_join)
    # Uncomment to print the result
    # f = open('/tmp/printable_extract.json', 'w')
    # f.write(json.dumps(printable_extract))
    # f.close()
    assert deepCompare(printable_extract, expected_printable_extract())
    # Do it twice, to test all keys in each reports
    assert deepCompare(expected_printable_extract(), printable_extract)
Esempio n. 20
0
def test_format_office():
    renderer = Renderer(DummyRenderInfo())
    renderer._language = 'de'
    office = OfficeRecord({'de': u'Test'}, uid=u'test_uid', office_at_web=u'http://test.example.com',
                          line1=u'test_line1', line2=u'test_line2', street=u'test_street',
                          number=u'test_number', postal_code=1234, city=u'test_city')
    assert renderer.format_office(office) == {
        'Name': renderer.get_multilingual_text('Test'),
        'UID': u'test_uid',
        'OfficeAtWeb': u'http://test.example.com',
        'Line1': u'test_line1',
        'Line2': u'test_line2',
        'Street': u'test_street',
        'Number': u'test_number',
        'PostalCode': 1234,
        'City': u'test_city'
    }
Esempio n. 21
0
def test_get_custom_wms_params_false():
    Config._config = None
    Config.init('./tests/contrib/print_proxy/resources/test_config.yml',
                'pyramid_oereb')
    renderer = Renderer(DummyRenderInfo())
    params = {
        'TRANSPARENT': ['true'],
        'OTHERCUSTOM': ['myvalue'],
        'epoch': ['2018-11-29T15:13:31']
    }
    config = renderer.get_custom_wms_params(params)

    # Restore normal config
    Config._config = None
    Config.init('./pyramid_oereb/standard/pyramid_oereb.yml', 'pyramid_oereb')

    assert config == {'OTHERCUSTOM': 'myvalue', 'TRANSPARENT': 'true'}
def test_sub_theme():
    parameters = Parameter(flavour='reduced',
                           format='xml',
                           geometry=False,
                           images=True,
                           identdn='BL0200002829',
                           number='1000',
                           egrid='CH775979211712',
                           language='de')
    renderer = Renderer(DummyRenderInfo())
    renderer._language = u'de'
    renderer._request = MockRequest()
    renderer._request.route_url = lambda url, **kwargs: "http://example.com/current/view"
    office = OfficeRecord(name={'de': 'office de'})
    law_status = LawStatusRecord(code='runningModifications',
                                 text={'de': 'law status de'})
    geometry = GeometryRecord(law_status,
                              datetime.now(),
                              Polygon(),
                              'test',
                              office=office)
    public_law_restriction = PlrRecord(
        theme=ThemeRecord(u'LandUsePlans', {'de': 'Theme 1'}),
        information={'de': 'information de'},
        law_status=law_status,
        published_from=datetime.now(),
        responsible_office=office,
        symbol=ImageRecord('1'.encode('utf-8')),
        view_service=ViewServiceRecord(reference_wms='',
                                       layer_index=0,
                                       layer_opacity=1.0),
        geometries=[geometry],
        sub_theme={'de': 'sub theme de'})
    content = template.render(
        **{
            'params': parameters,
            'localized': renderer.get_localized_text,
            'multilingual': renderer.get_multilingual_text,
            'public_law_restriction': public_law_restriction
        }).decode('utf-8').split('\n')
    no_empty_lines = list(filter(lambda line: line != '', content))
    assert no_empty_lines[
        18] == '    <data:SubTheme>sub theme de</data:SubTheme>'
    assert len(no_empty_lines) == 72
Esempio n. 23
0
def test_mapfish_print_entire_extract():
    renderer = Renderer(DummyRenderInfo())
    pdf_to_join = set()
    printable_extract = extract()
    renderer.convert_to_printable_extract(printable_extract, geometry(),
                                          pdf_to_join)
    # Uncomment to print the result
    # f = open('/tmp/printable_extract.json', 'w')
    # f.write(json.dumps(printable_extract))
    # f.close()

    expected = expected_printable_extract()
    # FIXME Do the test only in python 2 because order of item are different
    # in some cases with python 3. The Error will not be possible anymore with
    # https://github.com/openoereb/pyramid_oereb/issues/651
    if sys.version_info.major == 2:
        assert deepCompare(printable_extract, expected)
        # Do it twice, to test all keys in each reports
        assert deepCompare(expected, printable_extract)
Esempio n. 24
0
def test_version_against_schema():
    versions = {
        u'GetVersionsResponse': {
            u'supportedVersion': [{
                u'version':
                u'1.0',
                u'serviceEndpointBase':
                u'https://example.com'
            }]
        }
    }
    renderer = VersionsRenderer(DummyRenderInfo())
    rendered = renderer._render(versions)

    xmlschema_doc = etree.parse(schema_xml_versions)
    xmlschema = etree.XMLSchema(xmlschema_doc)
    buffer = BytesIO(rendered)
    doc = etree.parse(buffer)
    assert xmlschema.validate(doc)
Esempio n. 25
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
Esempio n. 26
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
Esempio n. 27
0
def test_mapfish_print_entire_extract():
    renderer = Renderer(DummyRenderInfo())
    pdf_to_join = set()
    printable_extract = extract()
    renderer.convert_to_printable_extract(printable_extract, geometry(), pdf_to_join)
    assert printable_extract == expected_printable_extract()
Esempio n. 28
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
Esempio n. 29
0
def test_default_wms_url_param_config():
    renderer = Renderer(DummyRenderInfo())
    config = renderer.get_wms_url_params()
    # Do the check for this test. Value should be the default setting.
    assert config == {'TRANSPARENT': 'true'}
Esempio n. 30
0
def test_call():
    renderer = Base(DummyRenderInfo())
    assert isinstance(renderer.info, DummyRenderInfo)
    assert renderer.info.name == 'test'