def test_sum_points(geometry_record, test, method, geometry_types): theme = ThemeRecord('code', dict(), 100) real_estate_record = RealEstateRecord( 'test_type', 'BL', 'Nusshof', 1, 100, loads('POLYGON((0 0, 0 10, 10 10, 10 0, 0 0))')) geometry_record.calculate(real_estate_record, 0.1, 0.1, 'm', 'm2', geometry_types) plr_record = PlrRecord(theme, LegendEntryRecord(ImageRecord('1'.encode('utf-8')), {'en': 'Content'}, 'CodeA', None, theme, view_service_id=1), law_status, date.today() + timedelta(days=0), date.today() + timedelta(days=2), OfficeRecord({'en': 'Office'}), ImageRecord('1'.encode('utf-8')), ViewServiceRecord({'de': 'http://my.wms.com'}, 1, 1.0, 'de', 2056, None, None), [geometry_record], documents=[]) assert getattr(plr_record, method)() == test
def test_get_egrid_response(pyramid_test_config): del pyramid_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({'de': 'test'}, 1, 1.0, 'de', 2056, None, None) record = RealEstateRecord('Liegenschaft', 'BL', 'test', 1, 100, MultiPolygon([Polygon([(0, 0), (1, 1), (1, 0)])]), view_service, number='number', identdn='identdn', egrid='egrid') params = Parameter('json') response = PlrWebservice(request).__get_egrid_response__([record], params).json assert response == { 'GetEGRIDResponse': [{ 'egrid': 'egrid', 'number': 'number', 'identDN': 'identdn', 'type': 'Liegenschaft' }] }
def real_estate(): yield RealEstateRecord( u'test', u'BL', u'Laufen', 2770, 1000, MultiPolygon([Polygon([(0, 0), (4, 4), (4, 0)])]), ViewServiceRecord( {'de': 'test_link'}, 1, 1.0, 'de', 2056, None, None, ))
def test_init(): record = RealEstateRecord('test_type', 'BL', 'Nusshof', 1, 100, loads('POLYGON((0 0, 0 1, 1 1, 1 0, 0 0))')) assert isinstance(record.type, str) assert isinstance(record.canton, str) assert isinstance(record.municipality, str) assert isinstance(record.fosnr, int) assert isinstance(record.land_registry_area, int) assert isinstance(record.limit, Polygon) assert record.metadata_of_geographical_base_data is None assert record.number is None assert record.identdn is None assert record.egrid is None assert record.subunit_of_land_register is None assert record.areas_ratio == 0.01
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_calculate(pyramid_oereb_test_config, geometry, real_estate_geometry, length_limit, area_limit, length_share, area_share, nr_of_points, test, geometry_types): law_status_record = LawStatusRecord("AenderungMitVorwirkung", {u'de': u'BlaBla'}) geometry_record = GeometryRecord(law_status_record, datetime.date(1985, 8, 29), None, geometry, 'test') real_estate = RealEstateRecord('Liegenschaft', 'BL', 'Aesch BL', 2761, round(real_estate_geometry.area), real_estate_geometry) geometry_record.calculate(real_estate, length_limit, area_limit, 'm', 'm2', geometry_types) assert geometry_record._test_passed == test assert geometry_record._length_share == length_share assert geometry_record._area_share == area_share assert geometry_record._nr_of_points == nr_of_points
def create_dummy_extract(): real_estate = RealEstateRecord( u'test', u'BL', u'Laufen', 2770, 1000, MultiPolygon(), ViewServiceRecord({'de': 'test_link'}, 1, 1.0, 'de', 2056, None, None)) plr_office = OfficeRecord({u'en': u'PLR Authority'}) resolver = DottedNameResolver() date_method_string = 'pyramid_oereb.contrib.data_sources.standard.hook_methods.get_surveying_data_update_date' # noqa: E501 date_method = resolver.resolve(date_method_string) update_date_os = date_method(real_estate) record = ExtractRecord( real_estate, LogoRecord( 'ch', { 'de': 'iVBORw0KGgoAAAANSUhEUgAAAB4AAAAPCAIAAAB82OjLAAAAL0lEQVQ4jWNMTd3EQ \ BvAwsDAkFPnS3VzpzRtZqK6oXAwavSo0aNGjwCjGWlX8gEAFAQGFyQKGL4AAAAASUVORK5CYII=' }), LogoRecord( 'ch.plr', { 'de': 'iVBORw0KGgoAAAANSUhEUgAAAB4AAAAPCAIAAAB82OjLAAAAL0lEQVQ4jWNMTd3EQ \ BvAwsDAkFPnS3VzpzRtZqK6oXAwavSo0aNGjwCjGWlX8gEAFAQGFyQKGL4AAAAASUVORK5CYII=' }), LogoRecord( 'ne', { 'de': 'iVBORw0KGgoAAAANSUhEUgAAAB4AAAAPCAIAAAB82OjLAAAAL0lEQVQ4jWNMTd3EQ \ BvAwsDAkFPnS3VzpzRtZqK6oXAwavSo0aNGjwCjGWlX8gEAFAQGFyQKGL4AAAAASUVORK5CYII=' }), LogoRecord( 'ch.1234', { 'de': 'iVBORw0KGgoAAAANSUhEUgAAAB4AAAAPCAIAAAB82OjLAAAAL0lEQVQ4jWNMTd3EQ \ BvAwsDAkFPnS3VzpzRtZqK6oXAwavSo0aNGjwCjGWlX8gEAFAQGFyQKGL4AAAAASUVORK5CYII=' }), plr_office, update_date_os) return record
def _get_test_extract(config, glossary): 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'}, office_at_web={ 'de': 'https://www.bav.admin.ch/bav/de/home.html' }) resolver = DottedNameResolver() date_method_string = (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, config.get_oereb_logo(), config.get_conferderation_logo(), config.get_canton_logo(), config.get_municipality_logo(1234), office_record, update_date_os, disclaimers=[ DisclaimerRecord({'de': u'Haftungsausschluss'}, {'de': u'Test'}) ], glossaries=glossary, general_information=config.get_general_information() ) # 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 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_mandatory_fields(): with pytest.raises(TypeError): RealEstateRecord()
def test_get_surveying_data_date(): real_estate = RealEstateRecord('test_type', 'BL', 'Nusshof', 1, 100, loads('POLYGON((0 0, 0 1, 1 1, 1 0, 0 0))')) update_date_os = get_surveying_data_update_date(real_estate) assert isinstance(update_date_os, datetime.datetime)