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
269
gaia/apps/system/test/unit/launcher_test.js
Executable file
269
gaia/apps/system/test/unit/launcher_test.js
Executable file
|
|
@ -0,0 +1,269 @@
|
|||
/* global MocksHelper, BaseModule, MockNavigatorSettings, asyncStorage,
|
||||
Service, Deferred */
|
||||
'use strict';
|
||||
|
||||
requireApp('system/shared/test/unit/mocks/mock_navigator_moz_settings.js');
|
||||
require('/shared/test/unit/mocks/mock_lazy_loader.js');
|
||||
requireApp('system/test/unit/mock_asyncStorage.js');
|
||||
requireApp('system/test/unit/deferred.js');
|
||||
requireApp('system/js/service.js');
|
||||
requireApp('system/js/base_module.js');
|
||||
requireApp('system/js/settings_core.js');
|
||||
requireApp('system/js/launcher.js');
|
||||
|
||||
var mocksForLauncher = new MocksHelper([
|
||||
'NavigatorSettings', 'asyncStorage', 'LazyLoader'
|
||||
]).init();
|
||||
|
||||
suite('system/launcher', function() {
|
||||
var subject, settingsCore;
|
||||
var realMozSettings;
|
||||
mocksForLauncher.attachTestHelpers();
|
||||
var fakeFtuLauncher, fakeHomescreenLauncher, fakeLockscreenLauncher;
|
||||
var fakeWallpaperManager, fakeCoverScreen;
|
||||
var fakeLockScreen;
|
||||
var deferreds = {};
|
||||
|
||||
suiteSetup(function() {
|
||||
realMozSettings = navigator.mozSettings;
|
||||
navigator.mozSettings = MockNavigatorSettings;
|
||||
MockNavigatorSettings.mSyncRepliesOnly = true;
|
||||
});
|
||||
|
||||
suiteTeardown(function() {
|
||||
navigator.mozSettings = realMozSettings;
|
||||
});
|
||||
|
||||
setup(function() {
|
||||
deferreds.setPassCodeEnabled = new Deferred();
|
||||
deferreds.onPasscodeEnabledChanged = new Deferred();
|
||||
deferreds['FtuLauncher:launch'] = new Deferred();
|
||||
deferreds['FtuLauncher:skip'] = new Deferred();
|
||||
deferreds['FtuLauncher:stepReady'] = new Deferred();
|
||||
deferreds['HomescreenLauncher:launch'] = new Deferred();
|
||||
deferreds['LockScreenLauncher:launch'] = new Deferred();
|
||||
deferreds['LockScreenLauncher:standby'] = new Deferred();
|
||||
deferreds['WallpaperManager:initializeWallpaper'] = new Deferred();
|
||||
deferreds['CoverScreen:animatePoweronLogo'] = new Deferred();
|
||||
settingsCore = BaseModule.instantiate('SettingsCore');
|
||||
settingsCore.start();
|
||||
fakeFtuLauncher = {
|
||||
name: 'FtuLauncher',
|
||||
launch: sinon.spy(function() {
|
||||
return deferreds['FtuLauncher:launch'].promise;
|
||||
}),
|
||||
skip: sinon.spy(function() {
|
||||
return deferreds['FtuLauncher:skip'].promise;
|
||||
}),
|
||||
stepReady: sinon.spy(function() {
|
||||
return deferreds['FtuLauncher:stepReady'].promise;
|
||||
})
|
||||
};
|
||||
fakeHomescreenLauncher = {
|
||||
name: 'HomescreenLauncher',
|
||||
launch: sinon.spy(function() {
|
||||
return deferreds['HomescreenLauncher:launch'].promise;
|
||||
})
|
||||
};
|
||||
fakeLockscreenLauncher = {
|
||||
name: 'LockScreenLauncher',
|
||||
launch: sinon.spy(function() {
|
||||
return deferreds['LockScreenLauncher:launch'].promise;
|
||||
}),
|
||||
standby: sinon.spy(function() {
|
||||
return deferreds['LockScreenLauncher:standby'].promise;
|
||||
})
|
||||
};
|
||||
fakeWallpaperManager = {
|
||||
name: 'WallpaperManager',
|
||||
initializeWallpaper: sinon.spy(function() {
|
||||
return deferreds['WallpaperManager:initializeWallpaper'].promise;
|
||||
})
|
||||
};
|
||||
fakeCoverScreen = {
|
||||
name: 'CoverScreen',
|
||||
animatePoweronLogo: sinon.spy(function() {
|
||||
return deferreds['CoverScreen:animatePoweronLogo'].promise;
|
||||
})
|
||||
};
|
||||
fakeLockScreen = {
|
||||
name: 'LockScreen',
|
||||
setPassCodeEnabled: sinon.spy(function() {
|
||||
return deferreds.setPassCodeEnabled.promise;
|
||||
}),
|
||||
onPasscodeEnabledChanged: sinon.spy(function() {
|
||||
return deferreds.onPasscodeEnabledChanged.promise;
|
||||
})
|
||||
};
|
||||
Service.register('launch', fakeFtuLauncher);
|
||||
Service.register('stepReady', fakeFtuLauncher);
|
||||
Service.register('skip', fakeFtuLauncher);
|
||||
|
||||
Service.register('launch', fakeHomescreenLauncher);
|
||||
|
||||
Service.register('initializeWallpaper', fakeWallpaperManager);
|
||||
|
||||
Service.register('launch', fakeLockscreenLauncher);
|
||||
Service.register('standby', fakeLockscreenLauncher);
|
||||
Service.register('animatePoweronLogo', fakeCoverScreen);
|
||||
Service.register('setPassCodeEnabled', fakeLockScreen);
|
||||
Service.register('onPasscodeEnabledChanged', fakeLockScreen);
|
||||
subject = BaseModule.instantiate('Launcher');
|
||||
});
|
||||
|
||||
teardown(function() {
|
||||
settingsCore.stop();
|
||||
subject.stop();
|
||||
});
|
||||
|
||||
function setLaunchConfig(shouldFtu, ftuManifest,
|
||||
osVersion, preOsVersion, homeManifest, enableLockscreen,
|
||||
wallpaper, valid, bPasscode) {
|
||||
asyncStorage.mItems['ftu.enabled'] = shouldFtu;
|
||||
MockNavigatorSettings.mSettings['lockscreen.enabled'] = enableLockscreen;
|
||||
MockNavigatorSettings.mSettings['ftu.manifestURL'] = ftuManifest;
|
||||
MockNavigatorSettings.mSettings['homescreen.manifestURL'] = homeManifest;
|
||||
MockNavigatorSettings.mSettings['deviceinfo.os'] = osVersion;
|
||||
MockNavigatorSettings.mSettings['deviceinfo.previous_os'] = preOsVersion;
|
||||
MockNavigatorSettings.mSettings['wallpaper.image'] = wallpaper;
|
||||
MockNavigatorSettings.mSettings['wallpaper.image.valid'] = valid;
|
||||
MockNavigatorSettings.mSettings['lockscreen.passcode-lock.enabled'] =
|
||||
bPasscode;
|
||||
}
|
||||
|
||||
test('Should launch homescreen after ftu is launched', function(done) {
|
||||
subject.scheduler = {
|
||||
release: this.sinon.spy()
|
||||
};
|
||||
subject.launchFtuThenHomescreen('ftu', 'home').then(function() {
|
||||
assert.isTrue(subject.scheduler.release.called);
|
||||
done();
|
||||
});
|
||||
deferreds['FtuLauncher:launch'].resolve();
|
||||
deferreds['WallpaperManager:initializeWallpaper'].resolve();
|
||||
deferreds['HomescreenLauncher:launch'].resolve();
|
||||
deferreds['CoverScreen:animatePoweronLogo'].resolve();
|
||||
deferreds['FtuLauncher:stepReady'].resolve();
|
||||
deferreds['LockScreenLauncher:standby'].resolve();
|
||||
});
|
||||
|
||||
test('LaunchLockscreenThenHomescreen', function(done) {
|
||||
subject.scheduler = {
|
||||
release: this.sinon.spy()
|
||||
};
|
||||
subject.launchLockscreenThenHomescreen('home').then(function() {
|
||||
assert.isTrue(subject.scheduler.release.called);
|
||||
done();
|
||||
});
|
||||
deferreds['FtuLauncher:skip'].resolve();
|
||||
deferreds['WallpaperManager:initializeWallpaper'].resolve();
|
||||
deferreds['LockScreenLauncher:launch'].resolve();
|
||||
deferreds.onPasscodeEnabledChanged.resolve();
|
||||
deferreds.setPassCodeEnabled.resolve();
|
||||
deferreds['CoverScreen:animatePoweronLogo'].resolve();
|
||||
deferreds['HomescreenLauncher:launch'].resolve();
|
||||
});
|
||||
|
||||
test('launchHomescreenAndStandbyLockscreen', function(done) {
|
||||
subject.scheduler = {
|
||||
release: this.sinon.spy()
|
||||
};
|
||||
subject.launchHomescreenAndStandbyLockscreen('home').then(function() {
|
||||
assert.isTrue(subject.scheduler.release.called);
|
||||
done();
|
||||
});
|
||||
deferreds['FtuLauncher:skip'].resolve();
|
||||
deferreds['WallpaperManager:initializeWallpaper'].resolve();
|
||||
deferreds['LockScreenLauncher:standby'].resolve();
|
||||
deferreds['HomescreenLauncher:launch'].resolve();
|
||||
deferreds['CoverScreen:animatePoweronLogo'].resolve();
|
||||
});
|
||||
|
||||
test('should read settings', function(done) {
|
||||
setLaunchConfig();
|
||||
subject.start().then(function() {
|
||||
done();
|
||||
});
|
||||
});
|
||||
|
||||
suite('launch config', function() {
|
||||
test('Should launch ftu if ftu is enabled and ftu manifestURL found',
|
||||
function(done) {
|
||||
this.sinon.spy(subject.service, 'request');
|
||||
setLaunchConfig(true, 'ftu');
|
||||
subject.start().then(function() {
|
||||
assert.isTrue(
|
||||
subject.service.request.calledWith('FtuLauncher:launch', 'ftu'));
|
||||
assert.isTrue(
|
||||
subject.service.request.calledWith('stepReady', 'done'));
|
||||
done();
|
||||
});
|
||||
});
|
||||
|
||||
test('Should launch homescreen if lockscreen is disabled',
|
||||
function(done) {
|
||||
this.sinon.spy(subject.service, 'request');
|
||||
setLaunchConfig(false, 'ftu', null, null, 'home', false);
|
||||
subject.start().then(function() {
|
||||
assert.isTrue(
|
||||
subject.service.request.calledWith('FtuLauncher:skip'));
|
||||
assert.isTrue(
|
||||
subject.service.request.calledWith(
|
||||
'HomescreenLauncher:launch', 'home'));
|
||||
assert.isTrue(
|
||||
subject.service.request.calledWith('LockScreenLauncher:standby'));
|
||||
done();
|
||||
});
|
||||
});
|
||||
|
||||
test('Should launch lockscreen if lockscreen is enabled',
|
||||
function(done) {
|
||||
this.sinon.spy(subject.service, 'request');
|
||||
setLaunchConfig(false, 'ftu', null, null, 'home', true);
|
||||
subject.start().then(function() {
|
||||
assert.isTrue(
|
||||
subject.service.request.calledWith(
|
||||
'WallpaperManager:initializeWallpaper'));
|
||||
// Not able to test the promise chain here.
|
||||
done();
|
||||
});
|
||||
});
|
||||
|
||||
test('Should trigger Ftu if we are upgrading now',
|
||||
function(done) {
|
||||
this.sinon.spy(subject.service, 'request');
|
||||
setLaunchConfig(false, 'ftu',
|
||||
'3.0.0-release', '2.2.0-release', 'home', true);
|
||||
this.sinon.spy(subject, 'checkUpgrading');
|
||||
subject.start().then(function() {
|
||||
assert.isTrue(subject.checkUpgrading.calledOnce);
|
||||
assert.ok(subject.checkUpgrading.firstCall.returnValue);
|
||||
assert.isTrue(
|
||||
subject.service.request.calledWith('FtuLauncher:launch', 'ftu'));
|
||||
assert.isTrue(subject.justUpgraded());
|
||||
}).then(done, function(ex) { done(ex); });
|
||||
});
|
||||
});
|
||||
|
||||
suite('checkUpgrading', function() {
|
||||
test('no previous version', function() {
|
||||
var isUpgrading = subject.checkUpgrading('3.0.0-release', null);
|
||||
assert.isFalse(isUpgrading);
|
||||
});
|
||||
test('sub-point upgrade', function() {
|
||||
var isUpgrading = subject.checkUpgrading(
|
||||
'3.0.1-release', '3.0.0-release');
|
||||
assert.isFalse(isUpgrading);
|
||||
});
|
||||
test('point upgrade', function() {
|
||||
var isUpgrading = subject.checkUpgrading(
|
||||
'3.1.1-release', '3.0.0-release');
|
||||
assert.isTrue(isUpgrading);
|
||||
});
|
||||
test('major version upgrade', function() {
|
||||
var isUpgrading = subject.checkUpgrading(
|
||||
'3.1.1-release', '2.2.0-release');
|
||||
assert.isTrue(isUpgrading);
|
||||
});
|
||||
});
|
||||
});
|
||||
Loading…
Reference in a new issue