aboutsummaryrefslogtreecommitdiffstats
path: root/extlib/leaflet/spec/suites/core/ClassSpec.js
diff options
context:
space:
mode:
authorJoar Wandborg <git@wandborg.com>2012-01-10 01:54:37 +0100
committerJoar Wandborg <git@wandborg.com>2012-01-25 23:42:04 +0100
commitc5ba5b0456a711d157e317f220e9c739226e7f50 (patch)
tree2800568ac8e484649a978e0fe7e682a8bcfe20d4 /extlib/leaflet/spec/suites/core/ClassSpec.js
parentc47a03b909ecd97cab5b144d0cab007b62b92a90 (diff)
downloadmediagoblin-c5ba5b0456a711d157e317f220e9c739226e7f50.tar.lz
mediagoblin-c5ba5b0456a711d157e317f220e9c739226e7f50.tar.xz
mediagoblin-c5ba5b0456a711d157e317f220e9c739226e7f50.zip
Installed leaflet in extlib
Diffstat (limited to 'extlib/leaflet/spec/suites/core/ClassSpec.js')
-rw-r--r--extlib/leaflet/spec/suites/core/ClassSpec.js120
1 files changed, 120 insertions, 0 deletions
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