def test_mark_as_deleted(self): user = UserFactory() other_user = UserFactory() org = OrganizationFactory(editors=[user]) discussion_only_user = DiscussionFactory( user=user, subject=org, discussion=[ MessageDiscussionFactory(posted_by=user), MessageDiscussionFactory(posted_by=user) ]) discussion_with_other = DiscussionFactory( user=other_user, subject=org, discussion=[ MessageDiscussionFactory(posted_by=other_user), MessageDiscussionFactory(posted_by=user) ]) user_follow_org = Follow.objects.create(follower=user, following=org) user_followed = Follow.objects.create(follower=other_user, following=user) user.mark_as_deleted() org.reload() assert len(org.members) == 0 assert Discussion.objects(id=discussion_only_user.id).first() is None discussion_with_other.reload() assert discussion_with_other.discussion[1].content == 'DELETED' assert Follow.objects(id=user_follow_org.id).first() is None assert Follow.objects(id=user_followed.id).first() is None assert user.slug == 'deleted'
def test_quality_has_treated_discussions(self): user = UserFactory() visitor = UserFactory() dataset = DatasetFactory(description='', owner=user) DiscussionFactory( subject=dataset, user=visitor, discussion=[MessageDiscussionFactory(posted_by=user)] + MessageDiscussionFactory.build_batch(2, posted_by=visitor)) self.assertEqual(dataset.quality['discussions'], 1) self.assertFalse(dataset.quality['has_untreated_discussions']) self.assertEqual(dataset.quality['score'], 2)
def test_quality_has_untreated_discussions(self): user = UserFactory() visitor = UserFactory() dataset = DatasetFactory(description='', owner=user) messages = MessageDiscussionFactory.build_batch(2, posted_by=visitor) DiscussionFactory(subject=dataset, user=visitor, discussion=messages) assert dataset.quality['discussions'] == 1 assert dataset.quality['has_untreated_discussions'] assert dataset.quality['score'] == 0
def test_quality_has_untreated_discussions(self): user = UserFactory() visitor = UserFactory() dataset = DatasetFactory(description='', owner=user) messages = MessageDiscussionFactory.build_batch(2, posted_by=visitor) DiscussionFactory(subject=dataset, user=visitor, discussion=messages) assert dataset.quality['discussions'] == 1 assert dataset.quality['has_untreated_discussions'] assert dataset.quality['score'] == 0
def test_quality_all(self): user = UserFactory() visitor = UserFactory() dataset = DatasetFactory(owner=user, frequency='weekly', tags=['foo', 'bar'], description='a' * 42) dataset.add_resource(ResourceFactory(format='pdf')) DiscussionFactory( subject=dataset, user=visitor, discussion=[MessageDiscussionFactory(posted_by=visitor)]) self.assertEqual(dataset.quality['score'], 0) self.assertEqual(sorted(dataset.quality.keys()), [ 'description_length', 'discussions', 'frequency', 'has_only_closed_or_no_formats', 'has_resources', 'has_unavailable_resources', 'has_untreated_discussions', 'score', 'tags_count', 'update_in' ])
def generate_fixtures(source): '''Build sample fixture data (users, datasets, reuses) from local or remote file.''' if source.startswith('http'): json_fixtures = requests.get(source).json() else: with open(source) as f: json_fixtures = json.load(f) with click.progressbar(json_fixtures) as bar: for fixture in bar: user = UserFactory() if not fixture['organization']: dataset = DatasetFactory(**fixture['dataset'], owner=user) else: org = Organization.objects( id=fixture['organization']['id']).first() if not org: org = OrganizationFactory(**fixture['organization'], members=[Member(user=user)]) dataset = DatasetFactory(**fixture['dataset'], organization=org) for resource in fixture['resources']: res = ResourceFactory(**resource) dataset.add_resource(res) for reuse in fixture['reuses']: ReuseFactory(**reuse, datasets=[dataset], owner=user) for community in fixture['community_resources']: CommunityResourceFactory(**community, dataset=dataset, owner=user) for discussion in fixture['discussions']: messages = discussion.pop('discussion') DiscussionFactory(**discussion, subject=dataset, user=user, discussion=[ MessageDiscussionFactory(**message, posted_by=user) for message in messages ])