Skip to content

Instantly share code, notes, and snippets.

@alivedise
Created October 23, 2014 09:40
Show Gist options
  • Save alivedise/480fcc6c67c707e23e23 to your computer and use it in GitHub Desktop.
Save alivedise/480fcc6c67c707e23e23 to your computer and use it in GitHub Desktop.
AirplaneModeServiceHelperTest
/* global MocksHelper, System, BaseModule, MockPromise */
'use strict';
requireApp('system/test/unit/mock_bluetooth.js');
requireApp('system/test/unit/mock_wifi_manager.js');
requireApp('system/test/unit/mock_settings_core.js');
requireApp('system/js/system.js');
requireApp('system/js/base_module.js');
requireApp('system/js/airplane_mode_service_helper.js');
var mocksForAirplaneModeServiceHelper = new MocksHelper([
'Bluetooth',
'WifiManager'
]).init();
suite('system/airplane_mode_service_helper.js', function() {
var subject;
var services = ['ril.data'];//, 'geolocation', 'wifi', 'nfc', 'bluetooth'];
mocksForAirplaneModeServiceHelper.attachTestHelpers();
setup(function() {
MockSettingsCore.mSetup();
subject = BaseModule.instantiate('AirplaneModeServiceHelper');
});
teardown(function() {
MockSettingsCore.mTeardown();
subject.stop();
});
suite('init', function() {
setup(function() {
subject.start();
});
servicesIterator(function(key) {
test('should set initial values of _settings for ' + key,
function(done) {
var setting = {};
console.log(key);
setting[key + '.enabled'] = true;
console.log(setting);
MockSettingsCore.mTriggerSettingsChange(setting).then(function() {
assert.equal(getSettingOnServiceHelper(key + '.enabled'), true);
MockSettingsCore.mAwait('set').then(function() {
MockSettingsCore.mCommit().then(function() {
assert.isFalse(getSettingOnServiceHelper(key + '.suspended'));
done();
});
});
});
});
});
});
suite('_suspend should work as expected when services are enabled',
function() {
var fakeNfc = {};
suiteSetup(function() {
if (!navigator.mozNfc) {
navigator.mozNfc = fakeNfc;
}
});
suiteTeardown(function() {
if (navigator.mozNfc === fakeNfc) {
delete navigator.mozNfc;
}
});
setup(function(done) {
subject.start();
var setting = {};
servicesIterator(function(key) {
setting[key + '.enabled'] = true;
setting[key + '.suspended'] = false;
});
MockSettingsCore.mTriggerSettingsChange(setting).then(function() {
MockSettingsCore.mAwait('set').then(function() {
MockSettingsCore.mCommit().then(function() {
done();
});
});
});
});
test('turn on airplane mode, thus all ".enabled" should be false ' +
'and all ".suspended" should be true', function(done) {
console.log('ext settings', MockSettingsCore.mSettings);
console.log('int settings', subject._settings);
subject.updateStatus(true);
console.log('committing.....');
MockSettingsCore.mCommit(key + '.enabled').then(function() {
servicesIterator(function(key) {
assert.ok(MockSettingsCore.mSettings[key + '.enabled'] === false, key);
assert.ok(MockSettingsCore.mSettings[key + '.suspended'] === true);
});
done();
});
});
});
/*
suite('_unsuspend should work as expected when airplane mode is on',
function() {
setup(function() {
setAllSettingsOnServiceHelper({enabled: false, suspended: true});
});
test('turn on airplane mode, thus all ".enabled" should be false ' +
'and all ".suspended" should be true', function() {
var settingsDB = {};
this.sinon.stub(System, 'request', function() {
var args = Array.prototype.splice.call(arguments, 0);
for (var key in args[1]) {
settingsDB[key] = args[1][key];
}
return new Promise(function() {});
});
// enable airplane mode, thus suspend all services
servicesIterator(function(key) {
subject._unsuspend(key + '.suspended');
});
servicesIterator(function(key) {
assert.ok(settingsDB[key + '.suspended'] === false);
});
});
});
suite('_restore should turn on the setting if it is enabled' +
'before airplane mode is enabled', function() {
setup(function() {
// turn on all services
setAllSettingsOnServiceHelper({enabled: true, suspended: false});
// enable airplane mode, thus suspend all services
servicesIterator(function(key) {
subject._suspend(key);
});
});
test('turn on all services, then turn on airplane mode, ' +
'and turn off airplane mode. All ".suspended" and ".enabled" ' +
'should be just the same', function() {
subject.updateStatus(false);
// all '.suspended' should be false, and all '.enabled' should be true
servicesIterator(function(key) {
assert.ok(
getSettingOnServiceHelper(key + '.enabled') === true);
assert.ok(
getSettingOnServiceHelper(key + '.suspended') === false);
});
});
});*/
// test helpers
function servicesIterator(callback) {
services.forEach(callback);
}
function getSettingOnServiceHelper(key) {
return subject._settings[key];
}
});
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment