VulpesOS/gaia/apps/ftu/test/unit/data_mobile_test.js
OverSu b38dea0597 Publish Vulpes Preview 15 sources for desktop, Android and Tundra
Share Gaia assets and adapters, keep private profiles and development documents local, and update both public READMEs.
2026-09-30 23:13:03 +02:00

211 lines
5.7 KiB
JavaScript
Executable file

'use strict';
/* global UIManager, DataMobile, MocksHelper, Navigation */
require('/shared/test/unit/mocks/mock_navigator_moz_settings.js');
requireApp('ftu/test/unit/mock_ui_manager.js');
requireApp('ftu/js/navigation.js');
requireApp('ftu/js/data_mobile.js');
suite('mobile data >', function() {
var mocksHelperForDataMobile = new MocksHelper([
'UIManager'
]).init();
var realSettings,
settingToggleKey = 'ril.data.enabled',
settingApnKey = 'ril.data.apnSettings';
var TINY_TIMEOUT = 30;
suiteSetup(function() {
mocksHelperForDataMobile.suiteSetup();
realSettings = navigator.mozSettings;
navigator.mozSettings = window.MockNavigatorSettings;
DataMobile.init();
});
suiteTeardown(function() {
mocksHelperForDataMobile.suiteTeardown();
navigator.mozSettings = realSettings;
realSettings = null;
});
suite('Load APN values from database', function() {
var result;
setup(function(done) {
window.MockNavigatorSettings.mSettings[settingApnKey] = '[[]]';
DataMobile.getAPN(function(response) {
result = response;
done();
});
});
test('Values are loaded', function() {
assert.isNotNull(result);
});
test('Observer is added before', function() {
assert.isNotNull(window.MockNavigatorSettings.mObservers);
});
test('Observer is removed after', function() {
assert.isNotNull(window.MockNavigatorSettings.mRemovedObservers);
});
});
suite('Toggle status of mobile data', function() {
test('toggle status of mobile data', function(done) {
DataMobile.toggle(true, function() {
assert.isTrue(window.MockNavigatorSettings.mSettings[settingToggleKey]);
done();
});
});
test('toggle status of mobile data', function(done) {
DataMobile.toggle(false, function() {
assert.isFalse(
window.MockNavigatorSettings.mSettings[settingToggleKey]
);
done();
});
});
});
suite('Get data status', function() {
var KEY = 'ril.data.enabled';
var KEY_SV = 'ftu.ril.data.enabled';
var clock;
var realCurrentStep;
var DATA_SCREEN = 2;
var testCases = [
{
'title': 'On data screen. ' + KEY + '= true' + ' and ' + KEY_SV +
' and switch modify by user',
'currentStep': DATA_SCREEN,
'isModifiedByUser': true,
'key': true,
'keySV': true,
'expectedValue': true
},
{
'title': 'On data screen. ' + KEY + '= false' + ' and ' + KEY_SV +
' and switch modify by user',
'currentStep': DATA_SCREEN,
'isModifiedByUser': true,
'key': false,
'keySV': true,
'expectedValue': false
},
{
'title': 'On data screen. ' + KEY + '= true' + ' and not ' + KEY_SV,
'currentStep': DATA_SCREEN,
'key': true,
'expectedValue': true
},
{
'title': 'On data screen. ' + KEY + '= false' + ' and not ' + KEY_SV,
'currentStep': DATA_SCREEN,
'key': false,
'expectedValue': false
},
{
'title': 'On data screen. ' + KEY + '= true' + ' and ' + KEY_SV +
'= true',
'currentStep': DATA_SCREEN,
'key': true,
'keySV': true,
'expectedValue': true
},
{
'title': 'On data screen. ' + KEY + '= true' + ' and ' + KEY_SV +
'= false',
'currentStep': DATA_SCREEN,
'key': true,
'keySV': false,
'expectedValue': false
},
{
'title': 'On data screen. ' + KEY + '= false' + ' and ' + KEY_SV +
'= true',
'currentStep': DATA_SCREEN,
'key': false,
'keySV': true,
'expectedValue': true
},
{
'title': 'On data screen. ' + KEY + '= false' + ' and ' + KEY_SV +
'= false',
'currentStep': DATA_SCREEN,
'key': false,
'keySV': false,
'expectedValue': false
},
{
'title': 'Not on data screen. ' + KEY + '= true' + ' and ' + KEY_SV +
'= true',
'currentStep': DATA_SCREEN + 1,
'key': true,
'keySV': true,
'expectedValue': true
},
{
'title': 'Not on data screen. ' + KEY + '= true' + ' and ' + KEY_SV +
'= false',
'currentStep': DATA_SCREEN + 1,
'key': true,
'keySV': false,
'expectedValue': true
},
{
'title': 'Not on data screen. ' + KEY + '= false' + ' and ' + KEY_SV +
'= true',
'currentStep': DATA_SCREEN + 1,
'key': false,
'keySV': true,
'expectedValue': false
},
{
'title': 'Not on data screen. ' + KEY + '= false' + ' and ' + KEY_SV +
'= false',
'currentStep': DATA_SCREEN + 1,
'key': false,
'keySV': false,
'expectedValue': false
}
];
suiteSetup(function() {
realCurrentStep = Navigation.currentStep;
});
suiteTeardown(function() {
Navigation.currentStep = realCurrentStep;
});
setup(function() {
clock = this.sinon.useFakeTimers();
});
teardown(function() {
clock.restore();
});
testCases.forEach(function(testCase) {
test(testCase.title, function(done) {
Navigation.currentStep = testCase.currentStep;
UIManager.dataConnectionChangedByUsr = testCase.isModifiedByUser;
window.MockNavigatorSettings.mSettings[KEY] = testCase.key;
window.MockNavigatorSettings.mSettings[KEY_SV] = testCase.keySV;
DataMobile.getStatus(function() {});
clock.tick(TINY_TIMEOUT);
assert.equal(DataMobile.isDataAvailable, testCase.expectedValue);
done();
});
});
});
});