Fixing is_watcher attribute on TIU patch requests
parent
cce9b3db6e
commit
7ec8253749
|
@ -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):
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
Loading…
Reference in New Issue