Share Gaia assets and adapters, keep private profiles and development documents local, and update both public READMEs.
147 lines
5 KiB
JavaScript
Executable file
147 lines
5 KiB
JavaScript
Executable file
/* globals MockIccManager, MockNavigatorMozMobileConnections, MocksHelper,
|
|
MockSIMSlot, SIMSlotManager */
|
|
'use strict';
|
|
|
|
require('/shared/test/unit/mocks/mock_simslot.js');
|
|
require('/shared/test/unit/mocks/mock_icc_manager.js');
|
|
require('/shared/test/unit/mocks/mock_navigator_moz_mobile_connections.js');
|
|
|
|
var mocksForSIMSlotManager = new MocksHelper([
|
|
'SIMSlot', 'NavigatorMozMobileConnections'
|
|
]).init();
|
|
|
|
suite('SIMSlotManager', function() {
|
|
var realIccManager = navigator.mozIccManager;
|
|
var realMobileConnections = navigator.mozMobileConnections;
|
|
mocksForSIMSlotManager.attachTestHelpers();
|
|
|
|
setup(function(callback) {
|
|
navigator.mozIccManager = MockIccManager;
|
|
navigator.mozMobileConnections = MockNavigatorMozMobileConnections;
|
|
require('/shared/js/simslot_manager.js', callback);
|
|
});
|
|
|
|
teardown(function() {
|
|
MockNavigatorMozMobileConnections.mTeardown();
|
|
navigator.mozIccManager = realIccManager;
|
|
navigator.mozMobileConnections = realMobileConnections;
|
|
});
|
|
|
|
test('Multi-SIM with 1st slot ready and 2nd slot absent.', function() {
|
|
// Add 2nd MobileConnection for Multi-SIM scenario.
|
|
MockNavigatorMozMobileConnections.mAddMobileConnection();
|
|
var stubAddEventListener = this.sinon.stub(
|
|
MockIccManager, 'addEventListener');
|
|
|
|
// Have 1st slot ready to test.
|
|
MockNavigatorMozMobileConnections[0].iccId = 0;
|
|
MockIccManager.iccIds = [0];
|
|
var getIccById = MockIccManager.getIccById;
|
|
MockIccManager.getIccById = function(iccId) {
|
|
return (iccId !== 0) ? null : {
|
|
cardState: 'ready',
|
|
iccInfo: { iccid: 0 }
|
|
};
|
|
};
|
|
|
|
// Reset SIMSlotManager before testing.
|
|
SIMSlotManager.length = 0;
|
|
SIMSlotManager._instances = [];
|
|
SIMSlotManager.ready = false;
|
|
|
|
// Start the test.
|
|
SIMSlotManager.init();
|
|
|
|
// Verdict.
|
|
assert.isTrue(SIMSlotManager.isMultiSIM());
|
|
assert.equal(SIMSlotManager.length,
|
|
MockNavigatorMozMobileConnections.length);
|
|
assert.isFalse(SIMSlotManager.ready);
|
|
assert.isTrue(
|
|
stubAddEventListener.calledWith('iccdetected', SIMSlotManager));
|
|
|
|
// Reset MockIccManager.getIccById.
|
|
MockIccManager.getIccById = getIccById;
|
|
});
|
|
|
|
test('Multi-SIM with 2 slots ready.', function() {
|
|
// Add 2nd MobileConnection for Multi-SIM scenario.
|
|
MockNavigatorMozMobileConnections.mAddMobileConnection();
|
|
var stubAddEventListener = this.sinon.stub(
|
|
MockIccManager, 'addEventListener');
|
|
|
|
// Reset SIMSlotManager before testing.
|
|
SIMSlotManager.length = 0;
|
|
SIMSlotManager._instances = [];
|
|
SIMSlotManager.ready = false;
|
|
|
|
// Start the test.
|
|
SIMSlotManager.init();
|
|
|
|
// Verdict.
|
|
assert.isTrue(SIMSlotManager.isMultiSIM());
|
|
assert.equal(SIMSlotManager.length,
|
|
MockNavigatorMozMobileConnections.length);
|
|
assert.isTrue(SIMSlotManager.ready);
|
|
assert.isTrue(
|
|
stubAddEventListener.calledWith('iccdetected', SIMSlotManager));
|
|
});
|
|
|
|
test('get current SIM count', function() {
|
|
MockIccManager.iccIds = [0, 1, 2];
|
|
assert.isFalse(SIMSlotManager.noSIMCardOnDevice());
|
|
MockIccManager.iccIds = [];
|
|
assert.isTrue(SIMSlotManager.noSIMCardOnDevice());
|
|
});
|
|
|
|
test('noSIMCardConnectedToNetwork', function() {
|
|
MockIccManager.iccIds = [0, 1];
|
|
MockNavigatorMozMobileConnections.mAddMobileConnection();
|
|
|
|
SIMSlotManager._instances = [];
|
|
SIMSlotManager.init();
|
|
MockNavigatorMozMobileConnections[0].voice = { emergencyCallsOnly: true };
|
|
MockNavigatorMozMobileConnections[1].voice = { emergencyCallsOnly: true };
|
|
assert.isTrue(SIMSlotManager.noSIMCardConnectedToNetwork());
|
|
MockNavigatorMozMobileConnections[0].voice.emergencyCallsOnly = false;
|
|
assert.isFalse(SIMSlotManager.noSIMCardConnectedToNetwork());
|
|
});
|
|
|
|
test('getSlotByIccId', function() {
|
|
var card1 = document.createElement('div');
|
|
card1.iccId = 1;
|
|
var card2 = document.createElement('div');
|
|
card2.iccId = 2;
|
|
var slot1 = new MockSIMSlot({ iccId: 1 }, 0, card1);
|
|
var slot2 = new MockSIMSlot({ iccId: 2 }, 1, card2);
|
|
var slot3 = new MockSIMSlot({ iccId: null}, 2);
|
|
|
|
SIMSlotManager._instances = [slot1, slot2, slot3];
|
|
assert.deepEqual(SIMSlotManager.getSlotByIccId(1), slot1);
|
|
|
|
assert.deepEqual(SIMSlotManager.getSlotByIccId(2), slot2);
|
|
|
|
assert.deepEqual(SIMSlotManager.getSlotByIccId(9999), null);
|
|
});
|
|
|
|
test('iccdetected', function() {
|
|
var stubGetIccById = this.sinon.stub(SIMSlotManager, 'getSlotByIccId');
|
|
var card1 = document.createElement('div');
|
|
card1.iccId = 1;
|
|
var slot = new MockSIMSlot(null, 1, card1);
|
|
var stubUpdate = this.sinon.stub(slot, 'update');
|
|
var card2 = document.createElement('div');
|
|
card2.iccId = 1;
|
|
var stubGetIccByIdOfIccManager =
|
|
this.sinon.stub(MockIccManager, 'getIccById');
|
|
stubGetIccByIdOfIccManager.returns(card2);
|
|
stubGetIccById.returns(slot);
|
|
SIMSlotManager.handleEvent({
|
|
type: 'iccdetected',
|
|
iccId: 1
|
|
});
|
|
assert.isTrue(stubGetIccById.calledWith(1));
|
|
assert.isTrue(stubUpdate.calledWith(card2));
|
|
assert.isTrue(SIMSlotManager.ready);
|
|
});
|
|
});
|