Fixing is_watcher attribute on TIU patch requests

remotes/origin/logger
Alejandro Alonso 2015-10-14 14:08:40 +02:00
parent cce9b3db6e
commit 7ec8253749
4 changed files with 76 additions and 1 deletions

View File

@ -228,10 +228,15 @@ class EditableWatchedResourceModelSerializer(WatchedResourceModelSerializer):
return obj
def to_native(self, obj):
#watchers is wasn't attached via the get_queryset of the viewset we need to manually add it
#if watchers wasn't attached via the get_queryset of the viewset we need to manually add it
if obj is not None and not hasattr(obj, "watchers"):
obj.watchers = [user.id for user in obj.get_watchers()]
request = self.context.get("request", None)
user = request.user if request else None
if user and user.is_authenticated():
obj.is_watcher = user.id in obj.watchers
return super(WatchedResourceModelSerializer, self).to_native(obj)
def save(self, **kwargs):

View File

@ -122,3 +122,28 @@ def test_get_issue_is_watcher(client):
assert response.status_code == 200
assert response.data['watchers'] == []
assert response.data['is_watcher'] == False
def test_remove_issue_watcher(client):
user = f.UserFactory.create()
project = f.ProjectFactory.create()
issue = f.IssueFactory(project=project,
status__project=project,
severity__project=project,
priority__project=project,
type__project=project,
milestone__project=project)
issue.add_watcher(user)
role = f.RoleFactory.create(project=project, permissions=['modify_issue', 'view_issues'])
f.MembershipFactory.create(project=project, user=user, role=role)
url = reverse("issues-detail", args=(issue.id,))
client.login(user)
data = {"version": issue.version, "watchers": []}
response = client.json.patch(url, json.dumps(data))
assert response.status_code == 200
assert response.data['watchers'] == []
assert response.data['is_watcher'] == False

View File

@ -122,3 +122,26 @@ def test_get_task_is_watcher(client):
assert response.status_code == 200
assert response.data['watchers'] == []
assert response.data['is_watcher'] == False
def test_remove_task_watcher(client):
user = f.UserFactory.create()
project = f.ProjectFactory.create()
task = f.TaskFactory(project=project,
user_story=None,
status__project=project,
milestone__project=project)
task.add_watcher(user)
role = f.RoleFactory.create(project=project, permissions=['modify_task', 'view_tasks'])
f.MembershipFactory.create(project=project, user=user, role=role)
url = reverse("tasks-detail", args=(task.id,))
client.login(user)
data = {"version": task.version, "watchers": []}
response = client.json.patch(url, json.dumps(data))
assert response.status_code == 200
assert response.data['watchers'] == []
assert response.data['is_watcher'] == False

View File

@ -122,3 +122,25 @@ def test_get_user_story_is_watcher(client):
assert response.status_code == 200
assert response.data['watchers'] == []
assert response.data['is_watcher'] == False
def test_remove_user_story_watcher(client):
user = f.UserFactory.create()
project = f.ProjectFactory.create()
us = f.UserStoryFactory(project=project,
status__project=project,
milestone__project=project)
us.add_watcher(user)
role = f.RoleFactory.create(project=project, permissions=['modify_us', 'view_us'])
f.MembershipFactory.create(project=project, user=user, role=role)
url = reverse("userstories-detail", args=(us.id,))
client.login(user)
data = {"version": us.version, "watchers": []}
response = client.json.patch(url, json.dumps(data))
assert response.status_code == 200
assert response.data['watchers'] == []
assert response.data['is_watcher'] == False