def test_get_bbox_with_buffer(): initial_buffer = Config._config.get('print').get('buffer') initial_basic_map_size = Config._config.get('print').get('basic_map_size') # Buffer 123.25, landscape feature in a landscape map. # Buffer 123.25 is quarter of 493, so the final view is 50% margin, 50% feature. Config._config['print']['basic_map_size'] = [493, 280] Config._config['print']['buffer'] = 123.25 geometry = box(0, 1000, 493, 1100) # 493m width, 100m height # Should add buffer (right and left) then adapt height to fit the map size print_bbox = ViewServiceRecord.get_bbox(geometry) assert get_width_from_bbox(print_bbox) == 986 assert get_height_from_bbox(print_bbox) == 560 # Buffer 70, portrait feature in a landscape map. # Buffer 70 is quarter of 280, so the final view is 50% margin, 50% feature. Config._config['print']['buffer'] = 70 geometry = box(0, 1000, 100, 1280) # 100m width, 280m height # Should add buffer (top and bottom) then adapt width to fit the map size print_bbox = ViewServiceRecord.get_bbox(geometry) assert get_width_from_bbox(print_bbox) == 986 assert get_height_from_bbox(print_bbox) == 560 # Reset config for further tests. Config._config['print']['buffer'] = initial_buffer Config._config['print']['basic_map_size'] = initial_basic_map_size
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)] }
def test_get_bbox_without_buffer(): initial_buffer = Config._config.get('print').get('buffer') initial_basic_map_size = Config._config.get('print').get('basic_map_size') # No buffer, landscape feature in a landscape map. Config._config['print']['buffer'] = 0 Config._config['print']['basic_map_size'] = [493, 280] geometry = box(0, 1000, 493, 1100) # 493m width, 100m height # Should adapt height to fit the map size print_bbox = ViewServiceRecord.get_bbox(geometry) assert get_width_from_bbox(print_bbox) == 493 assert get_height_from_bbox(print_bbox) == 280 # No buffer, portrait feature in a landscape map. geometry = box(0, 1000, 100, 1280) # 100m width, 280m height # Should adapt width to fit the map size print_bbox = ViewServiceRecord.get_bbox(geometry) assert get_width_from_bbox(print_bbox) == 493 assert get_height_from_bbox(print_bbox) == 280 # No buffer, portrait feature in a portrait map. Config._config['print']['basic_map_size'] = [280, 493] geometry = box(0, 1000, 100, 1493) # 100m width, 493m height # Should adapt width to fit the map size print_bbox = ViewServiceRecord.get_bbox(geometry) assert get_width_from_bbox(print_bbox) == 280 assert get_height_from_bbox(print_bbox) == 493 # Reset config for further tests. Config._config['print']['buffer'] = initial_buffer Config._config['print']['basic_map_size'] = initial_basic_map_size
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
def test_invalid_layer_layer_opacity(): with pytest.raises(AttributeError): ViewServiceRecord('http://example.com', 1, 2.0) with pytest.raises(AttributeError): ViewServiceRecord('http://example.com', 1, -1.1) with pytest.warns(UserWarning, match='Type of "layer_opacity" should be "float"'): ViewServiceRecord('http://example.com', 1, 1)
def test_invalid_layer_index_arguments(): with pytest.raises(AttributeError): ViewServiceRecord('http://example.com', -1001, 1) with pytest.raises(AttributeError): ViewServiceRecord('http://example.com', 1001, 1) with pytest.warns(UserWarning, match='Type of "layer_index" should be "int"'): ViewServiceRecord('http://example.com', 1.0, 1)
def set_highlight_url(self, sld_url): configured_params = Config.get_real_estate_config().get( 'visualisation').get('url_params') additional_url_params = {} for param in configured_params: additional_url_params.update({param: getattr(self, param)}) updated_sld_url = add_url_params(sld_url, additional_url_params) self.highlight = ViewServiceRecord( add_url_params(self.plan_for_land_register.reference_wms, {'sld': updated_sld_url}), '') self.highlight.download_wms_content()
def read(self, nb_ident=None, number=None, egrid=None, geometry=None): """ The central read accessor method to get all desired records from configured source. .. note:: If you subclass this class your implementation needs to offer this method in the same signature. Means the parameters must be the same and the return must be a list of :ref:`api-pyramid_oereb-lib-records-real_estate-realestaterecord`. Otherwise the API like way the server works would be broken. Args: nb_ident (int or None): The identification number of the desired real estate. This parameter is directly related to the number parameter and both must be set! Combination will deliver only one result or crashes. number (str or None): The number of parcel or also known real estate. This parameter is directly related to the nb_ident parameter and both must be set! Combination will deliver only one result or crashes. (str or None): The unique identifier of the desired real estate. This will deliver only one result or crashes. geometry (str): A geometry as WKT string which is used to obtain intersected real estates. This may deliver several results. Returns: list of pyramid_oereb.lib.records.real_estate.RealEstateRecord: The list of all found records filtered by the passed criteria. """ plan_for_land_register_config = Config.get_plan_for_land_register_config( ) real_estate_view_service = ViewServiceRecord( plan_for_land_register_config.get('reference_wms'), plan_for_land_register_config.get('layer_index'), plan_for_land_register_config.get('layer_opacity')) plan_for_land_register_main_page_config = Config.get_plan_for_land_register_main_page_config( ) real_estate_main_page_view_service = ViewServiceRecord( plan_for_land_register_main_page_config.get('reference_wms'), plan_for_land_register_main_page_config.get('layer_index'), plan_for_land_register_main_page_config.get('layer_opacity')) self._source_.read(nb_ident=nb_ident, number=number, egrid=egrid, geometry=geometry) for r in self._source_.records: if isinstance(r, RealEstateRecord): r.set_view_service(real_estate_view_service) r.set_main_page_view_service( real_estate_main_page_view_service) return self._source_.records
def test_get_bbox_from_url(): with_bbox = 'https://host/?&SRS=EPSG:2056&BBOX=2475000,1065000,2850000,1300000&' \ 'WIDTH=493&HEIGHT=280&FORMAT=image/png' p1, p2 = ViewServiceRecord.get_bbox_from_url(with_bbox) assert isinstance(p1, Point) assert p1.x == 2475000.0 assert p1.y == 1065000.0 assert isinstance(p2, Point) assert p2.x == 2850000.0 assert p2.y == 1300000.0 no_bbox = 'https://host/?&SRS=EPSG:2056WIDTH=493&HEIGHT=280&FORMAT=image/png' p3, p4 = ViewServiceRecord.get_bbox_from_url(no_bbox) assert p3 is None assert p4 is None
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)] }
def create_dummy_extract(): date = datetime.datetime.now() real_estate = RealEstateRecord( u'test', u'BL', u'Laufen', 2770, 1000, MultiPolygon(), ViewServiceRecord('test_link', 1, 1.0, {'de': 'test_legend'})) plr_office = OfficeRecord({u'en': u'PLR Authority'}) 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', {u'de': u'TEST TEXT'}) datasources = [DatasourceRecord(theme, date, plr_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) record = ExtractRecord(real_estate, ImageRecord('100'.encode('utf-8')), ImageRecord('100'.encode('utf-8')), ImageRecord('100'.encode('utf-8')), ImageRecord('100'.encode('utf-8')), plr_office, base_data, embeddable) return record
def test_legend_at_web_no_language(): # Requests italian, but only german is available -> best effort: deliver german instead parameters = Parameter('reduced', 'xml', False, False, 'BL0200002829', '1000', 'CH775979211712', 'it') renderer = Renderer(None) legend_url = """ http://example.com? SERVICE=WMS& REQUEST=GetLegendGraphic& FORMAT=image/png& SRS=epsg:2056 """.replace(" ", "").replace('\n', '') map = ViewServiceRecord(reference_wms='', legend_at_web={'de': legend_url}, layer_index=0, layer_opacity=1.0) content = template.render(**{ 'params': parameters, 'localized': renderer.get_localized_text, 'map': map }).decode('utf-8').split('\n') assert len(content) == 6 assert content[2] == """ <data:LegendAtWeb> http%3A%2F%2Fexample.com%3F SERVICE%3DWMS%26 REQUEST%3DGetLegendGraphic%26 FORMAT%3Dimage%2Fpng%26 SRS%3Depsg%3A2056 </data:LegendAtWeb> """.replace(" ", "").replace('\n', '')
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, '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' }] }
def test_empty(): map = ViewServiceRecord(reference_wms='', layer_index=0, layer_opacity=1.0) content = template.render(**{'map': map}).decode('utf-8').split('\n') assert content[0] == '' # empty filler line assert content[1] == '<data:layerIndex>0</data:layerIndex>' assert content[2] == '<data:layerOpacity>1.0</data:layerOpacity>' assert content[3] == '' # empty filler line assert len(content) == 4
def test_init_with_relation(): legend_records = [LegendEntryRecord( ImageRecord('100'.encode('utf-8')), {'en': 'test'}, 'test_code', 'test', ThemeRecord('test', {'de': 'Test'}))] record = ViewServiceRecord('http://www.test.url.ch', 'http://www.test.url.ch', legend_records) assert isinstance(record.reference_wms, str) assert isinstance(record.legend_at_web, str) assert isinstance(record.legends, list)
def test_reference_wms(): map = ViewServiceRecord(reference_wms='http://example.com', layer_index=0, layer_opacity=1.0) content = template.render(**{'map': map}).decode('utf-8').split('\n') assert content[ 1] == '<data:ReferenceWMS>http%3A%2F%2Fexample.com</data:ReferenceWMS>' assert len(content) == 5
def test_init(): record = ViewServiceRecord('http://www.test.url.ch', 1, 1.0, 'http://www.test.url.ch', None) assert isinstance(record.reference_wms, str) assert isinstance(record.layer_index, int) assert isinstance(record.layer_opacity, float) assert isinstance(record.legend_at_web, str) assert isinstance(record.legends, list)
def test_view_service_correct_init_ns(): with_bbox = 'https://host/?&SRS=EPSG:2056&BBOX=2475000,1065000,2850000,1300000&' \ 'WIDTH=493&HEIGHT=280&FORMAT=image/png' test_view_service = ViewServiceRecord(with_bbox, 1, 1.0, {'de': 'http://www.test.url.ch'}, None) assert isinstance(test_view_service.min_NS95, Point) assert test_view_service.min_NS95.x == 2475000.0 assert test_view_service.min_NS95.y == 1065000.0 assert isinstance(test_view_service.max_NS95, Point) assert test_view_service.max_NS95.x == 2850000.0 assert test_view_service.max_NS95.y == 1300000.0 no_bbox = 'https://host/?&SRS=EPSG:2056WIDTH=493&HEIGHT=280&FORMAT=image/png' test_view_service_no_bbox = ViewServiceRecord( no_bbox, 1, 1.0, {'de': 'http://www.test.url.ch'}, None) assert test_view_service_no_bbox.min_NS95 is None assert test_view_service_no_bbox.max_NS95 is None
def get_test_extract(): date = datetime.datetime.now() with pyramid_oereb_test_config(): view_service = ViewServiceRecord(u'http://geowms.bl.ch', 1, 1.0, 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=[GlossaryRecord({'de': u'Glossar'}, {'de': u'Test'})], 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
def create_dummy_plr(): office = OfficeRecord({'en': 'Office'}) view_service = ViewServiceRecord('http://my.wms.com', 1, 1.0) law_status = LawStatusRecord.from_config(u'inForce') geometry = GeometryRecord(law_status, datetime.date.today(), Point(1, 1)) record = PlrRecord(ThemeRecord('code', dict()), {'en': 'Content'}, law_status, datetime.date(1985, 8, 29), office, ImageRecord('1'.encode('utf-8')), view_service, [geometry]) return record
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') }
def set_highlight_url(self, sld_url): """ Set the highlight of the real estate. Args: sld_url (str): The URL which provides the sld to style and filter the highlight of the real estate. """ configured_params = Config.get_real_estate_config().get( 'visualisation').get('url_params') additional_url_params = {} for param in configured_params: additional_url_params.update({param: getattr(self, param)}) updated_sld_url = add_url_params(sld_url, additional_url_params) self.highlight = ViewServiceRecord( add_url_params(self.plan_for_land_register.reference_wms, {'sld': updated_sld_url}), self.plan_for_land_register.layer_index, self.plan_for_land_register.layer_opacity, legend_at_web={}) self.highlight.download_wms_content()
def test_init(law_status): office = OfficeRecord({'en': 'Office'}) view_service = ViewServiceRecord('http://my.wms.com') geometry = GeometryRecord(law_status, datetime.date.today(), Point(1, 1)) record = PlrRecord( ThemeRecord('code', dict()), {'en': 'Content'}, law_status, datetime.date(1985, 8, 29), office, ImageRecord('1'.encode('utf-8')), view_service, [geometry]) assert record.information == {'en': 'Content'} assert record.sub_theme is None assert isinstance(record.geometries, list) assert isinstance(record.responsible_office, OfficeRecord) assert isinstance(record.theme, ThemeRecord) assert isinstance(record.symbol, ImageRecord)
def test_check_min_max_attributes(): min_val = Point(1, 1) max_val = Point(2, 2) # test None values, expect no error ViewServiceRecord.check_min_max_attributes(None, 'test1', None, 'test2') # combinations of value + None with pytest.raises(AttributeError): ViewServiceRecord.check_min_max_attributes(min_val, 'test1', None, 'test2') with pytest.raises(AttributeError): ViewServiceRecord.check_min_max_attributes(None, 'test1', min_val, 'test2') # type error with pytest.raises(AttributeError): ViewServiceRecord.check_min_max_attributes(1, 'test1', 2, 'test2') # inverted values with pytest.raises(AttributeError): ViewServiceRecord.check_min_max_attributes(max_val, 'test1', min_val, 'test2')
def test_legend_at_web(): parameters = Parameter('reduced', 'xml', False, False, 'BL0200002829', '1000', 'CH775979211712', 'de') renderer = Renderer(None) map = ViewServiceRecord(reference_wms='', legend_at_web={'de': 'http://example-legend.com'}, layer_index=0, layer_opacity=1.0) content = template.render(**{ 'params': parameters, 'localized': renderer.get_localized_text, 'map': map }).decode('utf-8').split('\n') assert len(content) == 6 assert content[ 2] == '<data:LegendAtWeb>http%3A%2F%2Fexample-legend.com</data:LegendAtWeb>'
def test_reference_wms(): map = ViewServiceRecord( reference_wms= 'http://example.com?SERVICE=WMS&REQUEST=GetMap&FORMAT=image/png&SRS=epsg:2056', layer_index=0, layer_opacity=1.0) content = template.render(**{'map': map}).decode('utf-8').split('\n') assert content[1] == """ <data:ReferenceWMS> http%3A%2F%2Fexample.com%3F SERVICE%3DWMS%26 REQUEST%3DGetMap%26 FORMAT%3Dimage%2Fpng%26 SRS%3Depsg%3A2056 </data:ReferenceWMS> """.replace(" ", "").replace('\n', '') assert len(content) == 5
def test_legend_at_web_no_language(): # Requests italian, but only german is available -> best effort: deliver german instead parameters = Parameter('reduced', 'xml', False, False, 'BL0200002829', '1000', 'CH775979211712', 'it') renderer = Renderer(None) map = ViewServiceRecord(reference_wms='', legend_at_web={'de': 'http://example-legend.com'}, layer_index=0, layer_opacity=1.0) content = template.render(**{ 'params': parameters, 'localized': renderer.get_localized_text, 'map': map }).decode('utf-8').split('\n') assert len(content) == 6 assert content[ 2] == '<data:LegendAtWeb>http%3A%2F%2Fexample-legend.com</data:LegendAtWeb>'
def test_init_with_relation(): legend_records = [ LegendEntryRecord(ImageRecord('100'.encode('utf-8')), {'en': 'test'}, 'test_code', 'test', ThemeRecord('test', {'de': 'Test'}), view_service_id=1) ] record = ViewServiceRecord('http://www.test.url.ch', 1, 1.0, {'de': 'http://www.test.url.ch'}, legend_records) assert isinstance(record.reference_wms, str) assert isinstance(record.layer_index, int) assert isinstance(record.layer_opacity, float) assert isinstance(record.legend_at_web, dict) for legend in record.legend_at_web: assert isinstance(legend, str) assert isinstance(record.legends, list)
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
def test_init(): date = datetime.datetime.now() real_estate = RealEstateRecord( u'test', u'BL', u'Laufen', 2770, 1000, MultiPolygon(), ViewServiceRecord('test_link', 1, 1.0, 'test_legend')) plr_office = OfficeRecord({u'en': u'PLR Authority'}) 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', {u'de': u'TEST TEXT'}) datasources = [DatasourceRecord(theme, date, plr_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) record = ExtractRecord(real_estate, ImageRecord('100'.encode('utf-8')), ImageRecord('100'.encode('utf-8')), ImageRecord('100'.encode('utf-8')), ImageRecord('100'.encode('utf-8')), plr_office, base_data, embeddable) assert isinstance(record.extract_identifier, str) assert isinstance(record.real_estate, RealEstateRecord) assert isinstance(record.not_concerned_theme, list) assert isinstance(record.concerned_theme, list) assert isinstance(record.theme_without_data, list) assert isinstance(record.creation_date, datetime.date) assert isinstance(record.logo_plr_cadastre, ImageRecord) assert isinstance(record.federal_logo, ImageRecord) assert isinstance(record.cantonal_logo, ImageRecord) assert isinstance(record.municipality_logo, ImageRecord) assert isinstance(record.exclusions_of_liability, list) assert isinstance(record.glossaries, list) assert isinstance(record.plr_cadastre_authority, OfficeRecord) assert isinstance(record.base_data, dict) assert isinstance(record.embeddable, EmbeddableRecord)