Add test for saving a query, fix shared checkbox issue

My browser sends 'on' when a checkbox is ticked, django ORM only
recognises '1', 'true' or 't' as valid 'True' responses.
This throws an error
ValidationError at /helpdesk/save_query/
[u"'on' value must be either True or False."]

This could be fixed with " value='1'" in the template, but testing that is harder
My fix is to add a check in the view. 2 more lines, but easier to unittest.
Core devs need to make a call as to which solution is best.

D
This commit is contained in:
Daryl 2016-06-30 10:31:46 +12:00
parent afbfd01fab
commit 0ac7183875
2 changed files with 28 additions and 0 deletions

View File

@ -0,0 +1,26 @@
# -*- coding: utf-8 -*-
from django.core.urlresolvers import reverse
from django.test import TestCase
from helpdesk.models import Ticket, Queue
from helpdesk.tests.helpers import get_staff_user, reload_urlconf
class TestSavingSharedQuery(TestCase):
def setUp(self):
q = Queue(title='Q1', slug='q1')
q.save()
self.q = q
def test_cansavequery(self):
"""Can a query be saved"""
url = reverse('helpdesk_savequery')
self.client.login(username=get_staff_user().get_username(),
password='password')
response = self.client.post(url,
data={'title': 'ticket on my queue',
'queue':self.q,
'shared':'on',
'query_encoded':'KGRwMApWZmlsdGVyaW5nCnAxCihkcDIKVnN0YXR1c19faW4KcDMKKGxwNApJMQphSTIKYUkzCmFzc1Zzb3J0aW5nCnA1ClZjcmVhdGVkCnA2CnMu'})
self.assertEqual(response.status_code, 302)
self.assertTrue('tickets/?saved_query=1' in response.url)

View File

@ -1213,6 +1213,8 @@ run_report = staff_member_required(run_report)
def save_query(request):
title = request.POST.get('title', None)
shared = request.POST.get('shared', False)
if shared == 'on': # django only translates '1', 'true', 't' into True
shared = True
query_encoded = request.POST.get('query_encoded', None)
if not title or not query_encoded: