aboutsummaryrefslogtreecommitdiffstats
path: root/extlib/leaflet/spec/suites/core/ClassSpec.js
diff options
context:
space:
mode:
authorAditi <aditi.iitr@gmail.com>2013-06-21 23:09:22 +0530
committerAditi <aditi.iitr@gmail.com>2013-06-21 23:09:22 +0530
commit2719d546a57c2332e36cc056ac80ec5d79672c1a (patch)
tree1f62ab8f761026d4faa5442032df133fc90d47f2 /extlib/leaflet/spec/suites/core/ClassSpec.js
parent1a6f065419290b3f4234ce4a89bb2c46b13e8a12 (diff)
parent92b22e7deac547835f69168f97012b52e87b6de4 (diff)
downloadmediagoblin-2719d546a57c2332e36cc056ac80ec5d79672c1a.tar.lz
mediagoblin-2719d546a57c2332e36cc056ac80ec5d79672c1a.tar.xz
mediagoblin-2719d546a57c2332e36cc056ac80ec5d79672c1a.zip
Merge remote-tracking branch 'cweb/master'
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