Share Gaia assets and adapters, keep private profiles and development documents local, and update both public READMEs.
110 lines
3.1 KiB
JavaScript
Executable file
110 lines
3.1 KiB
JavaScript
Executable file
'use strict';
|
|
|
|
/* global MocksHelper, MockMozActivity, MockNavigatorSettings, wallpaper */
|
|
|
|
require('/shared/test/unit/mocks/mock_navigator_moz_settings.js');
|
|
require('/shared/test/unit/mocks/mock_moz_activity.js');
|
|
require('/js/wallpaper.js');
|
|
|
|
var mocksHelperForWallpaper = new MocksHelper([
|
|
'MozActivity'
|
|
]).init();
|
|
|
|
// A simple mock for shared/js/omadrm/fl.js so we don't have to
|
|
// create a more complicated settings mock than what we already have here.
|
|
// If I put this in suiteSetup, I get a test error for a leaking global.
|
|
window.ForwardLock = { getKey: function(f) { f(null); } };
|
|
|
|
mocksHelperForWallpaper.attachTestHelpers();
|
|
|
|
suite('wallpaper.js >', function() {
|
|
|
|
var realMozSettings, activitySub;
|
|
|
|
suiteSetup(function() {
|
|
activitySub = sinon.stub(window, 'MozActivity', function(info) {
|
|
MockMozActivity.calls.push(info);
|
|
MockMozActivity.instances.push(this);
|
|
});
|
|
realMozSettings = navigator.mozSettings;
|
|
navigator.mozSettings = MockNavigatorSettings;
|
|
});
|
|
|
|
suiteTeardown(function() {
|
|
activitySub.restore();
|
|
navigator.mozSettings = realMozSettings;
|
|
delete window.ForwardLock;
|
|
});
|
|
|
|
setup(function() {
|
|
wallpaper.change();
|
|
});
|
|
|
|
teardown(function() {
|
|
window.MockNavigatorSettings.mSettings['wallpaper.image'] = null;
|
|
});
|
|
|
|
function FakeBlob(data) {
|
|
return {
|
|
type: 'image/png',
|
|
data: data
|
|
};
|
|
}
|
|
|
|
function startMozActivity(methodName, blob) {
|
|
var instance = MockMozActivity.instances[0];
|
|
|
|
instance.result = {
|
|
blob: blob
|
|
};
|
|
|
|
instance[methodName]();
|
|
}
|
|
|
|
test('The MozActivity was initialized correctly ', function() {
|
|
// There is only one activity running
|
|
var activities = MockMozActivity.calls;
|
|
assert.equal(activities.length, 1);
|
|
|
|
var instances = MockMozActivity.instances;
|
|
assert.equal(instances.length, 1);
|
|
|
|
// Activity data
|
|
var activity = activities[0];
|
|
assert.equal(activity.name, 'pick');
|
|
assert.ok(activity.data.type === 'wallpaper' ||
|
|
(Array.isArray(activity.data.type) &&
|
|
activity.data.type.indexOf('wallpaper') >= 0),
|
|
'activity type is or includes "wallpaper"');
|
|
|
|
// Activity callbacks
|
|
assert.isFunction(instances[0].onsuccess);
|
|
});
|
|
|
|
test('Pick activity returns a blob ', function() {
|
|
var fakeblob = FakeBlob('banana');
|
|
|
|
// This is the blob returned by the activity
|
|
startMozActivity('onsuccess', fakeblob);
|
|
|
|
// We set the wallpaper.image property to "banana"
|
|
assert.deepEqual(window.MockNavigatorSettings.mSettings['wallpaper.image'],
|
|
fakeblob);
|
|
});
|
|
|
|
test('Pick activity returns nothing (no blob) ', function() {
|
|
// MozActivity doesn't return a blob
|
|
startMozActivity('onsuccess');
|
|
|
|
// No blob then wallpaper.image property is not defined
|
|
assert.isNull(window.MockNavigatorSettings.mSettings['wallpaper.image']);
|
|
});
|
|
|
|
test('Pick activity has been cancelled ', function() {
|
|
// User cancels
|
|
startMozActivity('onerror');
|
|
|
|
// Then wallpaper.image property is not defined
|
|
assert.isNull(window.MockNavigatorSettings.mSettings['wallpaper.image']);
|
|
});
|
|
});
|