def test_dataset_api_update_with_no_extras(self): '''It should update a dataset from the API with no extras In that case the extras parameters are kept. ''' data = DatasetFactory.as_dict() data['extras'] = { 'integer': 42, 'float': 42.0, 'string': 'value', } with self.api_user(): response = self.post(url_for('api.datasets'), data) dataset = Dataset.objects.first() data = dataset.to_dict() del data['extras'] response = self.put(url_for('api.dataset', dataset=dataset), data) self.assert200(response) self.assertEqual(Dataset.objects.count(), 1) dataset = Dataset.objects.first() self.assertEqual(dataset.extras['integer'], 42) self.assertEqual(dataset.extras['float'], 42.0) self.assertEqual(dataset.extras['string'], 'value')
def test_dataset_api_fail_to_create_too_long_tags(self): '''Should fail creating a dataset with a tag long''' data = DatasetFactory.as_dict() data['tags'] = [unique_string(MAX_TAG_LENGTH + 1)] with self.api_user(): response = self.post(url_for('api.datasets'), data) self.assertStatus(response, 400)
def process(self, item): dataset = self.get_dataset(item.remote_id) for key, value in DatasetFactory.as_dict(visible=True).items(): setattr(dataset, key, value) if self.source.config.get('last_modified'): dataset.last_modified = self.source.config['last_modified'] return dataset
def test_dataset_api_fail_to_create_too_short_tags(self): '''It should fail to create a dataset from the API because the tag is too short''' data = DatasetFactory.as_dict() data['tags'] = [unique_string(MIN_TAG_LENGTH - 1)] with self.api_user(): response = self.post(url_for('api.datasets'), data) self.assertStatus(response, 400)
def test_dataset_api_create_with_legacy_frequency(self): '''It should create a dataset from the API with a legacy frequency''' self.login() for oldFreq, newFreq in LEGACY_FREQUENCIES.items(): data = DatasetFactory.as_dict() data['frequency'] = oldFreq response = self.post(url_for('api.datasets'), data) self.assert201(response) self.assertEqual(response.json['frequency'], newFreq)
def test_dataset_api_create_and_slugify_tags(self): '''It should create a dataset from the API and slugify the tags''' data = DatasetFactory.as_dict() data['tags'] = [' Aaa bBB $$ $$-µ '] with self.api_user(): response = self.post(url_for('api.datasets'), data) self.assert201(response) self.assertEqual(Dataset.objects.count(), 1) dataset = Dataset.objects.first() self.assertEqual(dataset.tags, ['aaa-bbb-u'])
def test_dataset_api_create_tags(self): '''It should create a dataset from the API with tags''' data = DatasetFactory.as_dict() data['tags'] = [unique_string(16) for _ in range(3)] with self.api_user(): response = self.post(url_for('api.datasets'), data) self.assert201(response) self.assertEqual(Dataset.objects.count(), 1) dataset = Dataset.objects.first() self.assertEqual(dataset.tags, sorted(data['tags']))
def test_dataset_api_create(self): '''It should create a dataset from the API''' data = DatasetFactory.as_dict() self.login() response = self.post(url_for('api.datasets'), data) self.assert201(response) self.assertEqual(Dataset.objects.count(), 1) dataset = Dataset.objects.first() self.assertEqual(dataset.owner, self.user) self.assertIsNone(dataset.organization)
def test_dataset_api_create_with_geom(self): '''It should create a dataset with resources from the API''' data = DatasetFactory.as_dict() data['spatial'] = {'geom': SAMPLE_GEOM} with self.api_user(): response = self.post(url_for('api.datasets'), data) self.assert201(response) self.assertEqual(Dataset.objects.count(), 1) dataset = Dataset.objects.first() self.assertEqual(dataset.spatial.geom, SAMPLE_GEOM)
def test_dataset_api_create_with_resources(self): '''It should create a dataset with resources from the API''' data = DatasetFactory.as_dict() data['resources'] = [ResourceFactory.as_dict() for _ in range(3)] with self.api_user(): response = self.post(url_for('api.datasets'), data) self.assert201(response) self.assertEqual(Dataset.objects.count(), 1) dataset = Dataset.objects.first() self.assertEqual(len(dataset.resources), 3)
def test_dataset_api_create_as_org_permissions(self): """It should create a dataset as organization from the API only if the current user is member. """ self.login() data = DatasetFactory.as_dict() org = OrganizationFactory() data['organization'] = str(org.id) response = self.post(url_for('api.datasets'), data) self.assert400(response) self.assertEqual(Dataset.objects.count(), 0)
def test_dataset_api_create_with_resources_dict(self): """Create a dataset w/ resources in a dict instead of list, should fail """ data = DatasetFactory.as_dict() data['resources'] = { k: v for k, v in enumerate( [ResourceFactory.as_dict() for _ in range(3)]) } with self.api_user(): response = self.post(url_for('api.datasets'), data) self.assert400(response)
def test_dataset_api_create_as_org(self): '''It should create a dataset as organization from the API''' self.login() data = DatasetFactory.as_dict() member = Member(user=self.user, role='editor') org = OrganizationFactory(members=[member]) data['organization'] = str(org.id) response = self.post(url_for('api.datasets'), data) self.assert201(response) self.assertEqual(Dataset.objects.count(), 1) dataset = Dataset.objects.first() self.assertEqual(dataset.organization, org) self.assertIsNone(dataset.owner)
def test_dataset_api_create_with_extras(self): '''It should create a dataset with extras from the API''' data = DatasetFactory.as_dict() data['extras'] = { 'integer': 42, 'float': 42.0, 'string': 'value', } with self.api_user(): response = self.post(url_for('api.datasets'), data) self.assert201(response) self.assertEqual(Dataset.objects.count(), 1) dataset = Dataset.objects.first() self.assertEqual(dataset.extras['integer'], 42) self.assertEqual(dataset.extras['float'], 42.0) self.assertEqual(dataset.extras['string'], 'value')
def process(self, item): dataset = self.get_dataset(item.remote_id) for key, value in DatasetFactory.as_dict(visible=True).items(): setattr(dataset, key, value) return dataset