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
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))
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)
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')
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')
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))
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))
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)
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)
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))
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'])
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)
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)
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 generate_reuses(count, user=None): VisibleReuseFactory.create_batch(count, owner=user)
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)
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