def test_get_remote_featurecataloge_baduuid(self, mp_remote_fc_notfound): """Test the owsutil.get_remote_featurecatalogue method with an inexistent feature catalogue uuid. Test whether a FeatureCatalogueNotFoundError is raised. Parameters ---------- mp_remote_fc_notfound : pytest.fixture Monkeypatch the call to get an inexistent remote featurecatalogue. """ with pytest.raises(FeatureCatalogueNotFoundError): owsutil.get_remote_featurecatalogue( 'https://www.dov.vlaanderen.be/geonetwork/srv/nl/csw', 'badfc000-0000-0000-0000-badfc00badfc')
def _init_fields(self): if self._fields is None: if SonderingSearch.__wfs_schema is None: SonderingSearch.__wfs_schema = self._get_schema() if SonderingSearch.__md_metadata is None: SonderingSearch.__md_metadata = self._get_remote_metadata() if SonderingSearch.__fc_featurecatalogue is None: csw_url = self._get_csw_base_url() fc_uuid = owsutil.get_featurecatalogue_uuid( SonderingSearch.__md_metadata) SonderingSearch.__fc_featurecatalogue = \ owsutil.get_remote_featurecatalogue(csw_url, fc_uuid) if SonderingSearch.__xsd_schemas is None: SonderingSearch.__xsd_schemas = \ self._get_remote_xsd_schemas() fields = self._build_fields(SonderingSearch.__wfs_schema, SonderingSearch.__fc_featurecatalogue, SonderingSearch.__xsd_schemas) for field in fields.values(): if field['name'] not in self._type.get_field_names( include_wfs_injected=True): self._type.fields.append( _WfsInjectedField(name=field['name'], datatype=field['type'])) self._fields = self._build_fields( SonderingSearch.__wfs_schema, SonderingSearch.__fc_featurecatalogue, SonderingSearch.__xsd_schemas)
def test_get_remote_featurecatalogue(self, mp_remote_fc): """Test the owsutil.get_remote_featurecatalogue method. Test whether the feature catalogue of the dov-pub:Boringen layer matches the format described in the docs. Parameters ---------- mp_remote_fc : pytest.fixture Monkeypatch the call to get the remote feature catalogue of the dov-pub:Boringen layer. """ fc = owsutil.get_remote_featurecatalogue( build_dov_url('geonetwork/srv/nl/csw'), 'c0cbd397-520f-4ee1-aca7-d70e271eeed6') assert type(fc) is dict assert 'definition' in fc assert type(fc['definition']) in (str, unicode) assert 'attributes' in fc assert type(fc['attributes']) is dict attrs = fc['attributes'] if len(attrs) > 0: for attr in attrs.values(): assert type(attr) is dict assert 'definition' in attr assert type(attr['definition']) in (str, unicode) assert 'values' in attr if attr['values'] is not None: assert type(attr['values']) is dict for v in attr['values'].keys(): assert type(v) in (str, unicode) assert type(attr['values'][v]) in (str, unicode) or \ attr['values'][v] is None assert len(attr['values'].keys()) == len( set(attr['values'].keys())) assert 'multiplicity' in attr mp = attr['multiplicity'] assert type(mp) is tuple assert len(mp) == 2 assert mp[0] in (0, 1) assert (type(mp[1]) is int and mp[1] > 0) or mp[1] == 'Inf'
def _init_fields(self): """Initialise the fields and their metadata available in this search class.""" if self._fields is None: if InformeleHydrogeologischeStratigrafieSearch.__wfs_schema is \ None: InformeleHydrogeologischeStratigrafieSearch.__wfs_schema = \ self._get_schema() if InformeleHydrogeologischeStratigrafieSearch.__md_metadata is \ None: InformeleHydrogeologischeStratigrafieSearch.__md_metadata = \ self._get_remote_metadata() if InformeleHydrogeologischeStratigrafieSearch.\ __fc_featurecatalogue is None: csw_url = self._get_csw_base_url() fc_uuid = owsutil.get_featurecatalogue_uuid( InformeleHydrogeologischeStratigrafieSearch.__md_metadata) InformeleHydrogeologischeStratigrafieSearch.\ __fc_featurecatalogue = \ owsutil.get_remote_featurecatalogue(csw_url, fc_uuid) if InformeleHydrogeologischeStratigrafieSearch.__xsd_schemas is \ None: InformeleHydrogeologischeStratigrafieSearch.__xsd_schemas = \ self._get_remote_xsd_schemas() fields = self._build_fields( InformeleHydrogeologischeStratigrafieSearch.__wfs_schema, InformeleHydrogeologischeStratigrafieSearch. __fc_featurecatalogue, InformeleHydrogeologischeStratigrafieSearch.__xsd_schemas) for field in fields.values(): if field['name'] not in self._type.get_field_names( include_wfs_injected=True): self._type.fields.append( _WfsInjectedField(name=field['name'], datatype=field['type'])) self._fields = self._build_fields( InformeleHydrogeologischeStratigrafieSearch.__wfs_schema, InformeleHydrogeologischeStratigrafieSearch. __fc_featurecatalogue, InformeleHydrogeologischeStratigrafieSearch.__xsd_schemas)
def _init_fields(self): """Initialise the fields and their metadata available in this search class.""" if self._fields is None: if GeotechnischeCoderingSearch.__wfs_schema is None: GeotechnischeCoderingSearch.__wfs_schema = \ self._get_schema() if GeotechnischeCoderingSearch.__md_metadata is None: GeotechnischeCoderingSearch.__md_metadata = \ self._get_remote_metadata() if GeotechnischeCoderingSearch.__fc_featurecatalogue \ is None: csw_url = self._get_csw_base_url() fc_uuid = owsutil.get_featurecatalogue_uuid( GeotechnischeCoderingSearch.__md_metadata) GeotechnischeCoderingSearch.__fc_featurecatalogue = \ owsutil.get_remote_featurecatalogue(csw_url, fc_uuid) if GeotechnischeCoderingSearch.__xsd_schemas is None: GeotechnischeCoderingSearch.__xsd_schemas = \ self._get_remote_xsd_schemas() fields = self._build_fields( GeotechnischeCoderingSearch.__wfs_schema, GeotechnischeCoderingSearch.__fc_featurecatalogue, GeotechnischeCoderingSearch.__xsd_schemas) for field in fields.values(): if field['name'] not in self._type.get_field_names( include_wfs_injected=True): self._type._fields.append({ 'name': field['name'], 'source': 'wfs', 'sourcefield': field['name'], 'type': field['type'], 'wfs_injected': True }) self._fields = self._build_fields( GeotechnischeCoderingSearch.__wfs_schema, GeotechnischeCoderingSearch.__fc_featurecatalogue, GeotechnischeCoderingSearch.__xsd_schemas)
def _init_fields(self): """Initialise the fields and their metadata available in this search class. Raises ------ NotImplementedError This is an abstract method that should be implemented in a subclass. """ if self._fields is None: if self._wfs_schema is None: self._wfs_schema = self._get_schema() if self._md_metadata is None: self._md_metadata = self._get_remote_metadata() if self._fc_featurecatalogue is None: csw_url = self._get_csw_base_url() fc_uuid = owsutil.get_featurecatalogue_uuid(self._md_metadata) self._fc_featurecatalogue = \ owsutil.get_remote_featurecatalogue(csw_url, fc_uuid) if self._xsd_schemas is None: self._xsd_schemas = self._get_remote_xsd_schemas() fields = self._build_fields(self._wfs_schema, self._fc_featurecatalogue, self._xsd_schemas) for field in fields.values(): if field['name'] not in self._type.get_field_names( include_wfs_injected=True): self._type.fields.append( _WfsInjectedField(name=field['name'], datatype=field['type'])) self._fields = self._build_fields(self._wfs_schema, self._fc_featurecatalogue, self._xsd_schemas)