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'}
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)
def test_load_sorter(): module_name = "pyramid_oereb.contrib.print_proxy.sub_themes.sorting" class_alphabetic_sort = "AlphabeticSort" class_list_sort = "ListSort" alphabetic_sort = Renderer._load_sorter(module_name, class_alphabetic_sort) assert alphabetic_sort == AlphabeticSort list_sort = Renderer._load_sorter(module_name, class_list_sort) assert list_sort == ListSort
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'}
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 == {}
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)
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_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)
def test_split_restrictions_by_theme_code(): test_data = [{ "Theme_Code": "ContaminatedPublicTransportSites", "SubTheme": "SubTheme1" }, { "Theme_Code": "ContaminatedPublicTransportSites", "SubTheme": "SubTheme2" }, { "Theme_Code": "ContaminatedPublicTransportSites", "SubTheme": "SubTheme3" }, { "Theme_Code": "GroundwaterProtectionZones", "SubTheme": "SubTheme1a" }, { "Theme_Code": "GroundwaterProtectionZones", "SubTheme": "SubTheme2a" }] expected_result = { "ContaminatedPublicTransportSites": [{ "Theme_Code": "ContaminatedPublicTransportSites", "SubTheme": "SubTheme1" }, { "Theme_Code": "ContaminatedPublicTransportSites", "SubTheme": "SubTheme2" }, { "Theme_Code": "ContaminatedPublicTransportSites", "SubTheme": "SubTheme3" }], "GroundwaterProtectionZones": [{ "Theme_Code": "GroundwaterProtectionZones", "SubTheme": "SubTheme1a" }, { "Theme_Code": "GroundwaterProtectionZones", "SubTheme": "SubTheme2a" }] } splitted = Renderer._split_restrictions_by_theme_code(test_data) for theme in splitted: for index in range(len(splitted[theme])): assert splitted[theme][index]["Theme_Code"] == expected_result[ theme][index]["Theme_Code"] assert splitted[theme][index]["SubTheme"] == expected_result[ theme][index]["SubTheme"]
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'}
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()
def test_archive_pdf(): renderer = Renderer(DummyRenderInfo()) extract = {'RealEstate_EGRID': 'CH113928077734'} path_and_filename = renderer.archive_pdf_file('/tmp', bytes(), extract) assert os.path.isfile(path_and_filename)
def test_group_legal_provisions(): renderer = Renderer(DummyRenderInfo()) test_legal_provisions = [{ "Canton": "BL", "DocumentType": "LegalProvision", "Lawstatus_Code": "inForce", "Lawstatus_Text": "in Kraft", "OfficialNumber": "3891.100", "ResponsibleOffice_Name": "Bundesamt für Verkehr BAV", "ResponsibleOffice_OfficeAtWeb": "http://www.bav.admin.ch/themen/verkehrspolitik/00709/index.html", "TextAtWeb": [{ "URL": "https://oereb-gr-preview.000.ch/api/attachments/197" }], "Title": "Baugesetz" }, { "Canton": "BL", "DocumentType": "LegalProvision", "Lawstatus_Code": "inForce", "Lawstatus_Text": "in Kraft", "OfficialNumber": "3891.100", "ResponsibleOffice_Name": "Bundesamt für Verkehr BAV", "ResponsibleOffice_OfficeAtWeb": "http://www.bav.admin.ch/themen/verkehrspolitik/00709/index.html", "TextAtWeb": [{ "URL": "https://oereb-gr-preview.000.ch/api/attachments/198" }], "Title": "Baugesetz" }, { "Canton": "BL", "DocumentType": "LegalProvision", "Lawstatus_Code": "inForce", "Lawstatus_Text": "in Kraft", "OfficialNumber": "07.447", "ResponsibleOffice_Name": "Bundesamt für Verkehr BAV", "ResponsibleOffice_OfficeAtWeb": "http://www.bav.admin.ch/themen/verkehrspolitik/00709/index.html", "TextAtWeb": [{ "URL": "https://oereb-gr-preview.000.ch/api/attachments/213" }], "Title": "Revision Ortsplanung" }, { "Canton": "BL", "DocumentType": "LegalProvision", "Lawstatus_Code": "inForce", "Lawstatus_Text": "in Kraft", "OfficialNumber": "07.447", "ResponsibleOffice_Name": "Bundesamt für Verkehr BAV", "ResponsibleOffice_OfficeAtWeb": "http://www.bav.admin.ch/themen/verkehrspolitik/00709/index.html", "TextAtWeb": [{ "URL": "https://oereb-gr-preview.000.ch/api/attachments/214" }], "Title": "Revision Ortsplanung" }] expected_results = [{ "Canton": "BL", "DocumentType": "LegalProvision", "Lawstatus_Code": "inForce", "Lawstatus_Text": "in Kraft", "OfficialNumber": "3891.100", "ResponsibleOffice_Name": "Bundesamt für Verkehr BAV", "ResponsibleOffice_OfficeAtWeb": "http://www.bav.admin.ch/themen/verkehrspolitik/00709/index.html", "TextAtWeb": [ { "URL": "https://oereb-gr-preview.000.ch/api/attachments/197" }, { "URL": "https://oereb-gr-preview.000.ch/api/attachments/198" }, ], "Title": "Baugesetz" }, { "Canton": "BL", "DocumentType": "LegalProvision", "Lawstatus_Code": "inForce", "Lawstatus_Text": "in Kraft", "OfficialNumber": "07.447", "ResponsibleOffice_Name": "Bundesamt für Verkehr BAV", "ResponsibleOffice_OfficeAtWeb": "http://www.bav.admin.ch/themen/verkehrspolitik/00709/index.html", "TextAtWeb": [ { "URL": "https://oereb-gr-preview.000.ch/api/attachments/213" }, { "URL": "https://oereb-gr-preview.000.ch/api/attachments/214" }, ], "Title": "Revision Ortsplanung" }] assert expected_results == renderer.group_legal_provisions( test_legal_provisions)
def test_get_sorted_law(): renderer = Renderer(DummyRenderInfo()) test_law = [{ 'DocumentType': 'Law', 'TextAtWeb': [{ 'URL': 'http://www.admin.ch/ch/d/sr/c814_01.html' }], 'Title': 'Raumplanungsverordnung für den Kanton Graubünden', 'Abbreviation': 'KRVO', 'OfficialNumber': 'BR 801.110', 'Canton': 'GR', 'Lawstatus_Code': 'inForce', 'Lawstatus_Text': 'in Kraft', 'ResponsibleOffice_Name': u'Bundesamt für Verkehr BAV', 'ResponsibleOffice_OfficeAtWeb': 'https://www.gr-lex.gr.ch/frontend/versions/pdf_file_with_annex/2934?locale=de' }, { 'DocumentType': u'Law', 'TextAtWeb': [{ 'URL': u'http://www.admin.ch/ch/d/sr/c814_680.html' }], 'Title': u'Raumplanungsgesetz für den Kanton Graubünden', 'Abbreviation': u'KRG', 'Canton': u'GR', 'Lawstatus_Code': u'inForce', 'Lawstatus_Text': u'in Kraft', 'ResponsibleOffice_Name': u'Bundesamt für Verkehr BAV', 'ResponsibleOffice_OfficeAtWeb': u'https://www.gr-lex.gr.ch/frontend/versions/pdf_file_with_annex/2936?locale=de' }, { 'DocumentType': u'Law', 'TextAtWeb': [{ 'URL': u'http://www.admin.ch/ch/d/sr/c814_680.html' }], 'Title': u'Raumplanungsgesetz für den Kanton Graubünden2', 'Abbreviation': u'KRG', 'OfficialNumber': u'BR 801.100', 'Canton': u'GR', 'Lawstatus_Code': u'inForce', 'Lawstatus_Text': u'in Kraft', 'ResponsibleOffice_Name': u'Bundesamt für Verkehr BAV', 'ResponsibleOffice_OfficeAtWeb': u'https://www.gr-lex.gr.ch/frontend/versions/pdf_file_with_annex/2936?locale=de' }, { 'DocumentType': 'Law', 'TextAtWeb': [{ 'URL': u'http://www.admin.ch/ch/d/sr/c814_680.html' }], 'Title': 'Bundesgesetz über die Raumplanung', 'Abbreviation': 'RPG', 'OfficialNumber': 'SR 700', 'Canton': 'GR', 'Lawstatus_Code': 'inForce', 'Lawstatus_Text': 'in Kraft', 'ResponsibleOffice_Name': u'Bundesamt für Verkehr BAV', 'ResponsibleOffice_OfficeAtWeb': 'http://www.lexfind.ch/dtah/167348/2' }, { 'DocumentType': u'Law', 'TextAtWeb': [{ 'URL': u'http://www.admin.ch/ch/d/sr/c814_680.html' }], 'Title': u'Raumplanungsgesetz für den Kanton Graubünden', 'Abbreviation': u'KRG', 'OfficialNumber': u'BR 801.100', 'Canton': u'GR', 'Lawstatus_Code': u'inForce', 'Lawstatus_Text': u'in Kraft', 'ResponsibleOffice_Name': u'Bundesamt für Verkehr BAV', 'ResponsibleOffice_OfficeAtWeb': u'https://www.gr-lex.gr.ch/frontend/versions/pdf_file_with_annex/2936?locale=de' }] expected_result = [{ 'DocumentType': u'Law', 'TextAtWeb': [{ 'URL': u'http://www.admin.ch/ch/d/sr/c814_680.html' }], 'Title': u'Raumplanungsgesetz für den Kanton Graubünden', 'Abbreviation': u'KRG', 'OfficialNumber': u'BR 801.100', 'Canton': u'GR', 'Lawstatus_Code': u'inForce', 'Lawstatus_Text': u'in Kraft', 'ResponsibleOffice_Name': u'Bundesamt für Verkehr BAV', 'ResponsibleOffice_OfficeAtWeb': u'https://www.gr-lex.gr.ch/frontend/versions/pdf_file_with_annex/2936?locale=de' }, { 'DocumentType': u'Law', 'TextAtWeb': [{ 'URL': u'http://www.admin.ch/ch/d/sr/c814_680.html' }], 'Title': u'Raumplanungsgesetz für den Kanton Graubünden2', 'Abbreviation': u'KRG', 'OfficialNumber': u'BR 801.100', 'Canton': u'GR', 'Lawstatus_Code': u'inForce', 'Lawstatus_Text': u'in Kraft', 'ResponsibleOffice_Name': u'Bundesamt für Verkehr BAV', 'ResponsibleOffice_OfficeAtWeb': u'https://www.gr-lex.gr.ch/frontend/versions/pdf_file_with_annex/2936?locale=de' }, { 'DocumentType': 'Law', 'TextAtWeb': [{ 'URL': 'http://www.admin.ch/ch/d/sr/c814_01.html' }], 'Title': 'Raumplanungsverordnung für den Kanton Graubünden', 'Abbreviation': 'KRVO', 'OfficialNumber': 'BR 801.110', 'Canton': 'GR', 'Lawstatus_Code': 'inForce', 'Lawstatus_Text': 'in Kraft', 'ResponsibleOffice_Name': u'Bundesamt für Verkehr BAV', 'ResponsibleOffice_OfficeAtWeb': 'https://www.gr-lex.gr.ch/frontend/versions/pdf_file_with_annex/2934?locale=de' }, { 'DocumentType': 'Law', 'TextAtWeb': [{ 'URL': u'http://www.admin.ch/ch/d/sr/c814_680.html' }], 'Title': 'Bundesgesetz über die Raumplanung', 'Abbreviation': 'RPG', 'OfficialNumber': 'SR 700', 'Canton': 'GR', 'Lawstatus_Code': 'inForce', 'Lawstatus_Text': 'in Kraft', 'ResponsibleOffice_Name': u'Bundesamt für Verkehr BAV', 'ResponsibleOffice_OfficeAtWeb': 'http://www.lexfind.ch/dtah/167348/2' }, { 'DocumentType': u'Law', 'TextAtWeb': [{ 'URL': u'http://www.admin.ch/ch/d/sr/c814_680.html' }], 'Title': u'Raumplanungsgesetz für den Kanton Graubünden', 'Abbreviation': u'KRG', 'Canton': u'GR', 'Lawstatus_Code': u'inForce', 'Lawstatus_Text': u'in Kraft', 'ResponsibleOffice_Name': u'Bundesamt für Verkehr BAV', 'ResponsibleOffice_OfficeAtWeb': u'https://www.gr-lex.gr.ch/frontend/versions/pdf_file_with_annex/2936?locale=de' }] assert expected_result == renderer.sort_dict_list(test_law, renderer.sort_laws)
def test_get_sorted_legend(): renderer = Renderer(DummyRenderInfo()) test_legend_list = [{ 'TypeCode': u'StaoTyp2', 'Geom_Type': u'AreaShare', 'TypeCodelist': '', 'AreaShare': 11432, 'PartInPercent': 32.6, 'SymbolRef': u'http://localhost:6543/oereb/image/symbol/\ ContaminatedPublicTransportSites/1/StaoTyp2', 'Information': u'Belastet, untersuchungsbedürftig' }, { 'TypeCode': u'StaoTyp3', 'Geom_Type': u'LengthShare', 'TypeCodelist': '', 'LengthShare': 164, 'SymbolRef': u'http://localhost:6543/oereb/image/symbol/\ ContaminatedPublicTransportSites/1/StaoTyp3', 'Information': u'Belastet, überwachungsbedürftig' }, { 'TypeCode': u'StaoTyp1', 'Geom_Type': u'NrOfPoints', 'TypeCodelist': '', 'NrOfPoints': 2, 'SymbolRef': u'http://localhost:6543/oereb/image/symbol/\ ContaminatedPublicTransportSites/1/StaoTyp1', 'Information': u'Belastet, keine schädlichen oder lästigen Einwirkungen zu erwarten' }, { 'TypeCode': u'StaoTyp3', 'Geom_Type': u'LengthShare', 'TypeCodelist': '', 'LengthShare': 2000, 'SymbolRef': u'http://localhost:6543/oereb/image/symbol/\ ContaminatedPublicTransportSites/1/StaoTyp3', 'Information': u'Belastet, untersuchungsbedürftig' }, { 'TypeCode': u'StaoTyp2', 'Geom_Type': u'AreaShare', 'TypeCodelist': '', 'AreaShare': 114, 'PartInPercent': 32.6, 'SymbolRef': u'http://localhost:6543/oereb/image/symbol/\ ContaminatedPublicTransportSites/1/StaoTyp2', 'Information': u'Belastet, untersuchungsbedürftig' }] sorted_list = renderer.sort_dict_list(test_legend_list, renderer.sort_legend_elem) expected_result = [{ 'TypeCode': u'StaoTyp2', 'Geom_Type': u'AreaShare', 'TypeCodelist': '', 'AreaShare': 11432, 'PartInPercent': 32.6, 'SymbolRef': u'http://localhost:6543/oereb/image/symbol/\ ContaminatedPublicTransportSites/1/StaoTyp2', 'Information': u'Belastet, untersuchungsbedürftig' }, { 'TypeCode': u'StaoTyp2', 'Geom_Type': u'AreaShare', 'TypeCodelist': '', 'AreaShare': 114, 'PartInPercent': 32.6, 'SymbolRef': u'http://localhost:6543/oereb/image/symbol/\ ContaminatedPublicTransportSites/1/StaoTyp2', 'Information': u'Belastet, untersuchungsbedürftig' }, { 'TypeCode': u'StaoTyp3', 'Geom_Type': u'LengthShare', 'TypeCodelist': '', 'LengthShare': 2000, 'SymbolRef': u'http://localhost:6543/oereb/image/symbol/\ ContaminatedPublicTransportSites/1/StaoTyp3', 'Information': u'Belastet, untersuchungsbedürftig' }, { 'TypeCode': u'StaoTyp3', 'Geom_Type': u'LengthShare', 'TypeCodelist': '', 'LengthShare': 164, 'SymbolRef': u'http://localhost:6543/oereb/image/symbol/\ ContaminatedPublicTransportSites/1/StaoTyp3', 'Information': u'Belastet, überwachungsbedürftig' }, { 'TypeCode': u'StaoTyp1', 'Geom_Type': u'NrOfPoints', 'TypeCodelist': '', 'NrOfPoints': 2, 'SymbolRef': u'http://localhost:6543/oereb/image/symbol/\ ContaminatedPublicTransportSites/1/StaoTyp1', 'Information': u'Belastet, keine schädlichen oder lästigen Einwirkungen zu erwarten' }] assert sorted_list == expected_result