mirror of
https://github.com/mozilla/gecko-dev.git
synced 2025-11-12 06:08:24 +02:00
125 lines
3.5 KiB
JavaScript
125 lines
3.5 KiB
JavaScript
/* This Source Code Form is subject to the terms of the Mozilla Public
|
|
* License, v. 2.0. If a copy of the MPL was not distributed with this file,
|
|
* You can obtain one at http://mozilla.org/MPL/2.0/. */
|
|
|
|
/* global loop, sinon */
|
|
/* jshint newcap:false */
|
|
|
|
var expect = chai.expect;
|
|
|
|
describe("loop.shared.utils", function() {
|
|
"use strict";
|
|
|
|
var sandbox;
|
|
var sharedUtils = loop.shared.utils;
|
|
|
|
beforeEach(function() {
|
|
sandbox = sinon.sandbox.create();
|
|
});
|
|
|
|
afterEach(function() {
|
|
sandbox.restore();
|
|
});
|
|
|
|
describe("Helper", function() {
|
|
var helper;
|
|
|
|
beforeEach(function() {
|
|
helper = new sharedUtils.Helper();
|
|
});
|
|
|
|
describe("#isIOS", function() {
|
|
it("should detect iOS", function() {
|
|
expect(helper.isIOS("iPad")).eql(true);
|
|
expect(helper.isIOS("iPod")).eql(true);
|
|
expect(helper.isIOS("iPhone")).eql(true);
|
|
expect(helper.isIOS("iPhone Simulator")).eql(true);
|
|
});
|
|
|
|
it("shouldn't detect iOS with other platforms", function() {
|
|
expect(helper.isIOS("MacIntel")).eql(false);
|
|
});
|
|
});
|
|
|
|
describe("#isFirefox", function() {
|
|
it("should detect Firefox", function() {
|
|
expect(helper.isFirefox("Firefox")).eql(true);
|
|
expect(helper.isFirefox("Gecko/Firefox")).eql(true);
|
|
expect(helper.isFirefox("Firefox/Gecko")).eql(true);
|
|
expect(helper.isFirefox("Gecko/Firefox/Chuck Norris")).eql(true);
|
|
});
|
|
|
|
it("shouldn't detect Firefox with other platforms", function() {
|
|
expect(helper.isFirefox("Opera")).eql(false);
|
|
});
|
|
});
|
|
|
|
describe("#isFirefoxOS", function() {
|
|
describe("without mozActivities", function() {
|
|
it("shouldn't detect FirefoxOS on mobile platform", function() {
|
|
expect(helper.isFirefoxOS("mobi")).eql(false);
|
|
});
|
|
|
|
it("shouldn't detect FirefoxOS on non mobile platform", function() {
|
|
expect(helper.isFirefoxOS("whatever")).eql(false);
|
|
});
|
|
});
|
|
|
|
describe("with mozActivities", function() {
|
|
var realMozActivity;
|
|
|
|
before(function() {
|
|
realMozActivity = window.MozActivity;
|
|
window.MozActivity = {};
|
|
});
|
|
|
|
after(function() {
|
|
window.MozActivity = realMozActivity;
|
|
});
|
|
|
|
it("should detect FirefoxOS on mobile platform", function() {
|
|
expect(helper.isFirefoxOS("mobi")).eql(true);
|
|
});
|
|
|
|
it("shouldn't detect FirefoxOS on non mobile platform", function() {
|
|
expect(helper.isFirefoxOS("whatever")).eql(false);
|
|
});
|
|
});
|
|
});
|
|
});
|
|
|
|
describe("#getBoolPreference", function() {
|
|
afterEach(function() {
|
|
navigator.mozLoop = undefined;
|
|
localStorage.removeItem("test.true");
|
|
});
|
|
|
|
describe("mozLoop set", function() {
|
|
beforeEach(function() {
|
|
navigator.mozLoop = {
|
|
getLoopBoolPref: function(prefName) {
|
|
return prefName === "test.true";
|
|
}
|
|
};
|
|
});
|
|
|
|
it("should return the mozLoop preference", function() {
|
|
expect(sharedUtils.getBoolPreference("test.true")).eql(true);
|
|
});
|
|
|
|
it("should not use the localStorage value", function() {
|
|
localStorage.setItem("test.false", true);
|
|
|
|
expect(sharedUtils.getBoolPreference("test.false")).eql(false);
|
|
});
|
|
});
|
|
|
|
describe("mozLoop not set", function() {
|
|
it("should return the localStorage value", function() {
|
|
localStorage.setItem("test.true", true);
|
|
|
|
expect(sharedUtils.getBoolPreference("test.true")).eql(true);
|
|
});
|
|
});
|
|
});
|
|
});
|