Fixing slug generation for issue status, task status and user story status

remotes/origin/enhancement/email-actions
Alejandro Alonso 2014-11-07 08:36:21 +01:00 committed by David Barragán Merino
parent 5718627daa
commit 571bf5e0cc
2 changed files with 69 additions and 6 deletions

View File

@ -344,9 +344,11 @@ class UserStoryStatus(models.Model):
return self.name
def save(self, *args, **kwargs):
if not self.slug:
self.slug = slugify_uniquely_for_queryset(self.name, self.project.us_statuses)
qs = self.project.us_statuses
if self.id:
qs = qs.exclude(id=self.id)
self.slug = slugify_uniquely_for_queryset(self.name, qs)
return super().save(*args, **kwargs)
@ -402,9 +404,11 @@ class TaskStatus(models.Model):
return self.name
def save(self, *args, **kwargs):
if not self.slug:
self.slug = slugify_uniquely_for_queryset(self.name, self.project.task_statuses)
qs = self.project.task_statuses
if self.id:
qs = qs.exclude(id=self.id)
self.slug = slugify_uniquely_for_queryset(self.name, qs)
return super().save(*args, **kwargs)
@ -483,9 +487,11 @@ class IssueStatus(models.Model):
return self.name
def save(self, *args, **kwargs):
if not self.slug:
self.slug = slugify_uniquely_for_queryset(self.name, self.project.issue_statuses)
qs = self.project.issue_statuses
if self.id:
qs = qs.exclude(id=self.id)
self.slug = slugify_uniquely_for_queryset(self.name, qs)
return super().save(*args, **kwargs)

View File

@ -26,3 +26,60 @@ def test_partially_update_project(client):
client.login(project.owner)
response = client.json.patch(url, json.dumps(data))
assert response.status_code == 400
def test_us_status_slug_generation(client):
us_status = f.UserStoryStatusFactory(name="NEW")
assert us_status.slug == "new"
client.login(us_status.project.owner)
url = reverse("userstory-statuses-detail", kwargs={"pk": us_status.pk})
data = {"name": "new"}
response = client.json.patch(url, json.dumps(data))
assert response.status_code == 200
assert response.data["slug"] == "new"
data = {"name": "new status"}
response = client.json.patch(url, json.dumps(data))
assert response.status_code == 200
assert response.data["slug"] == "new-status"
def test_task_status_slug_generation(client):
task_status = f.TaskStatusFactory(name="NEW")
assert task_status.slug == "new"
client.login(task_status.project.owner)
url = reverse("task-statuses-detail", kwargs={"pk": task_status.pk})
data = {"name": "new"}
response = client.json.patch(url, json.dumps(data))
assert response.status_code == 200
assert response.data["slug"] == "new"
data = {"name": "new status"}
response = client.json.patch(url, json.dumps(data))
assert response.status_code == 200
assert response.data["slug"] == "new-status"
def test_issue_status_slug_generation(client):
issue_status = f.IssueStatusFactory(name="NEW")
assert issue_status.slug == "new"
client.login(issue_status.project.owner)
url = reverse("issue-statuses-detail", kwargs={"pk": issue_status.pk})
data = {"name": "new"}
response = client.json.patch(url, json.dumps(data))
assert response.status_code == 200
assert response.data["slug"] == "new"
data = {"name": "new status"}
response = client.json.patch(url, json.dumps(data))
assert response.status_code == 200
assert response.data["slug"] == "new-status"