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

96 lines
2.5 KiB
JavaScript
Executable file

'use strict';
/* global app, contextMenuUI, wallpaper, MocksHelper */
require('/shared/elements/gaia_grid/js/grid_dragdrop.js');
require('/shared/elements/gaia_grid/js/grid_icon_renderer.js');
require('/shared/elements/gaia_grid/js/grid_layout.js');
require('/shared/elements/gaia_grid/js/grid_view.js');
require('/shared/elements/gaia_grid/js/grid_zoom.js');
require('/shared/elements/gaia_grid/js/items/grid_item.js');
require('/shared/elements/gaia_grid/js/items/placeholder.js');
require('/shared/elements/gaia_grid/script.js');
require('/test/unit/mock_item_store.js');
require('/shared/test/unit/mocks/mock_lazy_loader.js');
require('/shared/test/unit/load_body_html_helper.js');
require('/js/wallpaper.js');
requireElements('verticalhome/elements/contextmenu.html');
var mocksHelperForContextMenuUI = new MocksHelper([
'LazyLoader',
'ItemStore'
]).init();
suite('contextmenu_ui.js >', function() {
mocksHelperForContextMenuUI.attachTestHelpers();
var fakeEvt = {};
suiteSetup(function(done) {
loadBodyHTML('/index.html');
require('/js/app.js', done);
});
setup(function(done) {
app.init();
this.sinon.stub(app.grid._grid, 'getNearestItemIndex').returns(0);
require('/js/contextmenu_ui.js', done);
});
suiteTeardown(function() {
document.body.innerHTML = '';
});
function assertDisplayed() {
assert.isTrue(!contextMenuUI.dialog.hasAttribute('hidden'));
}
function assertHidden() {
assert.isTrue(contextMenuUI.dialog.hasAttribute('hidden'));
}
test(' Show and hide context menu', function() {
var clock = sinon.useFakeTimers();
contextMenuUI.show(fakeEvt);
clock.tick(50);
assertDisplayed();
contextMenuUI.hide();
assertHidden();
});
test(' Change wallpaper action', function(done) {
var stub = sinon.stub(wallpaper, 'change', function() {
stub.restore;
done();
});
contextMenuUI.show(fakeEvt);
contextMenuUI.dialog.querySelector('#change-wallpaper-action').click();
assertHidden();
});
test(' Cancel action', function() {
contextMenuUI.show(fakeEvt);
contextMenuUI.dialog.dispatchEvent(new CustomEvent('gaiamenu-cancel'));
assertHidden();
});
test(' Hide the context menu when the document is hidden', function() {
Object.defineProperty(document, 'hidden', {
configurable: true,
get: function() {
return true;
}
});
contextMenuUI.show(fakeEvt);
contextMenuUI.handleEvent({
'type': 'visibilitychange'
});
delete document.hidden;
assertHidden();
});
});