diff --git a/helpdesk/templates/helpdesk/checklist_templates.html b/helpdesk/templates/helpdesk/checklist_templates.html
index 12c671ce..b8d2c6e1 100644
--- a/helpdesk/templates/helpdesk/checklist_templates.html
+++ b/helpdesk/templates/helpdesk/checklist_templates.html
@@ -80,7 +80,7 @@
- {{ checklist.task_list|length }} tasks
+ {{ checklist.task_list|length }} {% trans "tasks" %}
{% endfor %}
diff --git a/helpdesk/tests/test_checklist.py b/helpdesk/tests/test_checklist.py
index 9f395972..190b2173 100644
--- a/helpdesk/tests/test_checklist.py
+++ b/helpdesk/tests/test_checklist.py
@@ -2,8 +2,7 @@ from datetime import datetime
from django.contrib.auth import get_user_model
from django.test import TestCase
from django.urls import reverse
-from django.utils.translation import gettext_lazy as _
-from helpdesk.models import ChecklistTemplate, Queue, Ticket
+from helpdesk.models import Checklist, ChecklistTask, ChecklistTemplate, Queue, Ticket
class TicketChecklistTestCase(TestCase):
@@ -109,6 +108,26 @@ class TicketChecklistTestCase(TestCase):
self.assertEqual(checklist.tasks.all()[0].description, 'New first task')
self.assertEqual(checklist.tasks.all()[1].description, 'First task edited')
+ def test_delete_checklist(self):
+ checklist = self.ticket.checklists.create(name='Test checklist')
+ checklist.tasks.create(description='First task', position=1)
+ self.assertEqual(Checklist.objects.count(), 1)
+ self.assertEqual(ChecklistTask.objects.count(), 1)
+
+ response = self.client.post(
+ reverse(
+ 'helpdesk:delete_ticket_checklist',
+ kwargs={'ticket_id': self.ticket.id, 'checklist_id': checklist.id}
+ ),
+ follow=True
+ )
+
+ self.assertEqual(response.status_code, 200)
+ self.assertTemplateUsed(response, 'helpdesk/ticket.html')
+
+ self.assertEqual(Checklist.objects.count(), 0)
+ self.assertEqual(ChecklistTask.objects.count(), 0)
+
def test_mark_task_as_done(self):
checklist = self.ticket.checklists.create(name='Test checklist')
task = checklist.tasks.create(description='Task', position=1)
@@ -129,8 +148,8 @@ class TicketChecklistTestCase(TestCase):
self.assertEqual(self.ticket.followup_set.count(), 1)
followup = self.ticket.followup_set.get()
self.assertEqual(followup.ticketchange_set.count(), 1)
- self.assertEqual(followup.ticketchange_set.get().old_value, _('To do'))
- self.assertEqual(followup.ticketchange_set.get().new_value, _('Completed'))
+ self.assertEqual(followup.ticketchange_set.get().old_value, 'To do')
+ self.assertEqual(followup.ticketchange_set.get().new_value, 'Completed')
task.refresh_from_db()
self.assertIsNotNone(task.completion_date)
@@ -152,8 +171,82 @@ class TicketChecklistTestCase(TestCase):
self.assertEqual(self.ticket.followup_set.count(), 1)
followup = self.ticket.followup_set.get()
self.assertEqual(followup.ticketchange_set.count(), 1)
- self.assertEqual(followup.ticketchange_set.get().old_value, _('Completed'))
- self.assertEqual(followup.ticketchange_set.get().new_value, _('To do'))
+ self.assertEqual(followup.ticketchange_set.get().old_value, 'Completed')
+ self.assertEqual(followup.ticketchange_set.get().new_value, 'To do')
task.refresh_from_db()
self.assertIsNone(task.completion_date)
+
+ def test_display_checklist_templates(self):
+ ChecklistTemplate.objects.create(
+ name='Test checklist template',
+ task_list=['first', 'second', 'third']
+ )
+
+ response = self.client.get(reverse('helpdesk:checklist_templates'))
+
+ self.assertEqual(response.status_code, 200)
+ self.assertTemplateUsed(response, 'helpdesk/checklist_templates.html')
+ self.assertContains(response, 'Test checklist template')
+ self.assertContains(response, '3 tasks')
+
+ def test_create_checklist_template(self):
+ self.assertEqual(ChecklistTemplate.objects.count(), 0)
+
+ response = self.client.post(
+ reverse('helpdesk:checklist_templates'),
+ data={
+ 'name': 'Test checklist template',
+ 'task_list': '["first", "second", "third"]'
+ },
+ follow=True
+ )
+
+ self.assertEqual(response.status_code, 200)
+ self.assertTemplateUsed(response, 'helpdesk/checklist_templates.html')
+
+ self.assertEqual(ChecklistTemplate.objects.count(), 1)
+ checklist_template = ChecklistTemplate.objects.get()
+ self.assertEqual(checklist_template.name, 'Test checklist template')
+ self.assertEqual(checklist_template.task_list, ['first', 'second', 'third'])
+
+ def test_edit_checklist_template(self):
+ checklist_template = ChecklistTemplate.objects.create(
+ name='Test checklist template',
+ task_list=['first', 'second', 'third']
+ )
+ self.assertEqual(ChecklistTemplate.objects.count(), 1)
+
+ response = self.client.post(
+ reverse('helpdesk:edit_checklist_template', kwargs={'checklist_template_id': checklist_template.id}),
+ data={
+ 'name': 'New checklist template',
+ 'task_list': '["new first", "second", "third", "last"]'
+ },
+ follow=True
+ )
+
+ self.assertEqual(response.status_code, 200)
+ self.assertTemplateUsed(response, 'helpdesk/checklist_templates.html')
+
+ self.assertEqual(ChecklistTemplate.objects.count(), 1)
+ checklist_template.refresh_from_db()
+ self.assertEqual(checklist_template.name, 'New checklist template')
+ self.assertEqual(checklist_template.task_list, ['new first', 'second', 'third', 'last'])
+
+ def test_delete_checklist_template(self):
+ checklist_template = ChecklistTemplate.objects.create(
+ name='Test checklist template',
+ task_list=['first', 'second', 'third']
+ )
+ self.assertEqual(ChecklistTemplate.objects.count(), 1)
+
+ response = self.client.post(
+ reverse('helpdesk:delete_checklist_template', kwargs={'checklist_template_id': checklist_template.id}),
+ follow=True
+ )
+
+ self.assertEqual(response.status_code, 200)
+ self.assertTemplateUsed(response, 'helpdesk/checklist_templates.html')
+
+ self.assertEqual(ChecklistTemplate.objects.count(), 0)
diff --git a/helpdesk/views/staff.py b/helpdesk/views/staff.py
index 61847db9..d25dac0c 100644
--- a/helpdesk/views/staff.py
+++ b/helpdesk/views/staff.py
@@ -481,7 +481,7 @@ def delete_ticket_checklist(request, ticket_id, checklist_id):
ticket_perm_check(request, ticket)
checklist = get_object_or_404(ticket.checklists.all(), id=checklist_id)
- if request.POST:
+ if request.method == 'POST':
checklist.delete()
return redirect(ticket)
@@ -2156,7 +2156,7 @@ def checklist_templates(request, checklist_template_id=None):
@helpdesk_staff_member_required
def delete_checklist_template(request, checklist_template_id):
checklist_template = get_object_or_404(ChecklistTemplate, id=checklist_template_id)
- if request.POST:
+ if request.method == 'POST':
checklist_template.delete()
return redirect('helpdesk:checklist_templates')
return render(request, 'helpdesk/checklist_template_confirm_delete.html', {