def test_recipient_user_can_accept_transfer(self): owner = UserFactory() recipient = UserFactory() subject = VisibleDatasetFactory(owner=owner) transfer = TransferFactory(owner=owner, recipient=recipient, subject=subject) owner.reload() # Needs updated metrics assert owner.metrics['datasets'] == 1 recipient.reload() # Needs updated metrics assert recipient.metrics['datasets'] == 0 login_user(recipient) transfer = accept_transfer(transfer) assert transfer.status == 'accepted' subject.reload() assert subject.owner == recipient recipient.reload() assert recipient.metrics['datasets'] == 1 owner.reload() assert owner.metrics['datasets'] == 0
def test_reuse_metrics(self): dataset = VisibleDatasetFactory() reuse = VisibleReuseFactory() issue = IssueFactory(subject=reuse) DiscussionFactory(subject=reuse) reuse.count_datasets() reuse.count_issues() reuse.count_discussions() assert reuse.get_metrics()['datasets'] == 1 assert reuse.get_metrics()['issues'] == 1 assert reuse.get_metrics()['discussions'] == 1 with assert_emit(Reuse.on_update): reuse.datasets.append(dataset) reuse.save() reuse.count_datasets() assert reuse.get_metrics()['datasets'] == 2 dataset.count_reuses() assert dataset.get_metrics()['reuses'] == 1 with assert_emit(Reuse.on_update): reuse.datasets.remove(dataset) reuse.save() dataset_tasks.update_datasets_reuses_metrics() dataset.reload() assert dataset.get_metrics()['reuses'] == 0
def test_org_admin_can_accept_transfer(self): owner = UserFactory() admin = UserFactory() org = OrganizationFactory(members=[Member(user=admin, role='admin')]) subject = VisibleDatasetFactory(owner=owner) transfer = TransferFactory(owner=owner, recipient=org, subject=subject) owner.reload() # Needs updated metrics assert owner.metrics['datasets'] == 1 org.reload() # Needs updated metrics assert org.metrics['datasets'] == 0 admin.reload() # Needs updated metrics assert admin.metrics['datasets'] == 0 login_user(admin) transfer = accept_transfer(transfer) assert transfer.status == 'accepted' subject.reload() assert subject.organization == org assert subject.owner is None org.reload() assert org.metrics['datasets'] == 1 admin.reload() assert admin.metrics['datasets'] == 0 owner.reload() assert owner.metrics['datasets'] == 0
def test_recipient_user_can_accept_transfer(self): owner = UserFactory() recipient = UserFactory() subject = VisibleDatasetFactory(owner=owner) transfer = TransferFactory(owner=owner, recipient=recipient, subject=subject) owner.reload() # Needs updated metrics assert owner.metrics['datasets'] == 1 recipient.reload() # Needs updated metrics assert recipient.metrics['datasets'] == 0 login_user(recipient) transfer = accept_transfer(transfer) assert transfer.status == 'accepted' subject.reload() assert subject.owner == recipient recipient.reload() assert recipient.metrics['datasets'] == 1 owner.reload() assert owner.metrics['datasets'] == 0
def test_org_admin_can_accept_transfer(self): owner = UserFactory() admin = UserFactory() org = OrganizationFactory(members=[Member(user=admin, role='admin')]) subject = VisibleDatasetFactory(owner=owner) transfer = TransferFactory(owner=owner, recipient=org, subject=subject) owner.reload() # Needs updated metrics assert owner.metrics['datasets'] == 1 org.reload() # Needs updated metrics assert org.metrics['datasets'] == 0 admin.reload() # Needs updated metrics assert admin.metrics['datasets'] == 0 login_user(admin) transfer = accept_transfer(transfer) assert transfer.status == 'accepted' subject.reload() assert subject.organization == org assert subject.owner is None org.reload() assert org.metrics['datasets'] == 1 admin.reload() assert admin.metrics['datasets'] == 0 owner.reload() assert owner.metrics['datasets'] == 0
def test_dataset_archive_one(self, cli): dataset = VisibleDatasetFactory() cli('dataset', 'archive-one', str(dataset.id)) dataset.reload() assert dataset.archived is not None
def test_org_admin_can_accept_transfer(self): owner = UserFactory() admin = UserFactory() org = OrganizationFactory(members=[Member(user=admin, role='admin')]) subject = VisibleDatasetFactory(owner=owner) transfer = TransferFactory(owner=owner, recipient=org, subject=subject) owner.reload() # Needs updated metrics self.assertEqual(owner.metrics['datasets'], 1) org.reload() # Needs updated metrics self.assertEqual(org.metrics['datasets'], 0) admin.reload() # Needs updated metrics self.assertEqual(admin.metrics['datasets'], 0) login_user(admin) transfer = accept_transfer(transfer) self.assertEqual(transfer.status, 'accepted') subject.reload() self.assertEqual(subject.organization, org) self.assertIsNone(subject.owner) org.reload() self.assertEqual(org.metrics['datasets'], 1) admin.reload() self.assertEqual(admin.metrics['datasets'], 0) owner.reload() self.assertEqual(owner.metrics['datasets'], 0)
def test_recipient_user_can_accept_transfer(self): owner = UserFactory() recipient = UserFactory() subject = VisibleDatasetFactory(owner=owner) transfer = TransferFactory(owner=owner, recipient=recipient, subject=subject) owner.reload() # Needs updated metrics self.assertEqual(owner.metrics['datasets'], 1) recipient.reload() # Needs updated metrics self.assertEqual(recipient.metrics['datasets'], 0) login_user(recipient) transfer = accept_transfer(transfer) self.assertEqual(transfer.status, 'accepted') subject.reload() self.assertEqual(subject.owner, recipient) recipient.reload() self.assertEqual(recipient.metrics['datasets'], 1) owner.reload() self.assertEqual(owner.metrics['datasets'], 0)
def test_dataset_api_update_existing_resource_with_extras(self): '''It should update a dataset's existing resource with extras''' user = self.login() dataset = VisibleDatasetFactory(owner=user) data = dataset.to_dict() data['resources'][0]['extras'] = {'extra:id': 'id'} response = self.put(url_for('api.dataset', dataset=dataset), data) self.assert200(response) dataset.reload() resource = dataset.resources[0] self.assertEqual(resource.extras, {'extra:id': 'id'})
def test_dataset_archive(self, app): user = UserFactory() app.config['ARCHIVE_COMMENT_USER_ID'] = user.id dataset = VisibleDatasetFactory() archive(dataset, comment=True) dataset.reload() assert dataset.archived is not None discussions = Discussion.objects.filter(subject=dataset) assert len(discussions) == 1 assert 'archived' in discussions[0].discussion[0].content
def test_dataset_api_update_new_resource_with_extras(self): '''It should update a dataset with a new resource with extras''' user = self.login() dataset = VisibleDatasetFactory(owner=user) data = dataset.to_dict() resource_data = ResourceFactory.as_dict() resource_data['extras'] = {'extra:id': 'id'} data['resources'].append(resource_data) response = self.put(url_for('api.dataset', dataset=dataset), data) self.assert200(response) dataset.reload() resource = (r for r in dataset.resources if r.title == resource_data['title']).next() self.assertEqual(resource.extras, {'extra:id': 'id'})