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
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
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
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'
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)] }
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)
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'})] }
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
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' }
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
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
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')