You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cordova.apache.org by gt...@apache.org on 2012/11/09 20:43:07 UTC

[3/3] js commit: Unit testing blackberry specific platform code

Unit testing blackberry specific platform code

- added tests for qnx manager
- added tests for blackberry exec
- added symlink for blackberry exec
- added a platform for the test platform


Project: http://git-wip-us.apache.org/repos/asf/incubator-cordova-js/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-cordova-js/commit/97995336
Tree: http://git-wip-us.apache.org/repos/asf/incubator-cordova-js/tree/97995336
Diff: http://git-wip-us.apache.org/repos/asf/incubator-cordova-js/diff/97995336

Branch: refs/heads/master
Commit: 97995336f692cdec462388209fb328dce78fb7a0
Parents: e67e1a8
Author: Gord Tanner <gt...@gmail.com>
Authored: Wed Nov 7 14:54:17 2012 -0500
Committer: Gord Tanner <gt...@gmail.com>
Committed: Wed Nov 7 14:54:17 2012 -0500

----------------------------------------------------------------------
 lib/blackberry/exec.js              |    1 -
 lib/test/blackberryexec.js          |    1 +
 lib/test/platform.js                |   27 +++++
 test/blackberry/qnx/test.manager.js |   56 ++++++++++
 test/blackberry/test.exec.js        |  162 ++++++++++++++++++++++++++++++
 5 files changed, 246 insertions(+), 1 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-cordova-js/blob/97995336/lib/blackberry/exec.js
