コード例 #1
0
ファイル: test_badges.py プロジェクト: grouan/udata
 def test_toggle_badge_off(self):
     ps_badge = OrganizationBadge(kind=PUBLIC_SERVICE)
     certified_badge = OrganizationBadge(kind=CERTIFIED)
     org = OrganizationFactory(badges=[ps_badge, certified_badge])
     toggle(str(org.id), PUBLIC_SERVICE)
     org.reload()
     self.assertEqual(org.badges[0].kind, CERTIFIED)
コード例 #2
0
    def test_organizations_csv(self):
        with self.autoindex():
            orgs = [OrganizationFactory() for _ in range(5)]
            hidden_org = OrganizationFactory(deleted=datetime.now())

        response = self.get(url_for('site.organizations_csv'))

        self.assert200(response)
        self.assertEqual(response.mimetype, 'text/csv')
        self.assertEqual(response.charset, 'utf-8')

        csvfile = StringIO.StringIO(response.data)
        reader = csv.get_reader(csvfile)
        header = reader.next()

        self.assertEqual(header[0], 'id')
        self.assertIn('name', header)
        self.assertIn('description', header)
        self.assertIn('created_at', header)
        self.assertIn('last_modified', header)
        self.assertIn('metric.datasets', header)

        rows = list(reader)
        ids = [row[0] for row in rows]

        self.assertEqual(len(rows), len(orgs))
        for org in orgs:
            self.assertIn(str(org.id), ids)
        self.assertNotIn(str(hidden_org.id), ids)
コード例 #3
0
 def test_toggle_badge_off(self):
     ps_badge = OrganizationBadge(kind=PUBLIC_SERVICE)
     certified_badge = OrganizationBadge(kind=CERTIFIED)
     org = OrganizationFactory(badges=[ps_badge, certified_badge])
     toggle(str(org.id), PUBLIC_SERVICE)
     org.reload()
     self.assertEqual(org.badges[0].kind, CERTIFIED)
コード例 #4
0
ファイル: tests.py プロジェクト: rblmdst/udata-gouvfr
    def test_public_services(self):
        ps_badge = Badge(kind=PUBLIC_SERVICE)
        public_services = [
            OrganizationFactory(badges=[ps_badge]) for _ in range(2)
        ]
        for _ in range(3):
            OrganizationFactory()

        self.assertEqual(PublicServicesMetric().get_value(),
                         len(public_services))
コード例 #5
0
    def test_my_org_issues(self):
        user = self.login()
        member = Member(user=user, role='editor')
        organization = OrganizationFactory(members=[member])
        reuse = ReuseFactory(owner=user)
        org_reuse = ReuseFactory(organization=organization)
        dataset = VisibleDatasetFactory(owner=user)
        org_dataset = VisibleDatasetFactory(organization=organization)

        issues = [
            DatasetIssue.objects.create(subject=dataset, title='', user=user),
            DatasetIssue.objects.create(subject=org_dataset,
                                        title='',
                                        user=user),
            ReuseIssue.objects.create(subject=reuse, title='', user=user),
            ReuseIssue.objects.create(subject=org_reuse, title='', user=user),
        ]

        # Should not be listed
        DatasetIssue.objects.create(subject=VisibleDatasetFactory(),
                                    title='',
                                    user=user)
        ReuseIssue.objects.create(subject=ReuseFactory(), title='', user=user)

        response = self.get(url_for('api.my_org_issues'))
        self.assert200(response)
        self.assertEqual(len(response.json), len(issues))
