def test_delete_anonymize_datasets(self): user = LocalcosmosUser.objects.create_user(self.test_username, self.test_email, self.test_password) test_data = { 'dataset': { 'reported_values': { 'client_id': 'test_client', 'client_platform': 'browser', }, 'observation_form': { 'taxonomic_reference': 'test_taxonomic_reference', 'geographic_reference': 'test_geographic_reference', 'temporal_reference': 'test_temporal_reference', } } } dataset = Dataset( data=test_data, app_uuid=uuid.uuid4(), user=user, client_id='test_client', created_at=timezone.now(), ) dataset.save() user.delete() dataset = Dataset.objects.get(pk=dataset.pk) self.assertEqual(dataset.user, None)
def test_user(self): user = self.create_user() dataset = Dataset( app_uuid=self.app.uuid, data=TEST_DATASET_DATA_WITH_ALL_REFERENCE_FIELDS, created_at=timezone.now(), user=user, ) dataset.save() image = SimpleUploadedFile(name='test_image.jpg', content=open(TEST_IMAGE_PATH, 'rb').read(), content_type='image/jpeg') dataset_image = DatasetImages( dataset=dataset, field_uuid=uuid.uuid4(), image=image, ) dataset_image.save() self.assertEqual(dataset_image.user, user)
def test_use_existing_client_id(self): # emulate django_road and assign a user during the first dataset save(), # but the dataset contains an unknown client_id AND the platform is the browser user = self.create_user() existing_client_id = 'existing_client_id' client_link = UserClients( user=user, client_id=existing_client_id, platform='browser', ) client_link.save() dataset = Dataset( app_uuid=self.app.uuid, data=TEST_DATASET_DATA_WITH_ALL_REFERENCE_FIELDS, created_at=timezone.now(), user=user, ) dataset.save() dataset = Dataset.objects.get(pk=dataset.pk) self.assertEqual(dataset.client_id, existing_client_id) self.assertEqual( dataset.data['dataset']['reported_values']['client_id'], existing_client_id)
def create_dataset(self): dataset = Dataset( app_uuid=self.app.uuid, data=TEST_DATASET_DATA_WITH_ALL_REFERENCE_FIELDS, created_at=timezone.now(), ) dataset.save() return dataset
def create_full_dataset(self): dataset = Dataset( app_uuid=self.app.uuid, data=TEST_DATASET_FULL_GENERIC_FORM, created_at=timezone.now(), ) dataset.save() return dataset
def create_notaxon_dataset(self): dataset_data = TEST_DATASET_DATA_WITH_ALL_REFERENCE_FIELDS del dataset_data['dataset']['reported_values'][ '7e5c9390-61cf-4cb5-8b0f-9086b2f387ce'] dataset = Dataset( app_uuid=self.app.uuid, data=dataset_data, created_at=timezone.now(), ) dataset.save() return dataset
def test_str(self): # test with and without taxon_latname dataset = self.create_dataset() self.assertEqual(str(dataset), 'Picea abies') test_data = copy.deepcopy(TEST_DATA_2) # delete the taxon taxon_field_uuid = test_data['dataset']['observation_form'][ 'taxonomic_reference'] del test_data['dataset']['reported_values'][taxon_field_uuid] dataset = Dataset( app_uuid=self.app.uuid, data=test_data, created_at=timezone.now(), ) dataset.save() self.assertEqual(str(dataset), str(_('Unidentified')))
def test_nearby(self): dataset = self.create_dataset() user = self.create_user() dataset_2 = Dataset( app_uuid=self.app.uuid, data=TEST_DATASET_DATA_WITH_ALL_REFERENCE_FIELDS, created_at=timezone.now(), user=user, ) dataset_2.save() dataset = Dataset.objects.get(pk=dataset.pk) nearby = dataset.nearby() self.assertEqual(len(nearby), 1) nearby_dataset = nearby[0] self.assertEqual(nearby_dataset.pk, dataset_2.pk) self.assertEqual(nearby_dataset.user, user)
def test_validate_requirements(self): dataset = Dataset( app_uuid=self.app.uuid, data=None, ) with self.assertRaises(ValueError): dataset.validate_requirements() test_data = copy.deepcopy(TEST_DATA_2) del test_data['dataset']['reported_values']['client_id'] dataset.data = test_data with self.assertRaises(ValueError): dataset.validate_requirements() test_data['dataset']['reported_values']['client_id'] = None dataset.data = test_data with self.assertRaises(ValueError): dataset.validate_requirements() test_data['dataset']['reported_values']['client_id'] = '' dataset.data = test_data with self.assertRaises(ValueError): dataset.validate_requirements()