smartxml: DocumentElement.parents
[fnpeditor.git] / src / editor / modules / documentCanvas / tests / classAttributes.test.js
1 define([
2 'libs/chai',
3 'modules/documentCanvas/classAttributes'
4 ], function(chai, classAttributes) {
5    
6 var stubDict = {
7     'klass': {
8         'prop': 'string'
9     },
10     'klass.sub1': {
11         'prop1': 'string'
12     },
13     'klass.sub1.sub2': {
14         'prop2': 'string'
15     }
16 };
17
18 var assert = chai.assert;
19
20 describe('Class attributes', function() {
21     it('class has own attribute', function() {
22         assert.ok(classAttributes.hasMetaAttr('klass.sub1.sub2', 'prop2', stubDict));
23     });
24
25     it('class has attributes from parent classes', function() {
26         assert.ok(classAttributes.hasMetaAttr('klass.sub1.sub2', 'prop', stubDict));
27         assert.ok(classAttributes.hasMetaAttr('klass.sub1.sub2', 'prop1', stubDict));
28     });
29
30     it('list of class meta attributes', function() {
31         var attrList = classAttributes.getMetaAttrsList('klass.sub1.sub2', stubDict);
32
33         assert.deepEqual(attrList.own, [{name: 'prop2', type: 'string'}]);
34         assert.deepEqual(attrList.inheritedFrom['klass.sub1'], [{name: 'prop1', type: 'string'}]);
35         assert.deepEqual(attrList.inheritedFrom.klass, [{name: 'prop', type: 'string'}]);
36         assert.deepEqual(attrList.all.sort(), [
37             {name: 'prop', type: 'string'},
38             {name: 'prop1', type: 'string'},
39             {name: 'prop2', type: 'string'}
40             ].sort(), 'all values');
41     });
42
43     it('class without meta attrs', function() {
44         var attrList = classAttributes.getMetaAttrsList('some.class', {});
45         assert.deepEqual(attrList.own, [], 'empty own list');
46         assert.deepEqual(attrList.inheritedFrom, {}, 'empty inherited dict');
47         assert.deepEqual(attrList.all, [], 'empty all list');
48     });
49
50     it('empty class', function() {
51         var attrList = classAttributes.getMetaAttrsList('', {});
52         assert.deepEqual(attrList.own, [], 'empty own list');
53         assert.deepEqual(attrList.inheritedFrom, {}, 'empty inherited dict');
54         assert.deepEqual(attrList.all, [], 'empty all list');
55     });
56 });
57
58 });