コード例 #6
0
    def test_my_org_discussions_with_search(self):
        user = self.login()
        member = Member(user=user, role='editor')
        organization = OrganizationFactory(members=[member])
        reuse = ReuseFactory(owner=user)
        org_reuse = ReuseFactory(organization=organization)
        dataset = VisibleDatasetFactory(owner=user)
        org_dataset = VisibleDatasetFactory(organization=organization)

        discussions = [
            DatasetDiscussion.objects.create(subject=dataset,
                                             title='foo',
                                             user=user),
            ReuseDiscussion.objects.create(subject=org_reuse,
                                           title='foo',
                                           user=user),
        ]

        # Should not be listed.
        ReuseDiscussion.objects.create(subject=reuse, title='', user=user),
        DatasetDiscussion.objects.create(subject=org_dataset,
                                         title='',
                                         user=user),

        # Should really not be listed.
        DatasetDiscussion.objects.create(subject=VisibleDatasetFactory(),
                                         title='foo',
                                         user=user)
        ReuseDiscussion.objects.create(subject=ReuseFactory(),
                                       title='foo',
                                       user=user)

        response = self.get(url_for('api.my_org_discussions'), qs={'q': 'foo'})
        self.assert200(response)
        self.assertEqual(len(response.json), len(discussions))
コード例 #7
0
 def test_with_other_datasets_and_pertinent_ones(self):
     user = self.login()
     with self.autoindex():
         member = Member(user=user, role='admin')
         organization = OrganizationFactory(members=[member])
         for _ in range(3):
             VisibleDatasetFactory(
                 organization=organization,
                 spatial=SpatialCoverageFactory(zones=[self.arles.id]))
     response = self.client.get(
         url_for('territories.territory', territory=self.arles))
     self.assert200(response)
     data = response.data.decode('utf-8')
     self.assertIn('Arles', data)
     territory_datasets = self.get_context_variable('territory_datasets')
     self.assertEqual(len(territory_datasets), 0)
     other_datasets = self.get_context_variable('other_datasets')
     self.assertEqual(len(other_datasets), 3)
     for dataset in other_datasets:
         self.assertIn(
             '<div data-udata-dataset-id="{dataset.id}"'.format(
                 dataset=dataset),
             data)
     self.assertTrue(self.get_context_variable('has_pertinent_datasets'))
     self.assertEqual(self.get_context_variable('town_datasets'), [])
     self.assertIn('Some of your datasets have an exact match!', data)
コード例 #8
0
    def test_default(self):
        org = OrganizationFactory()
        source = HarvestSourceFactory(backend='factory', organization=org)
        with self.assert_emit(signals.before_harvest_job,
                              signals.after_harvest_job):
            self.action(source.slug)

        source.reload()
        self.assertEqual(len(HarvestJob.objects(source=source)), 1)

        job = source.get_last_job()

        self.assertEqual(job.status, 'done')
        self.assertEqual(job.errors, [])
        self.assertIsNotNone(job.started)
        self.assertIsNotNone(job.ended)
        self.assertEqual(len(job.items), COUNT)

        for item in job.items:
            self.assertEqual(item.status, 'done')
            self.assertEqual(item.errors, [])
            self.assertIsNotNone(item.started)
            self.assertIsNotNone(item.ended)
            self.assertIsNotNone(item.dataset)

            dataset = item.dataset
            self.assertIsNotNone(Dataset.objects(id=dataset.id).first())
            self.assertEqual(dataset.organization, org)
            self.assertIn('harvest:remote_id', dataset.extras)
            self.assertIn('harvest:last_update', dataset.extras)
            self.assertIn('harvest:source_id', dataset.extras)

        self.assertEqual(len(HarvestJob.objects), 1)
        self.assertEqual(len(Dataset.objects), COUNT)
コード例 #9
0
    def test_preview(self):
        org = OrganizationFactory()
        source = HarvestSourceFactory(backend='factory', organization=org)

        job = actions.preview(source.slug)

        self.assertEqual(job.status, 'done')
        self.assertEqual(job.errors, [])
        self.assertIsNotNone(job.started)
        self.assertIsNotNone(job.ended)
        self.assertEqual(len(job.items), COUNT)

        for item in job.items:
            self.assertEqual(item.status, 'done')
            self.assertEqual(item.errors, [])
            self.assertIsNotNone(item.started)
            self.assertIsNotNone(item.ended)
            self.assertIsNotNone(item.dataset)

            dataset = item.dataset
            self.assertEqual(dataset.organization, org)
            self.assertIn('harvest:remote_id', dataset.extras)
            self.assertIn('harvest:last_update', dataset.extras)
            self.assertIn('harvest:source_id', dataset.extras)

        self.assertEqual(len(HarvestJob.objects), 0)
        self.assertEqual(len(Dataset.objects), 0)
コード例 #10
0
    def test_with_initial_and_not_member(self):
        Ownable, OwnableForm = self.factory()
        user = UserFactory()
        org = OrganizationFactory(members=[Member(user=user, role='editor')])
        neworg = OrganizationFactory()
        ownable = Ownable(organization=org)

        form = OwnableForm(MultiDict({'organization': str(neworg.id)}),
                           ownable)

        self.assertEqual(form.organization.data, neworg)

        login_user(user)
        form.validate()
        self.assertIn('organization', form.errors)
        self.assertEqual(len(form.errors['organization']), 1)
コード例 #11
0
    def test_organization_over_owner(self):
        Ownable, OwnableForm = self.factory()
        user = UserFactory()
        member = Member(user=user, role='editor')
        org = OrganizationFactory(members=[member])

        login_user(user)

        form = OwnableForm(
            MultiDict({
                'owner': str(user.id),
                'organization': str(org.id)
            }))

        self.assertEqual(form.owner.data, user)
        self.assertEqual(form.organization.data, org)

        form.validate()
        self.assertEqual(form.errors, {})

        self.assertIsNone(form.owner.data)
        self.assertEqual(form.organization.data, org)

        ownable = Ownable()
        form.populate_obj(ownable)
        self.assertIsNone(ownable.owner)
        self.assertEqual(ownable.organization, org)
コード例 #12
0
ファイル: tests.py プロジェクト: rblmdst/udata-gouvfr
 def test_render_metrics(self):
     '''It should render the search page'''
     for i in range(3):
         org = OrganizationFactory()
         DatasetFactory(organization=org)
         ReuseFactory(organization=org)
     response = self.get(url_for('site.dashboard'))
     self.assert200(response)
コード例 #13
0
ファイル: tests.py プロジェクト: rblmdst/udata-gouvfr
    def test_render_reuse_page(self):
        '''It should render the reuse page'''
        org = OrganizationFactory()
        dataset = DatasetFactory(organization=org)
        reuse = ReuseFactory(organization=org, datasets=[dataset])

        response = self.get(url_for('reuses.show', reuse=reuse))
        self.assert200(response)
コード例 #14
0
    def test_with_initial_organization(self):
        Ownable, OwnableForm = self.factory()
        org = OrganizationFactory()
        ownable = Ownable(organization=org)

        form = OwnableForm(None, ownable)
        self.assertIsNone(form.owner.data)
        self.assertEqual(form.organization.data, org)
コード例 #15
0
ファイル: tests.py プロジェクト: rblmdst/udata-gouvfr
    def test_render_dataset_page(self):
        '''It should render the dataset page'''
        org = OrganizationFactory()
        dataset = DatasetFactory(organization=org)
        ReuseFactory(organization=org, datasets=[dataset])

        response = self.get(url_for('datasets.show', dataset=dataset))
        self.assert200(response)
コード例 #16
0
ファイル: test_api.py プロジェクト: simudream/udata
    def test_list_sources_for_org(self):
        org = OrganizationFactory()
        sources = HarvestSourceFactory.create_batch(3, organization=org)
        HarvestSourceFactory()

        response = self.get(url_for('api.harvest_sources', owner=str(org.id)))
        self.assert200(response)

        self.assertEqual(len(response.json), len(sources))
コード例 #17
0
ファイル: tests.py プロジェクト: rblmdst/udata-gouvfr
    def test_render_organization_page(self):
        '''It should render the organization page'''
        org = OrganizationFactory()
        datasets = [DatasetFactory(organization=org) for _ in range(3)]
        for dataset in datasets:
            ReuseFactory(organization=org, datasets=[dataset])

        response = self.get(url_for('organizations.show', org=org))
        self.assert200(response)
