Fixing is_watcher attribute on TIU patch requests
parent
cce9b3db6e
commit
7ec8253749
|
@ -228,10 +228,15 @@ class EditableWatchedResourceModelSerializer(WatchedResourceModelSerializer):
|
||||||
return obj
|
return obj
|
||||||
|
|
||||||
def to_native(self, 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"):
|
if obj is not None and not hasattr(obj, "watchers"):
|
||||||
obj.watchers = [user.id for user in obj.get_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)
|
return super(WatchedResourceModelSerializer, self).to_native(obj)
|
||||||
|
|
||||||
def save(self, **kwargs):
|
def save(self, **kwargs):
|
||||||
|
|
|
@ -122,3 +122,28 @@ def test_get_issue_is_watcher(client):
|
||||||
assert response.status_code == 200
|
assert response.status_code == 200
|
||||||
assert response.data['watchers'] == []
|
assert response.data['watchers'] == []
|
||||||
assert response.data['is_watcher'] == False
|
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
|
||||||
|
|
|
@ -122,3 +122,26 @@ def test_get_task_is_watcher(client):
|
||||||
assert response.status_code == 200
|
assert response.status_code == 200
|
||||||
assert response.data['watchers'] == []
|
assert response.data['watchers'] == []
|
||||||
assert response.data['is_watcher'] == False
|
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
|
||||||
|
|
|
@ -122,3 +122,25 @@ def test_get_user_story_is_watcher(client):
|
||||||
assert response.status_code == 200
|
assert response.status_code == 200
|
||||||
assert response.data['watchers'] == []
|
assert response.data['watchers'] == []
|
||||||
assert response.data['is_watcher'] == False
|
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
|
||||||
|
|
Loading…
Reference in New Issue