VulpesOS/gaia/apps/sharedtest/test/unit/homescreens/icon_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

66 lines
1.8 KiB
JavaScript
Executable file

'use strict';
/* global Icon, GridIconRenderer, MocksHelper */
/* global require, suite, test, assert, sinon */
require('/shared/elements/gaia_grid/js/grid_icon_renderer.js');
require('/shared/test/unit/mocks/mock_image.js');
require('/shared/js/homescreens/icon.js');
var mocksHelperForIcon = new MocksHelper([
'Image'
]).init();
suite('icon.js >', function() {
mocksHelperForIcon.attachTestHelpers();
test('it sets the background size when there is not an icon', function() {
var element = document.createElement('img');
var subject = new Icon(element);
subject.render();
var backgroundSize = element.style.backgroundSize;
assert.isTrue(backgroundSize.contains(subject.size / 10));
});
test('it sets the background image when there is an icon', function() {
var fakeBlob = new Blob([], {type: 'image/png'});
var fakeURL = URL.createObjectURL(fakeBlob);
sinon.stub(URL, 'createObjectURL').returns(fakeURL);
var realPromise = window.Promise;
window.Promise = function() {
return {
then: function(resolve) {
resolve(fakeBlob);
}
};
};
var imageSpy = this.sinon.spy(window, 'Image');
var element = document.createElement('img');
var subject = new Icon(element, 'http://myweb/xxx.png');
subject.render();
sinon.stub(GridIconRenderer.prototype, 'favicon', function() {
return {
then: function(resolve) {
resolve(fakeBlob);
}
};
});
imageSpy.lastCall.thisValue.triggerEvent('onload');
var backgroundImage = element.style.backgroundImage;
assert.equal(backgroundImage, 'url(\"' + fakeURL + '\")');
window.Promise = realPromise;
GridIconRenderer.prototype.favicon.restore();
URL.createObjectURL.restore();
});
});