| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189 | 
							- module('Decorators');
 
- var Utils = require('select2/utils');
 
- test('overridden - method', function (assert) {
 
-   function BaseClass () {}
 
-   BaseClass.prototype.hello = function () {
 
-     return 'A';
 
-   };
 
-   function DecoratorClass () {}
 
-   DecoratorClass.prototype.hello = function () {
 
-     return 'B';
 
-   };
 
-   var DecoratedClass = Utils.Decorate(BaseClass, DecoratorClass);
 
-   var inst = new DecoratedClass();
 
-   assert.strictEqual(inst.hello(), 'B');
 
- });
 
- test('overridden - constructor', function (assert) {
 
-   function BaseClass () {
 
-     this.inherited = true;
 
-   }
 
-   BaseClass.prototype.hello = function () {
 
-     return 'A';
 
-   };
 
-   function DecoratorClass (decorated) {
 
-     this.called = true;
 
-   }
 
-   DecoratorClass.prototype.other = function () {
 
-     return 'B';
 
-   };
 
-   var DecoratedClass = Utils.Decorate(BaseClass, DecoratorClass);
 
-   var inst = new DecoratedClass();
 
-   assert.ok(inst.called);
 
-   assert.ok(!inst.inherited);
 
- });
 
- test('not overridden - method', function (assert) {
 
-   function BaseClass () {}
 
-   BaseClass.prototype.hello = function () {
 
-     return 'A';
 
-   };
 
-   function DecoratorClass () {}
 
-   DecoratorClass.prototype.other = function () {
 
-     return 'B';
 
-   };
 
-   var DecoratedClass = Utils.Decorate(BaseClass, DecoratorClass);
 
-   var inst = new DecoratedClass();
 
-   assert.strictEqual(inst.hello(), 'A');
 
- });
 
- test('not overridden - constructor', function (assert) {
 
-   function BaseClass () {
 
-     this.called = true;
 
-   }
 
-   BaseClass.prototype.hello = function () {
 
-     return 'A';
 
-   };
 
-   function DecoratorClass () {}
 
-   DecoratorClass.prototype.other = function () {
 
-     return 'B';
 
-   };
 
-   var DecoratedClass = Utils.Decorate(BaseClass, DecoratorClass);
 
-   var inst = new DecoratedClass();
 
-   assert.ok(inst.called);
 
- });
 
- test('inherited - method', function (assert) {
 
-   function BaseClass () {}
 
-   BaseClass.prototype.hello = function () {
 
-     return 'A';
 
-   };
 
-   function DecoratorClass (decorated) {}
 
-   DecoratorClass.prototype.hello = function (decorated) {
 
-     return 'B' + decorated.call(this) + 'C';
 
-   };
 
-   var DecoratedClass = Utils.Decorate(BaseClass, DecoratorClass);
 
-   var inst = new DecoratedClass();
 
-   assert.strictEqual(inst.hello(), 'BAC');
 
- });
 
- test('inherited - constructor', function (assert) {
 
-   function BaseClass () {
 
-     this.inherited = true;
 
-   }
 
-   BaseClass.prototype.hello = function () {
 
-     return 'A';
 
-   };
 
-   function DecoratorClass (decorated) {
 
-     this.called = true;
 
-     decorated.call(this);
 
-   }
 
-   DecoratorClass.prototype.other = function () {
 
-     return 'B';
 
-   };
 
-   var DecoratedClass = Utils.Decorate(BaseClass, DecoratorClass);
 
-   var inst = new DecoratedClass();
 
-   assert.ok(inst.called);
 
-   assert.ok(inst.inherited);
 
- });
 
- test('inherited - three levels', function (assert) {
 
-   function BaseClass (testArgument) {
 
-     this.baseCalled = true;
 
-     this.baseTestArgument = testArgument;
 
-   }
 
-   BaseClass.prototype.test = function (a) {
 
-     return a + 'c';
 
-   };
 
-   function MiddleClass (decorated, testArgument) {
 
-     this.middleCalled = true;
 
-     this.middleTestArgument = testArgument;
 
-     decorated.call(this, testArgument);
 
-   }
 
-   MiddleClass.prototype.test = function (decorated, a) {
 
-     return decorated.call(this, a + 'b');
 
-   };
 
-   function DecoratorClass (decorated, testArgument) {
 
-     this.decoratorCalled = true;
 
-     this.decoratorTestArgument = testArgument;
 
-     decorated.call(this, testArgument);
 
-   }
 
-   DecoratorClass.prototype.test = function (decorated, a) {
 
-     return decorated.call(this, a + 'a');
 
-   };
 
-   var DecoratedClass = Utils.Decorate(
 
-     Utils.Decorate(BaseClass, MiddleClass),
 
-     DecoratorClass
 
-   );
 
-   var inst = new DecoratedClass('test');
 
-   assert.ok(inst.baseCalled, 'The base class contructor was called');
 
-   assert.ok(inst.middleCalled, 'The middle class constructor was called');
 
-   assert.ok(inst.decoratorCalled, 'The decorator constructor was called');
 
-   assert.strictEqual(inst.baseTestArgument, 'test');
 
-   assert.strictEqual(inst.middleTestArgument, 'test');
 
-   assert.strictEqual(inst.decoratorTestArgument, 'test');
 
-   var out = inst.test('test');
 
-   assert.strictEqual(out, 'testabc');
 
- });
 
 
  |