From 0fa9a50378ac30d11f374a24082e6934dab3e5db Mon Sep 17 00:00:00 2001 From: Guo Xiang Tan Date: Tue, 5 Jan 2016 15:15:04 +0800 Subject: [PATCH] FIX: Ignore case when comparing category name and search term. --- app/assets/javascripts/discourse/models/category.js.es6 | 8 ++++---- test/javascripts/models/category-test.js.es6 | 3 +++ 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/app/assets/javascripts/discourse/models/category.js.es6 b/app/assets/javascripts/discourse/models/category.js.es6 index 7ad63c5a936..45fb9bb0bac 100644 --- a/app/assets/javascripts/discourse/models/category.js.es6 +++ b/app/assets/javascripts/discourse/models/category.js.es6 @@ -302,17 +302,17 @@ Category.reopenClass({ const categories = Category.listByActivity(); const length = categories.length; var i; - var count = 0; var data = []; + term = term.toLowerCase(); const done = () => { return data.length === limit; - } + }; for (i = 0; i < length && !done(); i++) { const category = categories[i]; if ((emptyTerm) || - (!emptyTerm && category.get('name').indexOf(term) === 0)) { + (!emptyTerm && category.get('name').toLowerCase().indexOf(term) === 0)) { data.push(category); } } @@ -321,7 +321,7 @@ Category.reopenClass({ for (i = 0; i < length && !done(); i++) { const category = categories[i]; - if ((!emptyTerm && category.get('name').indexOf(term) > 0)) { + if ((!emptyTerm && category.get('name').toLowerCase().indexOf(term) > 0)) { if (data.indexOf(category) === -1) data.push(category); } } diff --git a/test/javascripts/models/category-test.js.es6 b/test/javascripts/models/category-test.js.es6 index 68e56da40d8..dc179e7e2f6 100644 --- a/test/javascripts/models/category-test.js.es6 +++ b/test/javascripts/models/category-test.js.es6 @@ -141,6 +141,9 @@ test('search', () => { deepEqual(result(''), [category1.get('id'), category2.get('id')], "orders by activity if no term is matched"); deepEqual(result('term'), [category1.get('id'), category2.get('id')], "orders by activity"); + category2.set('name', 'TeRm start'); + deepEqual(result('tErM'), [category2.get('id'), category1.get('id')], "ignores case of category name and search term"); + category2.set('name', 'term start'); deepEqual(result('term'), [category2.get('id'), category1.get('id')], "orders matching begin with and then contains");