Пример #1
0
    def test_reuse_metric(self, app):
        site = SiteFactory.create(id=app.config['SITE_ID'])
        VisibleReuseFactory.create_batch(4)

        site.count_reuses()

        assert site.get_metrics()['reuses'] == 4
Пример #2
0
    def test_render_display_with_private_reuses(self):
        '''It should render the organization page with some private reuses'''
        me = self.login()
        member = Member(user=me, role='editor')
        organization = OrganizationFactory(members=[member])
        reuses = [
            VisibleReuseFactory(organization=organization) for _ in range(2)
        ]
        empty_reuses = [
            ReuseFactory(organization=organization, datasets=[])
            for _ in range(2)
        ]
        private_reuses = [
            VisibleReuseFactory(organization=organization, private=True)
            for _ in range(2)
        ]
        response = self.get(url_for('organizations.show', org=organization))

        self.assert200(response)
        rendered_reuses = self.get_context_variable('reuses')
        self.assertEqual(len(rendered_reuses),
                         len(reuses) + len(private_reuses) + len(empty_reuses))

        rendered_private_reuses = [
            reuse for reuse in rendered_reuses if reuse.private
        ]
        self.assertEqual(len(rendered_private_reuses), len(private_reuses))

        total_reuses = self.get_context_variable('total_reuses')
        self.assertEqual(total_reuses,
                         len(reuses) + len(private_reuses) + len(empty_reuses))
Пример #3
0
 def test_render_dataconnexions_6_with_data(self):
     # Use tags until we are sure all reuse are correctly labeled
     for tag, label, description in DATACONNEXIONS_6_CATEGORIES:
         badge = Badge(kind=DATACONNEXIONS_6_CANDIDATE)
         VisibleReuseFactory(tags=['dataconnexions-6', tag], badges=[badge])
     response = self.client.get(url_for('gouvfr.dataconnexions6'))
     self.assert200(response)
Пример #4
0
    def test_reuses_within_sitemap(self, sitemap):
        '''It should return a reuse list from the sitemap.'''
        reuses = VisibleReuseFactory.create_batch(3)

        sitemap.fetch()

        for reuse in reuses:
            url = sitemap.get_by_url('reuses.show_redirect', reuse=reuse)
            assert url is not None
            sitemap.assert_url(url, 0.8, 'weekly')
Пример #5
0
    def test_reuses_within_sitemap(self):
        '''It should return a reuse list from the sitemap.'''
        reuses = VisibleReuseFactory.create_batch(3)

        self.get_sitemap_tree()

        for reuse in reuses:
            url = self.get_by_url('reuses.show_redirect', reuse=reuse)
            self.assertIsNotNone(url)
            self.assert_url(url, 0.8, 'weekly')
Пример #6
0
    def test_reuses_within_sitemap(self, sitemap):
        '''It should return a reuse list from the sitemap.'''
        reuses = VisibleReuseFactory.create_batch(3)

        sitemap.fetch()

        for reuse in reuses:
            url = sitemap.get_by_url('reuses.show_redirect', reuse=reuse)
            assert url is not None
            sitemap.assert_url(url, 0.8, 'weekly')
Пример #7
0
    def test_get_home_reuses(self):
        site = SiteFactory.create(
            id=self.app.config['SITE_ID'],
            settings__home_reuses=VisibleReuseFactory.create_batch(3))
        current_site.reload()

        self.login(AdminFactory())
        response = self.get(url_for('api.home_reuses'))
        self.assert200(response)

        self.assertEqual(len(response.json), len(site.settings.home_reuses))
Пример #8
0
    def test_render_display_with_reuses(self):
        '''It should render the organization page with some reuses'''
        organization = OrganizationFactory()
        reuses = [
            VisibleReuseFactory(organization=organization) for _ in range(3)
        ]
        response = self.get(url_for('organizations.show', org=organization))

        self.assert200(response)
        rendered_reuses = self.get_context_variable('reuses')
        self.assertEqual(len(rendered_reuses), len(reuses))
Пример #9
0
    def test_render_display(self):
        '''It should render a topic page'''
        with self.autoindex():
            reuses = [VisibleReuseFactory(tags=['tag-{0}'.format(i)])
                      for i in range(3)]
            datasets = [VisibleDatasetFactory(tags=['tag-{0}'.format(i)])
                        for i in range(3)]
        topic = TopicFactory(
            tags=['tag-0', 'tag-2'], datasets=datasets, reuses=reuses)

        response = self.get(url_for('topics.display', topic=topic))
        self.assert200(response)
