Skip to content
Snippets Groups Projects
Commit cf954b28 authored by Alice Heaton's avatar Alice Heaton :speech_balloon:
Browse files

Ensure that drop downs use the short name version and are sorted alphabetically.

parent b75c6c75
No related branches found
No related tags found
No related merge requests found
......@@ -158,6 +158,32 @@ def test_get_category_options_with_no_taxonomy_returns_all():
assert (other_term.name, other_term.long_name) in options
@pytest.mark.django_db
def test_get_category_options_orders_by_lowercase_name():
# TODO: Rewrite tests to use transport layer
ebola_questions = TaxonomyFactory(name="Ebola Questions")
test_term_values = [
('test a1', '1'), ('test b1', '2'),
('test A2', '3'), ('test B2', '4')
]
for test_value in test_term_values:
TermFactory(
name=test_value[0],
long_name=test_value[1],
taxonomy=ebola_questions
)
view = ViewItems()
options = view.get_category_options(ebola_questions.id)
# Make sure we are only comparing with out test values!
options = [o for o in options if o in test_term_values]
# Expected is the list ordered by lowercase short name.
expected = sorted(test_term_values, key=lambda e: e[0].lower())
assert options == expected
def test_views_item_get_request_parameters_renames_items_of_active_location():
query = QueryDict(
'action=something-bottom&item-top=top-value&item-bottom=bottom-value'
......@@ -186,12 +212,12 @@ def test_views_item_get_request_parameters_sets_default_location():
def test_views_item_get_request_parameters_sets_default_action_and_location():
query = QueryDict(
'item-top=value&item-bottom=unchanged'
'item-top=top-value&item-bottom=bottom-value'
)
expected = {
'action': 'none',
'item': 'value',
'item-bottom': 'unchanged'
'item': 'top-value',
'item-bottom': 'bottom-value'
}
actual = ViewItems.get_request_parameters(query)
assert actual.dict() == expected
import re
from collections import OrderedDict
from django.contrib import messages
from django.core.urlresolvers import reverse
from django.http import HttpResponseRedirect, QueryDict
......@@ -89,14 +91,19 @@ class ViewItems(SingleTableView):
def get_category_options(self, categories_id=None):
# TODO: Use data layer
terms = self.get_matching_terms(categories_id)
return tuple((t.name, t.long_name) for t in terms)
def get_matching_terms(self, categories_id):
if categories_id is None:
return Term.objects.all()
return (Term.objects
.extra(select={'name_lower': 'lower(name)'})
.order_by('name_lower')
.all())
return Term.objects.filter(taxonomy__id=categories_id)
return (Term.objects
.extra(select={'name_lower': 'lower(name)'})
.order_by('name_lower')
.filter(taxonomy__id=categories_id))
def get_table(self, **kwargs):
# TODO: Filter on taxonomy
......@@ -138,7 +145,7 @@ class ViewItems(SingleTableView):
"""
return {
'label': label,
'items': dict(
'items': OrderedDict(
[(prefix + short_name, short_name)
for short_name, long_name in items]
)
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment