diff --git a/app/assets/javascripts/discourse/models/category.js b/app/assets/javascripts/discourse/models/category.js index ca03fdc61..2df38bcdb 100644 --- a/app/assets/javascripts/discourse/models/category.js +++ b/app/assets/javascripts/discourse/models/category.js @@ -209,9 +209,14 @@ Discourse.Category.reopenClass({ }, findByIds: function(ids){ - return ids.map(function(id){ - return Discourse.Category.findById(id); + var categories = []; + _.each(ids, function(id){ + var found = Discourse.Category.findById(id); + if(found){ + categories.push(found); + } }); + return categories; }, findBySlug: function(slug, parentSlug) { diff --git a/test/javascripts/models/category_test.js b/test/javascripts/models/category_test.js index 048304838..19a5dd313 100644 --- a/test/javascripts/models/category_test.js +++ b/test/javascripts/models/category_test.js @@ -39,6 +39,15 @@ test('findBySlug', function() { blank(Discourse.Category.findBySlug('luke', 'leia'), 'luke is blank with an incorrect parent'); }); +test('findByIds', function(){ + var categories = [ + Discourse.Category.create({id: 1}), + Discourse.Category.create({id: 2})]; + + this.stub(Discourse.Category, 'list').returns(categories); + deepEqual(Discourse.Category.findByIds([1,2,3]), categories); +}); + test('postCountStats', function() { var category1 = Discourse.Category.create({id: 1, slug: 'unloved', posts_year: 2, posts_month: 0, posts_week: 0, posts_day: 0}), category2 = Discourse.Category.create({id: 2, slug: 'hasbeen', posts_year: 50, posts_month: 4, posts_week: 0, posts_day: 0}),