예제 #1
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
예제 #2
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
예제 #3
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
예제 #4
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
예제 #5
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
예제 #6
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
예제 #7
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
        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)
예제 #8
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)
예제 #9
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'})
예제 #10
0
    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
예제 #11
0
 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'})