def upvote(self, request, pk=None): obj = self.get_object() self.check_permissions(request, "upvote", obj) self.pre_conditions_on_save(obj) services.add_vote(obj, user=request.user) return response.Ok()
def test_add_vote(): project = f.ProjectFactory() project_type = ContentType.objects.get_for_model(project) user = f.UserFactory() votes_qs = models.Votes.objects.filter(content_type=project_type, object_id=project.id) votes.add_vote(project, user) assert votes_qs.get().count == 1 votes.add_vote(project, user) # add_vote must be idempotent assert votes_qs.get().count == 1
def test_user_story_voters_retrieve(client, data): add_vote(data.public_user_story, data.project_owner) public_url = reverse('userstory-voters-detail', kwargs={"resource_id": data.public_user_story.pk, "pk": data.project_owner.pk}) add_vote(data.private_user_story1, data.project_owner) private_url1 = reverse('userstory-voters-detail', kwargs={"resource_id": data.private_user_story1.pk, "pk": data.project_owner.pk}) add_vote(data.private_user_story2, data.project_owner) private_url2 = reverse('userstory-voters-detail', kwargs={"resource_id": data.private_user_story2.pk, "pk": data.project_owner.pk}) add_vote(data.blocked_user_story, data.project_owner) blocked_url = reverse('userstory-voters-detail', kwargs={"resource_id": data.blocked_user_story.pk, "pk": data.project_owner.pk}) users = [ None, data.registered_user, data.project_member_without_perms, data.project_member_with_perms, data.project_owner ] results = helper_test_http_method(client, 'get', public_url, None, users) assert results == [200, 200, 200, 200, 200] results = helper_test_http_method(client, 'get', private_url1, None, users) assert results == [200, 200, 200, 200, 200] results = helper_test_http_method(client, 'get', private_url2, None, users) assert results == [401, 403, 403, 200, 200] results = helper_test_http_method(client, 'get', blocked_url, None, users) assert results == [401, 403, 403, 200, 200]
def create_votes(self, obj): for i in range(self.sd.int(*NUM_VOTES)): user = self.sd.db_object_from_queryset(User.objects.all()) add_vote(obj, user)