diff --git a/src/dom_components/model/Component.js b/src/dom_components/model/Component.js index 8e99a8c92..55fb44fa9 100644 --- a/src/dom_components/model/Component.js +++ b/src/dom_components/model/Component.js @@ -514,9 +514,10 @@ const Component = Backbone.Model.extend(Styleable).extend( traits.each(trait => { found = 1; if (!trait.get('changeProp')) { + const name = trait.get('name'); const value = trait.getInitValue(); - if (value) { - attrs[trait.get('name')] = value; + if (name && value) { + attrs[name] = value; } } }); diff --git a/test/specs/dom_components/model/Component.js b/test/specs/dom_components/model/Component.js index ae5da0f8e..c3ced43f3 100644 --- a/test/specs/dom_components/model/Component.js +++ b/test/specs/dom_components/model/Component.js @@ -67,6 +67,21 @@ module.exports = { expect(obj.get('stylable')).toEqual(true); }); + it('Sets attributes correctly from traits', () => { + obj.set('traits', [ + { + label: 'Title', + name: 'title', + value: 'The title' + }, + { + label: 'Context', + value: 'primary' + } + ]); + expect(obj.get('attributes')).toEqual({ title: 'The title' }); + }); + it('Has expected name', () => { expect(obj.getName()).toEqual('Box'); });