コード例 #18
0
    def test_organizations_csv_with_filters(self):
        '''Should handle filtering but ignore paging or facets'''
        user = self.login()
        with self.autoindex():
            public_service_badge = OrganizationBadge(
                kind=PUBLIC_SERVICE,
                created=datetime.now(),
                created_by=user
            )
            filtered_orgs = [
                OrganizationFactory(badges=[public_service_badge])
                for _ in range(6)]
            orgs = [OrganizationFactory() for _ in range(3)]
            hidden_org = OrganizationFactory(deleted=datetime.now())

        response = self.get(url_for('site.organizations_csv',
                            badge=PUBLIC_SERVICE, page_size=3, facets=True))

        self.assert200(response)
        self.assertEqual(response.mimetype, 'text/csv')
        self.assertEqual(response.charset, 'utf-8')

        csvfile = StringIO.StringIO(response.data)
        reader = csv.get_reader(csvfile)
        header = reader.next()

        self.assertEqual(header[0], 'id')
        self.assertIn('name', header)
        self.assertIn('description', header)
        self.assertIn('created_at', header)
        self.assertIn('last_modified', header)
        self.assertIn('metric.datasets', header)

        rows = list(reader)
        ids = [row[0] for row in rows]

        # Should ignore paging
        self.assertEqual(len(rows), len(filtered_orgs))
        # SHoulf pass filter
        for org in filtered_orgs:
            self.assertIn(str(org.id), ids)
        for org in orgs:
            self.assertNotIn(str(org.id), ids)
        self.assertNotIn(str(hidden_org.id), ids)
コード例 #19
0
ファイル: test_activity.py プロジェクト: guillo-w/udata
    def test_create_and_retrieve_for_org(self):
        org = OrganizationFactory()
        FakeActivity.objects.create(actor=self.user,
                                    related_to=self.fake,
                                    organization=org)

        activities = Activity.objects(organization=org)

        self.assertEqual(len(activities), 1)
        self.assertIsInstance(activities[0], FakeActivity)
コード例 #20
0
    def test_render_search(self):
        '''It should render the search page'''
        with self.autoindex():
            for i in range(3):
                org = OrganizationFactory()
                DatasetFactory(organization=org)
                ReuseFactory(organization=org)

        response = self.get(url_for('front.search'))
        self.assert200(response)
コード例 #21
0
ファイル: tests.py プロジェクト: rblmdst/udata-gouvfr
    def test_render_home(self):
        '''It should render the home page'''
        with self.autoindex():
            for i in range(3):
                org = OrganizationFactory()
                DatasetFactory(organization=org)
                ReuseFactory(organization=org)

        response = self.get(url_for('site.home'))
        self.assert200(response)
コード例 #22
0
    def test_with_initial_and_both_member(self):
        Ownable, OwnableForm = self.factory()
        user = UserFactory()
        org = OrganizationFactory(members=[Member(user=user, role='editor')])
        neworg = OrganizationFactory(
            members=[Member(user=user, role='editor')])
        ownable = Ownable(organization=org)

        form = OwnableForm(MultiDict({'organization': str(neworg.id)}),
                           ownable)

        self.assertEqual(form.organization.data, neworg)

        login_user(user)
        form.validate()
        self.assertEqual(form.errors, {})

        form.populate_obj(ownable)
        self.assertIsNone(ownable.owner)
        self.assertEqual(ownable.organization, neworg)
コード例 #23
0
    def test_preview_max_items(self):
        org = OrganizationFactory()
        source = HarvestSourceFactory(backend='factory',
                                      organization=org,
                                      config={'count': 10})

        self.app.config['HARVEST_PREVIEW_MAX_ITEMS'] = 5

        job = actions.preview(source.slug)

        self.assertEqual(len(job.items), 5)
