コード例 #1
0
def test_format_document(DummyRenderInfo, 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
コード例 #2
0
def test_format_geometry(DummyRenderInfo, 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
コード例 #3
0
def test_get_localized_text_from_dict(DummyRenderInfo, language, result,
                                      pyramid_oereb_test_config):
    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
コード例 #4
0
def test_sort_by_localized_text(DummyRenderInfo):
    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'
コード例 #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)]
    }
コード例 #6
0
def test_get_localized_text_from_dict_no_default(DummyRenderInfo, language,
                                                 result, disallowNull):
    renderer = Renderer(DummyRenderInfo())
    renderer._language = language
    multilingual_text = {'en': u'This is a test', 'it': u'Questo è un test'}

    if language in ['en', 'it'] or not disallowNull:
        localized_text = renderer.get_localized_text(multilingual_text,
                                                     disallowNull)
        assert isinstance(localized_text, dict)
        assert localized_text.get('Language') in ['de', 'it', 'en']
        assert localized_text.get('Text') == result
    else:
        with pytest.raises(HTTPInternalServerError):
            localized_text = renderer.get_localized_text(
                multilingual_text, disallowNull)
コード例 #7
0
def test_format_theme(DummyRenderInfo, params):
    renderer = Renderer(DummyRenderInfo())
    renderer._language = u'de'
    renderer._params = params
    theme = ThemeRecord(u'TestTheme', {u'de': u'Test-Thema'}, 100)
    result = renderer.format_theme(theme)
    assert isinstance(result, dict)
    assert result == {
        'Code': 'TestTheme',
        'Text': [renderer.get_localized_text({'de': 'Test-Thema'})]
    }
コード例 #8
0
def test_format_legend_entry(DummyRenderInfo, parameter):
    renderer = Renderer(DummyRenderInfo())
    renderer._language = u'de'
    renderer._params = parameter
    renderer._request = MockRequest()
    theme = ThemeRecord(u'ch.BelasteteStandorte', {u'de': u'Test'}, 410)
    legend_entry = LegendEntryRecord(ImageRecord(
        FileAdapter().read('tests/resources/python.svg')),
                                     {u'de': u'Legendeneintrag'},
                                     u'CodeA',
                                     u'type_code_list',
                                     theme,
                                     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),
    }
    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='ch.BelasteteStandorte',
                    view_service_id=1,
                    code='CodeA')
        })
    assert isinstance(result, dict)
    assert result == expected
コード例 #9
0
def test_format_office(DummyRenderInfo):
    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':
        renderer.get_multilingual_text(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'
    }
コード例 #10
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
コード例 #11
0
def test_format_plr(DummyRenderInfo, parameter):
    renderer = Renderer(DummyRenderInfo())
    renderer._language = 'de'
    renderer._params = parameter
    renderer._request = MockRequest()
    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'})
    documents = [document]
    theme = ThemeRecord(u'ch.BelasteteStandorte', {u'de': u'Test theme'}, 410)
    subTheme = None
    # subTheme = ThemeRecord(
    #     u'ch.BelasteteStandorte',
    #     {u'de': u'SubTheme'}, 411, u'SubCodech.BelasteteStandorte'
    # )
    office = OfficeRecord({'de': 'Test Office'})
    legend_entry = LegendEntryRecord(ImageRecord(
        FileAdapter().read('tests/resources/python.svg')), {'de': 'Test'},
                                     'CodeA',
                                     'TypeCodeList',
                                     theme,
                                     view_service_id=1)
    view_service = ViewServiceRecord({'de': 'http://geowms.bl.ch'}, 1, 1.0,
                                     'de', 2056, None, [legend_entry])
    geometry = GeometryRecord(law_status(), datetime.date.today(), None,
                              Point(1, 1))
    plr = PlrRecord(theme,
                    legend_entry,
                    law_status(),
                    datetime.date.today(),
                    None,
                    office,
                    ImageRecord(
                        FileAdapter().read('tests/resources/python.svg')),
                    view_service, [geometry],
                    subTheme,
                    type_code='CodeA',
                    type_code_list='TypeCodeList',
                    documents=documents,
                    view_service_id=1)
    plr.part_in_percent = 0.5

    result = renderer.format_plr([plr])
    assert isinstance(result, list)
    assert len(result) == 1
    assert isinstance(result[0], dict)
    expected = {
        'LegendText': renderer.get_multilingual_text(plr.legend_text),
        'Theme': renderer.format_theme(plr.theme),
        'Lawstatus': {
            'Code': 'inKraft',
            'Text': [{
                'Language': 'de',
                'Text': 'Rechtskräftig'
            }]
        },
        'ResponsibleOffice': renderer.format_office(plr.responsible_office),
        'Map': renderer.format_map(plr.view_service),
        'TypeCode': 'CodeA',
        'TypeCodelist': 'TypeCodeList',
        'LegalProvisions': [renderer.format_document(document)],
        'PartInPercent': 0.5
    }
    if parameter.images:
        expected.update({
            'Symbol':
            ImageRecord(
                FileAdapter().read('tests/resources/python.svg')).encode()
        })
    else:
        result = renderer.format_plr([plr])
        assert isinstance(result, list)
        assert len(result) == 1
        assert isinstance(result[0], dict)
        expected = {
            'LegendText': renderer.get_multilingual_text(plr.legend_text),
            'Theme': renderer.format_theme(plr.theme),
            'Lawstatus': {
                'Code': 'inKraft',
                'Text': [{
                    'Language': 'de',
                    'Text': 'Rechtskräftig'
                }]
            },
            'ResponsibleOffice':
            renderer.format_office(plr.responsible_office),
            'Map': renderer.format_map(plr.view_service),
            'TypeCode': 'CodeA',
            'TypeCodelist': 'TypeCodeList',
            'LegalProvisions': [renderer.format_document(document)],
            'PartInPercent': 0.5
        }
        if parameter.images:
            expected.update({
                'Symbol':
                ImageRecord(
                    FileAdapter().read('tests/resources/python.svg')).encode()
            })
        else:
            expected.update({
                'SymbolRef':
                'http://example.com/image/symbol/{theme}/{view_service_id}/{code}.svg'
                .format(theme='ch.BelasteteStandorte',
                        view_service_id=1,
                        code='CodeA')
            })
        assert result[0] == expected
コード例 #12
0
def test_get_localized_text_from_string(DummyRenderInfo):
    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')