----------------------------------------------------------------------
diff --git a/lib/blackberry/exec.js b/lib/blackberry/exec.js
index 8a27baf..7ef7344 100644
--- a/lib/blackberry/exec.js
+++ b/lib/blackberry/exec.js
@@ -54,7 +54,6 @@ module.exports = function(success, fail, service, action, args) {
                 catch (e) {
                     console.log("Error in success callback: "+cordova.callbackId+" = "+e);
                 }
-
             }
             return v.message;
         } else if (v.status == cordova.callbackStatus.NO_RESULT) {

http://git-wip-us.apache.org/repos/asf/incubator-cordova-js/blob/97995336/lib/test/blackberryexec.js
----------------------------------------------------------------------
diff --git a/lib/test/blackberryexec.js b/lib/test/blackberryexec.js
new file mode 120000
index 0000000..f00795f
--- /dev/null
+++ b/lib/test/blackberryexec.js
@@ -0,0 +1 @@
+../blackberry/exec.js
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-cordova-js/blob/97995336/lib/test/platform.js
----------------------------------------------------------------------
diff --git a/lib/test/platform.js b/lib/test/platform.js
new file mode 100644
index 0000000..2688ddd
--- /dev/null
+++ b/lib/test/platform.js
@@ -0,0 +1,27 @@
+/*
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *
+*/
+
+module.exports = {
+    id: "test platform",
+    runtime: function () {},
+    initialize: function () {},
+    objects: {}
+};

http://git-wip-us.apache.org/repos/asf/incubator-cordova-js/blob/97995336/test/blackberry/qnx/test.manager.js
----------------------------------------------------------------------
diff --git a/test/blackberry/qnx/test.manager.js b/test/blackberry/qnx/test.manager.js
new file mode 100644
index 0000000..5e5571a
--- /dev/null
+++ b/test/blackberry/qnx/test.manager.js
@@ -0,0 +1,56 @@
+/*
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *
+*/
+
+describe("blackberry qnx manager", function () {
+    var manager = require('cordova/plugin/qnx/manager');
+
+    it("calls the plugin", function () {
+        var device = require('cordova/plugin/qnx/device'),
+            win = jasmine.createSpy('win'),
+            fail = jasmine.createSpy('fail'),
+            args = {};
+
+        spyOn(device, "getDeviceInfo");
+
+        manager.exec(win, fail, "Device", "getDeviceInfo", args);
+        expect(device.getDeviceInfo).toHaveBeenCalledWith(args, win, fail);
+    });
+
+    it("returns the result of the plugin", function () {
+        var camera = require('cordova/plugin/qnx/camera');
+        spyOn(camera, "takePicture").andReturn("duckface");
+        expect(manager.exec(null, null, "Camera", "takePicture")).toBe("duckface");
+    });
+
+    it("returns class not found when no plugin", function () {
+        expect(manager.exec(null, null, "Ruby", "method_missing")).toEqual({
+           status: cordova.callbackStatus.CLASS_NOT_FOUND_EXCEPTION,
+           message: "Class Ruby cannot be found"
+        });
+    });
+
+    it("returns invalid action when no action", function () {
+        expect(manager.exec(null, null, "Camera", "makePonies")).toEqual({
+            status: cordova.callbackStatus.INVALID_ACTION,
+            message: "Action not found: makePonies"
+        });
+    });
+});

http://git-wip-us.apache.org/repos/asf/incubator-cordova-js/blob/97995336/test/blackberry/test.exec.js
----------------------------------------------------------------------
diff --git a/test/blackberry/test.exec.js b/test/blackberry/test.exec.js
new file mode 100644
index 0000000..755b067
--- /dev/null
+++ b/test/blackberry/test.exec.js
@@ -0,0 +1,162 @@
+/*
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *
+*/
+
+describe("blackberry exec", function () {
+    var exec = require('cordova/blackberryexec'),
+        cordova = require('cordova');
+
+    it("calls the managers exec for the given runtime", function () {
+        var platform = require('cordova/platform'),
+            manager = require('cordova/plugin/qnx/manager'),
+            win = jasmine.createSpy("win"),
+            fail = jasmine.createSpy("fail"),
+            args = {};
+
+        spyOn(platform, "runtime").andReturn("qnx");
+        spyOn(manager, "exec");
+
+        exec(win, fail, "foo", "bar", args);
+
+        expect(manager.exec).toHaveBeenCalledWith(win, fail, "foo", "bar", args);
+    });
+
+    describe("when the callback status is ok", function () {
+        var platform = require('cordova/platform'),
+            manager = require('cordova/plugin/qnx/manager');
+
+        beforeEach(function () {
+            spyOn(platform, "runtime").andReturn("qnx");
+            spyOn(manager, "exec").andReturn({
+                status: cordova.callbackStatus.OK,
+                message: "sometimes I drink from the milk carton"
+            });
+        });
+
+        it("returns the message", function () {
+            expect(exec(null, null)).toBe("sometimes I drink from the milk carton");
+        });
+
+        it("calls the success callback with the message", function () {
+            var success = jasmine.createSpy("success");
+            exec(success);
+            expect(success).toHaveBeenCalledWith("sometimes I drink from the milk carton");
+        });
+
+        it("doesn't call the error callback", function () {
+            var error = jasmine.createSpy("error");
+            exec(null, error);
+            expect(error).not.toHaveBeenCalled();
+        });
+
+        it("logs any errors from the success callback", function () {
+            spyOn(console, "log");
+
+            var success = jasmine.createSpy("success").andThrow("oh noes!");
+            cordova.callbackId = 1;
+            exec(success);
+
+            expect(console.log).toHaveBeenCalledWith("Error in success callback: 1 = oh noes!");
+        });
+
+        it("still returns the message even if there was an exception in success", function () {
+            spyOn(console, "log");
+            var success = jasmine.createSpy("success").andThrow("oh noes!");
+            expect(exec(success)).toBe("sometimes I drink from the milk carton");
+        });
+    });
+
+    describe("when the callback status is no_result", function () {
+        var platform = require('cordova/platform'),
+            manager = require('cordova/plugin/qnx/manager');
+
+        beforeEach(function () {
+            spyOn(platform, "runtime").andReturn("qnx");
+            spyOn(manager, "exec").andReturn({
+                status: cordova.callbackStatus.NO_RESULT,
+                message: "I know what you did last summer"
+            });
+        });
+
+        it("returns undefined", function () {
+            expect(exec()).not.toBeDefined();
+        });
+
+        it("doesn't call the success callback", function () {
+            var success = jasmine.createSpy("success");
+            exec(success);
+            expect(success).not.toHaveBeenCalled();
+        });
+
+        it("doesn't call the error callback", function () {
+            var error = jasmine.createSpy("error");
+            exec(null, error);
+            expect(error).not.toHaveBeenCalled();
+        });
+    });
+
+    describe("when the callback status is anything else", function () {
+        var platform = require('cordova/platform'),
+            manager = require('cordova/plugin/qnx/manager');
+
+        beforeEach(function () {
+            spyOn(console, "log");
+            spyOn(platform, "runtime").andReturn("qnx");
+            spyOn(manager, "exec").andReturn({
+                status: "poop",
+                message: "the bed"
+            });
+        });
+
+        it("returns null", function () {
+            expect(exec()).toBeNull();
+        });
+
+        it("logs the status and message", function () {
+            exec();
+            expect(console.log).toHaveBeenCalledWith("Error: Status=poop Message=the bed");
+        });
+
+        it("calls the fail callback with the message", function () {
+            var fail = jasmine.createSpy("fail");
+            exec(null, fail);
+            expect(fail).toHaveBeenCalledWith("the bed");
+        });
+
+        it("doesn't call the success callback", function () {
+            var success = jasmine.createSpy("success");
+            exec(success);
+            expect(success).not.toHaveBeenCalled();
+        });
+
+        it("logs the exception from the error callback", function () {
+            var error = jasmine.createSpy("error").andThrow("aww snap");
+            cordova.callbackId = 1;
+            exec(null, error);
+
+            expect(console.log).toHaveBeenCalledWith("Error in error callback: 1 = aww snap");
+        });
+
+        it("still returns null when there is an error", function () {
+            var error = jasmine.createSpy("error").andThrow("aww snap");
+            expect(exec(null, error)).toBeNull();
+        });
+    });
+});