コード例 #24
0
    def test_with_initial_organization_and_user_logged(self):
        Ownable, OwnableForm = self.factory()
        user = UserFactory()
        org = OrganizationFactory()
        ownable = Ownable(organization=org)

        login_user(user)

        form = OwnableForm(None, ownable)
        self.assertIsNone(form.owner.data)
        self.assertEqual(form.organization.data, org)
コード例 #25
0
    def test_toggle_badge_on_from_file(self):
        orgs = [OrganizationFactory() for _ in range(2)]

        with NamedTemporaryFile() as temp:
            temp.write('\n'.join((str(org.id) for org in orgs)))
            temp.flush()

            toggle(temp.name, PUBLIC_SERVICE)

        for org in orgs:
            org.reload()
            self.assertEqual(org.badges[0].kind, PUBLIC_SERVICE)
コード例 #26
0
    def test_list_sources_for_org(self):
        org = OrganizationFactory()
        self.assertEqual(actions.list_sources(org), [])

        sources = HarvestSourceFactory.create_batch(3, organization=org)
        HarvestSourceFactory()

        result = actions.list_sources(org)
        self.assertEqual(len(result), len(sources))

        for source in sources:
            self.assertIn(source, result)
コード例 #27
0
    def test_no_user_logged_in_permission(self):
        Ownable, OwnableForm = self.factory()
        member = Member(user=UserFactory(), role='editor')
        org = OrganizationFactory(members=[member])

        form = OwnableForm(MultiDict({'organization': str(org.id)}))

        self.assertEqual(form.organization.data, org)

        self.assertFalse(form.validate())
        self.assertIn('organization', form.errors)
        self.assertEqual(len(form.errors['organization']), 1)
コード例 #28
0
    def test_my_org_reuses(self):
        user = self.login()
        member = Member(user=user, role='editor')
        organization = OrganizationFactory(members=[member])
        reuses = [ReuseFactory(owner=user) for _ in range(2)]
        org_reuses = [
            ReuseFactory(organization=organization) for _ in range(2)
        ]

        response = self.get(url_for('api.my_org_reuses'))
        self.assert200(response)
        self.assertEqual(len(response.json), len(reuses) + len(org_reuses))
コード例 #29
0
ファイル: test_activity.py プロジェクト: guillo-w/udata
    def test_create_and_retrieve_for_related(self):
        org = OrganizationFactory()
        FakeActivity.objects.create(actor=self.user,
                                    related_to=self.fake,
                                    organization=org)
        FakeActivity.objects.create(actor=UserFactory(), related_to=self.fake)

        activities = Activity.objects(related_to=self.fake)

        self.assertEqual(len(activities), 2)
        for activity in activities:
            self.assertIsInstance(activity, FakeActivity)
コード例 #30
0
    def test_render_home(self):
        '''It should render the home page'''
        for i in range(3):
            org = OrganizationFactory()
            DatasetFactory(organization=org)
            ReuseFactory(organization=org)

        current_site.settings.home_datasets = [
            DatasetFactory() for _ in range(3)]
        current_site.settings.home_reuses = [
            ReuseFactory() for _ in range(3)]

        response = self.get(url_for('site.home'))
        self.assert200(response)
コード例 #31
0
ファイル: test_api.py プロジェクト: simudream/udata
    def test_create_source_with_org_not_member(self):
        '''It should create and attach a new source to an organization'''
        user = self.login()
        member = Member(user=user, role='editor')
        org = OrganizationFactory(members=[member])
        data = {
            'name': faker.word(),
            'url': faker.url(),
            'backend': 'factory',
            'organization': str(org.id)
        }
        response = self.post(url_for('api.harvest_sources'), data)

        self.assert403(response)
コード例 #32
0
ファイル: test_badges.py プロジェクト: grouan/udata
 def test_toggle_badge_on(self):
     org = OrganizationFactory()
     toggle(str(org.id), PUBLIC_SERVICE)
     org.reload()
     self.assertEqual(org.badges[0].kind, PUBLIC_SERVICE)