Ember support for parent categories

This commit is contained in:
Robin Ward 2013-10-23 13:29:20 -04:00
parent c814fc16a3
commit 49a11e51df
4 changed files with 38 additions and 3 deletions

View File

@ -48,9 +48,18 @@ Discourse.Site.reopenClass(Discourse.Singleton, {
var result = this._super(obj);
if (result.categories) {
var byId = {}
result.categories = _.map(result.categories, function(c) {
return Discourse.Category.create(c);
byId[c.id] = Discourse.Category.create(c);
return byId[c.id];
});
// Associate the categories with their parents
result.categories.forEach(function (c) {
if (c.get('parent_category_id')) {
c.set('parentCategory', byId[c.get('parent_category_id')]);
}
})
}
if (result.trust_levels) {

View File

@ -10,6 +10,7 @@ class BasicCategorySerializer < ApplicationSerializer
:topic_url,
:hotness,
:read_restricted,
:permission
:permission,
:parent_category_id
end

View File

@ -10,4 +10,5 @@ test('slugFor', function(){
slugFor({id: 123, slug: ''}, "123-category", "It returns id-category for empty strings");
slugFor({id: 456}, "456-category", "It returns id-category for undefined slugs");
});
});

View File

@ -9,4 +9,28 @@ test('instance', function(){
present(site.get('flagTypes'), "The instance has a list of flag types");
present(site.get('trustLevels'), "The instance has a list of trust levels");
});
test('create categories', function() {
var site = Discourse.Site.create({
categories: [{ id: 1234, name: 'Test'},
{ id: 3456, name: 'Test Subcategory', parent_category_id: 1234},
{ id: 3456, name: 'Invalid Subcategory', parent_category_id: 6666}]
});
var categories = site.get('categories');
present(categories, "The categories are present");
equal(categories.length, 3, "it loaded all three categories");
var parent = categories.findBy('id', 1234);
present(parent, "it loaded the parent category");
blank(parent.get('parentCategory'), 'it has no parent category');
var subcategory = categories.findBy('id', 3456);
present(subcategory, "it loaded the subcategory");
equal(subcategory.get('parentCategory'), parent, "it has associated the child with the parent");
});