DocumentNodeElement meta attributes
[fnpeditor.git] / modules / documentCanvas / tests / classAttributes.test3.js
diff --git a/modules/documentCanvas/tests/classAttributes.test3.js b/modules/documentCanvas/tests/classAttributes.test3.js
new file mode 100644 (file)
index 0000000..49e0be0
--- /dev/null
@@ -0,0 +1,58 @@
+define([
+'libs/chai',
+'modules/documentCanvas/classAttributes'
+], function(chai, classAttributes) {
+   
+var stubDict = {
+    'klass': {
+        'prop': 'string'
+    },
+    'klass.sub1': {
+        'prop1': 'string'
+    },
+    'klass.sub1.sub2': {
+        'prop2': 'string'
+    }
+};
+
+var assert = chai.assert;
+
+describe('Class attributes', function() {
+    it('class has own attribute', function() {
+        assert.ok(classAttributes.hasMetaAttr('klass.sub1.sub2', 'prop2', stubDict));
+    });
+
+    it('class has attributes from parent classes', function() {
+        assert.ok(classAttributes.hasMetaAttr('klass.sub1.sub2', 'prop', stubDict));
+        assert.ok(classAttributes.hasMetaAttr('klass.sub1.sub2', 'prop1', stubDict));
+    });
+
+    it('list of class meta attributes', function() {
+        var attrList = classAttributes.getMetaAttrsList('klass.sub1.sub2', stubDict);
+
+        assert.deepEqual(attrList.own, [{name: 'prop2', type: 'string'}]);
+        assert.deepEqual(attrList.inheritedFrom['klass.sub1'], [{name: 'prop1', type: 'string'}]);
+        assert.deepEqual(attrList.inheritedFrom.klass, [{name: 'prop', type: 'string'}]);
+        assert.deepEqual(attrList.all.sort(), [
+            {name: 'prop', type: 'string'},
+            {name: 'prop1', type: 'string'},
+            {name: 'prop2', type: 'string'}
+            ].sort(), 'all values');
+    });
+
+    it('class without meta attrs', function() {
+        var attrList = classAttributes.getMetaAttrsList('some.class', {});
+        assert.deepEqual(attrList.own, [], 'empty own list');
+        assert.deepEqual(attrList.inheritedFrom, {}, 'empty inherited dict');
+        assert.deepEqual(attrList.all, [], 'empty all list');
+    });
+
+    it('empty class', function() {
+        var attrList = classAttributes.getMetaAttrsList('', {});
+        assert.deepEqual(attrList.own, [], 'empty own list');
+        assert.deepEqual(attrList.inheritedFrom, {}, 'empty inherited dict');
+        assert.deepEqual(attrList.all, [], 'empty all list');
+    });
+});
+
+});
\ No newline at end of file