eb7ad89a18dd6cc1f82c9e6d7ac7f81f72f14098
[fnpeditor.git] / src / editor / modules / documentCanvas / canvas / elementsRegister.test.js
1 define(function(require) {
2     
3 'use strict';
4 /* globals describe, it */
5
6
7 var ElementsRegister = require('./elementsRegister.js'),
8     documentElement = require('./documentElement.js'),
9     chai = require('libs/chai');
10
11 var expect = chai.expect;
12
13 describe('Elements register', function() {
14     it('registers element for a tag', function() {
15         var register = new ElementsRegister(documentElement.DocumentNodeElement),
16             prototype = {testMethod: function(){}};
17
18         register.register({
19             tag: 'div',
20             prototype: prototype,
21         });
22
23         var Element = register.getElement({tag: 'div'});
24         expect(Element.prototype.testMethod).to.equal(prototype.testMethod, '1');
25         expect(Element.prototype instanceof documentElement.DocumentNodeElement).to.equal(true, '2');
26     });
27     it('registers element for a class', function() {
28         var register = new ElementsRegister(documentElement.DocumentNodeElement),
29             prototype = {testMethod: function(){}};
30
31         register.register({
32             tag: 'div',
33             klass: 'a.b',
34             prototype: prototype,
35         });
36         var Element = register.getElement({tag: 'div', klass: 'a.b.c'});
37         expect(Element.prototype.testMethod).to.equal(prototype.testMethod, '1');
38         expect(Element.prototype instanceof documentElement.DocumentNodeElement).to.equal(true, '2');
39     });
40     it('allows inheriting from selected element', function() {
41         var register = new ElementsRegister(documentElement.DocumentNodeElement),
42             method1 = function() {},
43             method2 = function() {};
44
45         register.register({
46             tag: 'div',
47             prototype: {method1: method1}
48         });
49
50         register.register({
51             tag: 'div',
52             klass: 'a',
53             prototype: {method2: method2},
54             extending: {tag: 'div'}
55         });
56
57         var Element = register.getElement({tag: 'div', klass: 'a'});
58         expect(Element.prototype.method2).to.equal(method2, '2');
59         expect(Element.prototype instanceof register.getElement({tag: 'div'})).to.equal(true, '2');
60     });
61 });
62
63
64 });