blob: 5d0b8cc98588046a22229ee62b201677f7280a57 [file] [log] [blame]
describe("compass", function () {
var compass = require('cordova/plugin/compass'),
utils = require('cordova/utils'),
exec = require('cordova/exec');
beforeEach(function() {
exec.reset();
});
describe("when getting the current heading", function () {
it("logs an error and doesn't call exec when no success callback given", function () {
spyOn(console, "log");
compass.getCurrentHeading();
expect(console.log).toHaveBeenCalledWith("Compass Error: successCallback is not a function");
expect(exec).not.toHaveBeenCalledWith(jasmine.any(Function), undefined, "Compass", "getHeading", []);
});
it("logs an error and doesn't call exec when success isn't a function", function () {
spyOn(console, "log");
compass.getCurrentHeading(12);
expect(console.log).toHaveBeenCalledWith("Compass Error: successCallback is not a function");
expect(exec).not.toHaveBeenCalledWith(jasmine.any(Function), undefined, "Compass", "getHeading", []);
});
it("logs an error and doesn't call exec when error isn't a function", function () {
var func = function () {};
spyOn(console, "log");
compass.getCurrentHeading(func, 12);
expect(console.log).toHaveBeenCalledWith("Compass Error: errorCallback is not a function");
expect(exec).not.toHaveBeenCalledWith(func, 12, "Compass", "getHeading", []);
});
it("calls exec", function () {
var s = function () {},
f = function () {};
compass.getCurrentHeading(s, f);
expect(exec).toHaveBeenCalledWith(jasmine.any(Function), jasmine.any(Function), "Compass", "getHeading", [undefined]);
});
});
describe("watch heading", function () {
beforeEach(function () {
spyOn(window, "setInterval").andReturn("def");
});
it("logs an error and doesn't call exec when no success callback given", function () {
spyOn(console, "log");
compass.watchHeading();
expect(console.log).toHaveBeenCalledWith("Compass Error: successCallback is not a function");
expect(exec).not.toHaveBeenCalledWith(jasmine.any(Function), undefined, "Compass", "getHeading", []);
});
it("logs an error and doesn't call exec when success isn't a function", function () {
spyOn(console, "log");
compass.watchHeading(12);
expect(console.log).toHaveBeenCalledWith("Compass Error: successCallback is not a function");
expect(exec).not.toHaveBeenCalledWith(jasmine.any(Function), undefined, "Compass", "getHeading", []);
});
it("logs an error and doesn't call exec when error isn't a function", function () {
var func = function () {};
spyOn(console, "log");
compass.watchHeading(func, 12);
expect(console.log).toHaveBeenCalledWith("Compass Error: errorCallback is not a function");
expect(exec).not.toHaveBeenCalledWith(func, 12, "Compass", "getHeading", []);
});
it("generates and returns a uuid for the watch", function () {
spyOn(utils, "createUUID").andReturn(1234);
var result = compass.watchHeading(function () {});
expect(result).toBe(1234);
});
describe("setting the interval", function () {
it("is 100 when not provided", function () {
compass.watchHeading(function () {});
expect(window.setInterval).toHaveBeenCalledWith(jasmine.any(Function), 100);
});
it("is 100 when options provided with no frequency", function () {
compass.watchHeading(function () {}, null, {});
expect(window.setInterval).toHaveBeenCalledWith(jasmine.any(Function), 100);
});
it("is the provided value", function () {
compass.watchHeading(function () {}, null, {frequency: 200});
expect(window.setInterval).toHaveBeenCalledWith(jasmine.any(Function), 200);
});
});
it("gets the compass value for the given interval", function () {
var success = jasmine.createSpy(),
fail = jasmine.createSpy();
compass.watchHeading(success, fail);
//exec the interval callback!
window.setInterval.mostRecentCall.args[0]();
expect(exec).toHaveBeenCalledWith(jasmine.any(Function), jasmine.any(Function), "Compass", "getHeading", [undefined]);
});
});
describe("when clearing the watch", function () {
beforeEach(function () {
spyOn(window, "clearInterval");
});
it("doesn't clear anything if the timer doesn't exist", function () {
compass.clearWatch("Never Gonna Give you Up");
expect(window.clearInterval).not.toHaveBeenCalled();
});
it("can be called with no args", function () {
compass.clearWatch();
expect(window.clearInterval).not.toHaveBeenCalled();
});
});
});