def teardown(self): """Clean up after each test""" datastore_delete(TestMapActions.context, {'resource_id': self.resource['resource_id']}) package_delete(TestMapActions.context, {'id': self.dataset['id']}) tm_config.update({ 'tiledmap.geom_field': '_the_geom_webmercator', 'tiledmap.geom_field_4326': '_geom' })
def configure(self, config): plugin_config.update(config)
def setup_class(cls, mock_flash): """Prepare the test""" # We need datastore for these tests. if not tests.is_datastore_supported(): raise nose.SkipTest("Datastore not supported") # Setup a test app wsgiapp = middleware.make_app(config['global_conf'], **config) cls.app = paste.fixture.TestApp(wsgiapp) ctd.CreateTestData.create() cls.context = {'model': ckan.model, 'session': ckan.model.Session, 'user': ckan.model.User.get('testsysadmin').name} # Load plugins p.load('tiledmap') p.load('datastore') # Set windshaft host/port as these settings do not have a default. # TODO: Test that calls fail if not set tm_config.update({ 'tiledmap.windshaft.host': '127.0.0.1', 'tiledmap.windshaft.port': '4000' }) # Copy tiledmap settings cls.config = dict(tm_config.items()) # Setup a dummy datastore. cls.dataset = package_create(cls.context, {'name': 'map-test-dataset'}) cls.resource = datastore_create(cls.context, { 'resource': { 'package_id': cls.dataset['id'] }, 'fields': [ {'id': 'id', 'type': 'integer'}, {'id': 'latitude', 'type': 'numeric'}, {'id': 'longitude', 'type': 'numeric'}, {'id': 'some_field_1', 'type': 'text'}, {'id': 'some_field_2', 'type': 'text'} ], 'primary_key': 'id' }) # Add some data. We add 4 records such that: # - The first three records have 'some_field_1' set to 'hello' ; # - The third record does not have a geom ; # - The fourth record has a geom, but 'some_field_1' is set to something elese. datastore_upsert(cls.context, { 'resource_id': cls.resource['resource_id'], 'method': 'upsert', 'records': [{ 'id': '1', 'latitude': -15, 'longitude': -11, 'some_field_1': 'hello', 'some_field_2': 'world' }, { 'id': 2, 'latitude': 48, 'longitude': 23, 'some_field_1': 'hello', 'some_field_2': 'again' }, { 'id': 3, 'latitude': None, 'longitude': None, 'some_field_1': 'hello', 'some_field_2': 'hello' }, { 'id': 4, 'latitude': 80, 'longitude': 80, 'some_field_1': 'all your bases', 'some_field_2': 'are belong to us' }] }) # Create a tiledmap resource view. This process itself is fully tested in test_view_create.py. # This will also generate the geometry column - that part of the process is fully tested in test_actions data_dict = { 'description': u'', 'title': u'test', 'resource_id': cls.resource['resource_id'], 'plot_marker_color': u'#EE0000', 'enable_plot_map': u'True', 'overlapping_records_view': u'', 'longitude_field': u'longitude', 'heat_intensity': u'0.1', 'view_type': u'tiledmap', 'utf_grid_title': u'_id', 'plot_marker_line_color': u'#FFFFFF', 'latitude_field': u'latitude', 'enable_utf_grid': u'True', 'utf_grid_fields' : ['some_field_1', 'some_field_2'], 'grid_base_color': u'#F02323', 'enable_heat_map': u'True', 'enable_grid_map': u'True' } resource_view_create = p.toolkit.get_action('resource_view_create') cls.resource_view = resource_view_create(cls.context, data_dict) # Create a resource that does not have spatial fields cls.non_spatial_resource = datastore_create(cls.context, { 'resource': { 'package_id': cls.dataset['id'] }, 'fields': [ {'id': 'id', 'type': 'integer'}, {'id': 'some_field', 'type': 'text'} ], 'primary_key': 'id' })
def teardown(self): # Ensure all settings are reset to default. tm_config.update(TestTileFetching.config)