From c5ba5b0456a711d157e317f220e9c739226e7f50 Mon Sep 17 00:00:00 2001 From: Joar Wandborg Date: Tue, 10 Jan 2012 01:54:37 +0100 Subject: Installed leaflet in extlib --- extlib/leaflet/spec/suites/core/ClassSpec.js | 120 +++++++++++++++++++++++++++ 1 file changed, 120 insertions(+) create mode 100644 extlib/leaflet/spec/suites/core/ClassSpec.js (limited to 'extlib/leaflet/spec/suites/core/ClassSpec.js') diff --git a/extlib/leaflet/spec/suites/core/ClassSpec.js b/extlib/leaflet/spec/suites/core/ClassSpec.js new file mode 100644 index 00000000..7a289154 --- /dev/null +++ b/extlib/leaflet/spec/suites/core/ClassSpec.js @@ -0,0 +1,120 @@ +describe("Class", function() { + + describe("#extend", function() { + var Klass, + constructor, + method; + + beforeEach(function() { + constructor = jasmine.createSpy(), + method = jasmine.createSpy(); + + Klass = L.Class.extend({ + statics: {bla: 1}, + includes: {mixin: true}, + + initialize: constructor, + foo: 5, + bar: method + }); + }); + + it("should create a class with the given constructor & properties", function() { + var a = new Klass(); + + expect(constructor).toHaveBeenCalled(); + expect(a.foo).toEqual(5); + + a.bar(); + + expect(method).toHaveBeenCalled(); + }); + + it("should inherit parent classes' constructor & properties", function() { + var Klass2 = Klass.extend({baz: 2}); + + var b = new Klass2(); + + expect(b instanceof Klass).toBeTruthy(); + expect(b instanceof Klass2).toBeTruthy(); + + expect(constructor).toHaveBeenCalled(); + expect(b.baz).toEqual(2); + + b.bar(); + + expect(method).toHaveBeenCalled(); + }); + + it("should grant the ability to call parent methods, including constructor", function() { + var Klass2 = Klass.extend({ + initialize: function() {}, + bar: function() {} + }); + + var b = new Klass2(); + + expect(constructor).not.toHaveBeenCalled(); + b.superclass.initialize.call(this); + expect(constructor).toHaveBeenCalled(); + + b.superclass.bar.call(this); + expect(method).toHaveBeenCalled(); + }); + + it("should support static properties", function() { + expect(Klass.bla).toEqual(1); + }); + + it("should inherit parent static properties", function() { + var Klass2 = Klass.extend({}); + + expect(Klass2.bla).toEqual(1); + }); + + it("should include the given mixin", function() { + var a = new Klass(); + expect(a.mixin).toBeTruthy(); + }); + + it("should be able to include multiple mixins", function() { + var Klass2 = L.Class.extend({ + includes: [{mixin: true}, {mixin2: true}] + }); + var a = new Klass2(); + + expect(a.mixin).toBeTruthy(); + expect(a.mixin2).toBeTruthy(); + }); + + it("should grant the ability to include the given mixin", function() { + Klass.include({mixin2: true}); + + var a = new Klass(); + expect(a.mixin2).toBeTruthy(); + }); + + it("should merge options instead of replacing them", function() { + var KlassWithOptions1 = L.Class.extend({ + options: { + foo1: 1, + foo2: 2 + } + }); + var KlassWithOptions2 = KlassWithOptions1.extend({ + options: { + foo2: 3, + foo3: 4 + } + }); + + var a = new KlassWithOptions2(); + + expect(a.options).toEqual({ + foo1: 1, + foo2: 3, + foo3: 4 + }); + }); + }); +}); \ No newline at end of file -- cgit v1.2.3