Created
October 23, 2014 09:40
-
-
Save alivedise/480fcc6c67c707e23e23 to your computer and use it in GitHub Desktop.
AirplaneModeServiceHelperTest
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/* 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