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.
This commit is contained in:
parent
93e3a48004
commit
b38dea0597
25901 changed files with 9982925 additions and 369 deletions
294
gaia/apps/system/test/unit/quick_settings_test.js
Executable file
294
gaia/apps/system/test/unit/quick_settings_test.js
Executable file
|
|
@ -0,0 +1,294 @@
|
|||
'use strict';
|
||||
/* global MockL10n, MockNavigatorMozMobileConnections,
|
||||
MockNavigatorSettings, MocksHelper, MockSettingsListener,
|
||||
MockWifiManager, QuickSettings, MockService */
|
||||
|
||||
require('/test/unit/mock_activity.js');
|
||||
require('/shared/test/unit/mocks/mock_l10n.js');
|
||||
require('/test/unit/mock_wifi_manager.js');
|
||||
require('/shared/test/unit/mocks/mock_service.js');
|
||||
require('/shared/test/unit/mocks/mock_settings_listener.js');
|
||||
require('/shared/test/unit/mocks/mock_navigator_moz_settings.js');
|
||||
require('/shared/test/unit/mocks/mock_navigator_moz_mobile_connections.js');
|
||||
|
||||
require('/js/quick_settings.js');
|
||||
|
||||
var mocksForQuickSettings = new MocksHelper([
|
||||
'Service',
|
||||
'MozActivity',
|
||||
'SettingsListener',
|
||||
'NavigatorMozMobileConnections'
|
||||
]).init();
|
||||
|
||||
suite('quick settings > ', function() {
|
||||
var realWifiManager;
|
||||
var realL10n;
|
||||
var realSettings;
|
||||
var realMozMobileConnections;
|
||||
var fakeQuickSettingsNode;
|
||||
var realAirplaneMode;
|
||||
var subject;
|
||||
|
||||
mocksForQuickSettings.attachTestHelpers();
|
||||
|
||||
suiteSetup(function() {
|
||||
realWifiManager = navigator.mozWifiManager;
|
||||
navigator.mozWifiManager = MockWifiManager;
|
||||
realSettings = navigator.mozSettings;
|
||||
navigator.mozSettings = MockNavigatorSettings;
|
||||
realL10n = navigator.mozL10n;
|
||||
navigator.mozL10n = MockL10n;
|
||||
realMozMobileConnections = navigator.mozMobileConnections;
|
||||
navigator.mozMobileConnections = MockNavigatorMozMobileConnections;
|
||||
});
|
||||
|
||||
suiteTeardown(function() {
|
||||
navigator.mozWifiManager = realWifiManager;
|
||||
navigator.MozMobileConnections = realMozMobileConnections;
|
||||
navigator.mozL10n = realL10n;
|
||||
navigator.mozSettings = realSettings;
|
||||
window.AirplaneMode = realAirplaneMode;
|
||||
});
|
||||
|
||||
setup(function() {
|
||||
MockNavigatorMozMobileConnections.mAddMobileConnection();
|
||||
|
||||
fakeQuickSettingsNode = document.createElement('div');
|
||||
fakeQuickSettingsNode.id = 'quick-settings';
|
||||
document.body.appendChild(fakeQuickSettingsNode);
|
||||
|
||||
subject = new QuickSettings();
|
||||
|
||||
subject.ELEMENTS.forEach(function testAddElement(elementName) {
|
||||
var elt = document.createElement('div');
|
||||
elt.id = 'quick-settings-' + elementName;
|
||||
fakeQuickSettingsNode.appendChild(elt);
|
||||
});
|
||||
subject.start();
|
||||
});
|
||||
|
||||
teardown(function() {
|
||||
fakeQuickSettingsNode.parentNode.removeChild(fakeQuickSettingsNode);
|
||||
});
|
||||
|
||||
suite('Data icon', function() {
|
||||
var dataDOM;
|
||||
setup(function() {
|
||||
this.sinon.stub(document, 'getElementById', function() {
|
||||
dataDOM = document.createElement('div');
|
||||
return dataDOM;
|
||||
});
|
||||
});
|
||||
test('Data icon is ready when started', function() {
|
||||
MockService.mockQueryWith('dataIcon', {
|
||||
data_sprite: 'test'
|
||||
});
|
||||
subject.start();
|
||||
assert.equal(dataDOM.style.backgroundImage, 'url("test")');
|
||||
});
|
||||
|
||||
test('Data icon is ready when started', function() {
|
||||
subject.start();
|
||||
MockService.mockQueryWith('dataIcon', {
|
||||
data_sprite: 'test2'
|
||||
});
|
||||
window.dispatchEvent(new CustomEvent('dataiconchanged'));
|
||||
assert.equal(dataDOM.style.backgroundImage, 'url("test2")');
|
||||
});
|
||||
});
|
||||
|
||||
test('system/quick settings/enable wifi: Connected', function() {
|
||||
MockWifiManager.connection.status = 'connected';
|
||||
subject.handleEvent({
|
||||
type: 'click',
|
||||
target: subject.wifi,
|
||||
preventDefault: function() {}
|
||||
});
|
||||
subject.handleEvent({
|
||||
type: 'wifi-statuschange',
|
||||
preventDefault: function() {}
|
||||
});
|
||||
assert.equal(
|
||||
MockNavigatorSettings.mSettings['wifi.connect_via_settings'], true);
|
||||
});
|
||||
|
||||
test('system/quick settings/enable wifi: Connecting failed', function() {
|
||||
MockWifiManager.connection.status = 'connectingfailed';
|
||||
subject.handleEvent({
|
||||
type: 'click',
|
||||
target: subject.wifi,
|
||||
preventDefault: function() {}
|
||||
});
|
||||
subject.handleEvent({
|
||||
type: 'wifi-statuschange',
|
||||
preventDefault: function() {}
|
||||
});
|
||||
assert.equal(
|
||||
MockNavigatorSettings.mSettings['wifi.connect_via_settings'], false);
|
||||
});
|
||||
|
||||
test('system/quick settings/enable wifi: Disconnected', function() {
|
||||
MockWifiManager.connection.status = 'disconnected';
|
||||
subject.handleEvent({
|
||||
type: 'click',
|
||||
target: subject.wifi,
|
||||
preventDefault: function() {}
|
||||
});
|
||||
subject.handleEvent({
|
||||
type: 'wifi-statuschange',
|
||||
preventDefault: function() {}
|
||||
});
|
||||
assert.equal(
|
||||
MockNavigatorSettings.mSettings['wifi.connect_via_settings'], false);
|
||||
});
|
||||
|
||||
test('system/quick settings/disable wifi', function() {
|
||||
MockSettingsListener.mCallbacks['wifi.enabled'](true);
|
||||
subject.handleEvent({
|
||||
type: 'click',
|
||||
target: subject.wifi,
|
||||
preventDefault: function() {}
|
||||
});
|
||||
assert.equal(
|
||||
MockNavigatorSettings.mSettings['wifi.connect_via_settings'], false);
|
||||
});
|
||||
|
||||
test('system/quick disable wifi should not work:' +
|
||||
'since airplaneMode is switching', function() {
|
||||
MockSettingsListener.mCallbacks['wifi.enabled'](false);
|
||||
subject.airplaneModeSwitching = true;
|
||||
subject.handleEvent({
|
||||
type: 'click',
|
||||
target: subject.wifi,
|
||||
preventDefault: function() {}
|
||||
});
|
||||
assert.equal(
|
||||
MockNavigatorSettings.mSettings['wifi.enabled'], false);
|
||||
});
|
||||
|
||||
test('system/quick settings/enable airplane mode', function() {
|
||||
MockSettingsListener.mCallbacks['airplaneMode.status']('enabled');
|
||||
this.sinon.stub(window, 'dispatchEvent');
|
||||
subject.handleEvent({
|
||||
type: 'click',
|
||||
target: subject.airplaneMode,
|
||||
preventDefault: function() {}
|
||||
});
|
||||
assert.equal(
|
||||
subject.airplaneMode.dataset.enabled, 'true');
|
||||
assert.isTrue(subject.settings.airplaneMode);
|
||||
|
||||
assert.equal(subject.airplaneModeSwitching, false);
|
||||
|
||||
assert.equal(
|
||||
subject.data.classList.contains(
|
||||
'quick-settings-airplane-mode'), true);
|
||||
|
||||
assert.isTrue(window.dispatchEvent.called);
|
||||
assert.equal(window.dispatchEvent.getCall(0).args[0].type,
|
||||
'request-airplane-mode-disable');
|
||||
});
|
||||
|
||||
test('system/quick settings/disable airplane mode', function() {
|
||||
MockSettingsListener.mCallbacks['airplaneMode.status']('disabled');
|
||||
this.sinon.stub(window, 'dispatchEvent');
|
||||
subject.handleEvent({
|
||||
type: 'click',
|
||||
target: subject.airplaneMode,
|
||||
preventDefault: function() {}
|
||||
});
|
||||
assert.equal(
|
||||
subject.airplaneMode.dataset.enabled, undefined);
|
||||
assert.isFalse(subject.settings.airplaneMode);
|
||||
|
||||
assert.equal(subject.airplaneModeSwitching, false);
|
||||
|
||||
assert.equal(
|
||||
subject.data.classList.contains(
|
||||
'quick-settings-airplane-mode'), false);
|
||||
|
||||
assert.isTrue(window.dispatchEvent.called);
|
||||
assert.equal(window.dispatchEvent.getCall(0).args[0].type,
|
||||
'request-airplane-mode-enable');
|
||||
});
|
||||
|
||||
test('system/quick settings/disabling airplane mode', function() {
|
||||
MockSettingsListener.mCallbacks['airplaneMode.status']('disabling');
|
||||
subject.handleEvent({
|
||||
type: 'click',
|
||||
target: subject.airplaneMode,
|
||||
preventDefault: function() {}
|
||||
});
|
||||
|
||||
assert.equal(
|
||||
subject.airplaneMode.dataset.disabling, 'true');
|
||||
|
||||
assert.equal(subject.airplaneModeSwitching, true);
|
||||
|
||||
assert.equal(
|
||||
subject.airplaneMode.dataset.enabling, undefined);
|
||||
});
|
||||
|
||||
test('system/quick settings/enabling airplane mode', function() {
|
||||
MockSettingsListener.mCallbacks['airplaneMode.status']('enabling');
|
||||
subject.handleEvent({
|
||||
type: 'click',
|
||||
target: subject.airplaneMode,
|
||||
preventDefault: function() {}
|
||||
});
|
||||
|
||||
assert.equal(
|
||||
subject.airplaneMode.dataset.enabling, 'true');
|
||||
|
||||
assert.equal(subject.airplaneModeSwitching, true);
|
||||
|
||||
assert.equal(
|
||||
subject.airplaneMode.dataset.disabling, undefined);
|
||||
});
|
||||
|
||||
suite('datachange > ', function() {
|
||||
var label = {
|
||||
'lte': '4G', // 4G LTE
|
||||
'ehrpd': '4G', // 4G CDMA
|
||||
'hspa+': 'H+', // 3.5G HSPA+
|
||||
'hsdpa': 'H', 'hsupa': 'H', 'hspa': 'H', // 3.5G HSDPA
|
||||
// 3G CDMA
|
||||
'evdo0': '3G', 'evdoa': '3G', 'evdob': '3G', '1xrtt': '3G',
|
||||
'umts': '3G', // 3G
|
||||
'edge': 'E', // EDGE
|
||||
'is95a': '2G', 'is95b': '2G', // 2G CDMA
|
||||
'gprs': '2G'
|
||||
};
|
||||
|
||||
function setDataTypeOnConn(index, value) {
|
||||
MockNavigatorMozMobileConnections[index].data = {};
|
||||
MockNavigatorMozMobileConnections[index].data.type = value;
|
||||
}
|
||||
|
||||
suite('one sim has data but the other one doesn\'t', function() {
|
||||
setup(function() {
|
||||
setDataTypeOnConn(0, 'umts');
|
||||
setDataTypeOnConn(1, undefined);
|
||||
MockNavigatorMozMobileConnections[0]
|
||||
.triggerEventListeners('datachange');
|
||||
});
|
||||
|
||||
test('we would get 3G label', function() {
|
||||
assert.equal(subject.data.dataset.network, label.umts);
|
||||
});
|
||||
});
|
||||
|
||||
suite('no sim has data', function() {
|
||||
setup(function() {
|
||||
setDataTypeOnConn(0, undefined);
|
||||
setDataTypeOnConn(1, undefined);
|
||||
MockNavigatorMozMobileConnections[0]
|
||||
.triggerEventListeners('datachange');
|
||||
});
|
||||
|
||||
test('we would get undefined label', function() {
|
||||
assert.equal(subject.data.dataset.network, label[undefined] + '');
|
||||
});
|
||||
});
|
||||
});
|
||||
});
|
||||
Loading…
Reference in a new issue