VulpesOS/gaia/apps/verticalhome/test/unit/wallpaper_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

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']);
});
});