Пример #10
0
    def test_set_home_reuses(self):
        ids = [r.id for r in VisibleReuseFactory.create_batch(3)]

        self.login(AdminFactory())
        response = self.put(url_for('api.home_reuses'), ids)

        self.assert200(response)
        self.assertEqual(len(response.json), len(ids))

        site = Site.objects.get(id=self.app.config['SITE_ID'])

        self.assertEqual([r.id for r in site.settings.home_reuses], ids)
Пример #11
0
    def test_render_display_with_private_assets_only_member(self):
        '''It should render the organization page without private and empty assets'''
        organization = OrganizationFactory()
        datasets = [
            VisibleDatasetFactory(organization=organization) for _ in range(2)
        ]
        reuses = [
            VisibleReuseFactory(organization=organization) for _ in range(2)
        ]
        for _ in range(2):
            DatasetFactory(organization=organization,
                           resources=[])  # Empty asset
            VisibleDatasetFactory(organization=organization, private=True)
            ReuseFactory(organization=organization, datasets=[])  # Empty asset
            VisibleReuseFactory(organization=organization, private=True)
        response = self.get(url_for('organizations.show', org=organization))

        self.assert200(response)

        rendered_datasets = self.get_context_variable('datasets')
        self.assertEqual(len(rendered_datasets), len(datasets))

        rendered_reuses = self.get_context_variable('reuses')
        self.assertEqual(len(rendered_reuses), len(reuses))

        rendered_private_datasets = [
            dataset for dataset in rendered_datasets if dataset.private
        ]
        self.assertEqual(len(rendered_private_datasets), 0)

        rendered_private_reuses = [
            reuse for reuse in rendered_reuses if reuse.private
        ]
        self.assertEqual(len(rendered_private_reuses), 0)

        total_datasets = self.get_context_variable('total_datasets')
        self.assertEqual(total_datasets, len(datasets))

        total_reuses = self.get_context_variable('total_reuses')
        self.assertEqual(total_reuses, len(reuses))
Пример #12
0
    def test_render_reuses(self):
        '''It should render a topic reuses page'''
        with self.autoindex():
            [VisibleReuseFactory(tags=['tag-{0}'.format(i)]) for i in range(3)]
        topic = TopicFactory(tags=['tag-0', 'tag-2'])

        response = self.get(url_for('topics.reuses', topic=topic))
        self.assert200(response)

        rendered_reuses = self.get_context_variable('reuses')
        self.assertEqual(len(rendered_reuses), 2)
        for reuse in rendered_reuses:
            self.assertIn(reuse.tags[0], ['tag-0', 'tag-2'])
Пример #13
0
    def test_count(self):
        for i in range(1, 4):
            # Tags should be normalized and deduplicated.
            tags = ['Tag "{0}"'.format(j) for j in range(i)] + ['tag-0']
            VisibleDatasetFactory(tags=tags)
            VisibleReuseFactory(tags=tags)

        count_tags.run()

        expected = {
            'tag-0': 3,
            'tag-1': 2,
            'tag-2': 1,
        }

        self.assertEqual(len(Tag.objects), len(expected))

        for name, count in expected.items():
            tag = Tag.objects.get(name=name)
            self.assertEqual(tag.total, 2 * count)
            self.assertEqual(tag.counts['datasets'], count)
            self.assertEqual(tag.counts['reuses'], count)
Пример #14
0
    def test_render_display_with_private_assets_only_member(self):
        '''It should render the organization page without private assets'''
        organization = OrganizationFactory()
        for _ in range(2):
            DatasetFactory(organization=organization)
            VisibleDatasetFactory(organization=organization, private=True)
            ReuseFactory(organization=organization)
            VisibleReuseFactory(organization=organization, private=True)
        response = self.get(url_for('organizations.show', org=organization))

        self.assert200(response)

        rendered_datasets = self.get_context_variable('datasets')
        self.assertEqual(len(rendered_datasets), 0)

        rendered_reuses = self.get_context_variable('reuses')
        self.assertEqual(len(rendered_reuses), 0)

        rendered_private_datasets = self.get_context_variable(
            'private_datasets')
        self.assertEqual(len(rendered_private_datasets), 0)

        rendered_private_reuses = self.get_context_variable('private_reuses')
        self.assertEqual(len(rendered_private_reuses), 0)
Пример #15
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
Пример #16
0
def generate_reuses(count, user=None):
    VisibleReuseFactory.create_batch(count, owner=user)
Пример #17
0
 def test_render_dataconnexions_5_with_data(self):
     for tag, label, description in DATACONNEXIONS_5_CATEGORIES:
         badge = Badge(kind=DATACONNEXIONS_5_CANDIDATE)
         VisibleReuseFactory(tags=[tag], badges=[badge])
     response = self.client.get(url_for('gouvfr.dataconnexions5'))
     self.assert200(response)
Пример #18
0
    def test_reuse_metrics(self):
        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