VulpesOS/gaia/apps/communications/dialer/test/unit/navigation_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

173 lines
5.4 KiB
JavaScript
Executable file

'use strict';
/* global MockAccessibilityHelper, MocksHelper, Navigation */
require('/dialer/test/unit/mock_call_log.js');
require('/shared/test/unit/mocks/mock_accessibility_helper.js');
require('/dialer/js/navigation.js');
var mocksHelperForNavigation = new MocksHelper([
'AccessibilityHelper',
'CallLog'
]).init();
suite('navigation bar', function() {
var domKeypadPanel;
var domRecentsPanel;
var domIframeContactsContainer;
var domContactsIframe;
var domOptionRecents;
var domOptionContacts;
var domOptionKeypad;
var domViews;
mocksHelperForNavigation.attachTestHelpers();
setup(function() {
domKeypadPanel = document.createElement('div');
domKeypadPanel.id = 'keypad-panel';
domKeypadPanel.style.visibility = 'hidden';
document.body.appendChild(domKeypadPanel);
domIframeContactsContainer = document.createElement('div');
domIframeContactsContainer.id = 'iframe-contacts-container';
domIframeContactsContainer.style.visibility = 'hidden';
document.body.appendChild(domIframeContactsContainer);
domContactsIframe = document.createElement('iframe');
domContactsIframe.id = 'iframe-contacts';
domIframeContactsContainer.appendChild(domContactsIframe);
domRecentsPanel = document.createElement('div');
domRecentsPanel.id = 'recents-panel';
domRecentsPanel.style.visibility = 'hidden';
document.body.appendChild(domRecentsPanel);
domViews = document.createElement('section');
domViews.id = 'views';
domOptionRecents = document.createElement('a');
domOptionRecents.id = 'option-recents';
domOptionRecents.dataset.destination = 'recents';
domViews.appendChild(domOptionRecents);
domOptionContacts = document.createElement('a');
domOptionContacts.id = 'option-contacts';
domOptionContacts.dataset.destination = 'contacts';
domViews.appendChild(domOptionContacts);
domOptionKeypad = document.createElement('a');
domOptionKeypad.id = 'option-keypad';
domOptionKeypad.dataset.destination = 'keypad';
domViews.appendChild(domOptionKeypad);
document.body.appendChild(domViews);
});
teardown(function() {
document.body.removeChild(domKeypadPanel);
document.body.removeChild(domRecentsPanel);
document.body.removeChild(domIframeContactsContainer);
document.body.removeChild(domViews);
});
suite('Navigation', function() {
suite('show()', function() {
setup(function() {
this.sinon.spy(MockAccessibilityHelper, 'setAriaSelected');
});
test('throws when given an invalid destination', function() {
try {
Navigation.show('unknown');
assert.isTrue(false, 'Should throw');
} catch (e) {
assert.instanceOf(e, Error);
}
});
test('shows the keypad', function() {
Navigation.showKeypad();
assert.equal(domKeypadPanel.style.visibility, 'visible');
assert.isTrue(
domOptionKeypad.classList.contains('toolbar-option-selected')
);
sinon.assert.calledWith(
MockAccessibilityHelper.setAriaSelected,
domOptionKeypad
);
});
test('shows the call log', function() {
Navigation.showCalllog();
assert.equal(domRecentsPanel.style.visibility, 'visible');
assert.isTrue(
domOptionRecents.classList.contains('toolbar-option-selected')
);
sinon.assert.calledWith(
MockAccessibilityHelper.setAriaSelected,
domOptionRecents
);
});
test('shows the contacts', function() {
var dummyIframe = document.createElement('iframe');
this.sinon.stub(document, 'createElement').returns(dummyIframe);
this.sinon.spy(domIframeContactsContainer, 'appendChild');
domIframeContactsContainer.removeChild(domContactsIframe);
Navigation.showContacts();
assert.equal(domIframeContactsContainer.style.visibility, 'visible');
assert.isTrue(
domOptionContacts.classList.contains('toolbar-option-selected')
);
sinon.assert.calledWith(
MockAccessibilityHelper.setAriaSelected,
domOptionContacts
);
sinon.assert.calledWith(document.createElement, 'iframe');
sinon.assert.calledWith(
domIframeContactsContainer.appendChild,
dummyIframe
);
assert.include(dummyIframe.src, '/contacts/index.html');
assert.equal(dummyIframe.id, 'iframe-contacts');
assert.isTrue(dummyIframe.hasAttribute('frameBorder'));
assert.equal(dummyIframe.getAttribute('frameBorder'), 'no');
assert.isTrue(dummyIframe.classList.contains('grid-wrapper'));
});
test('navigate between panels', function() {
Navigation.showKeypad();
Navigation.showCalllog();
assert.equal(domKeypadPanel.style.visibility, 'hidden');
assert.isFalse(
domOptionKeypad.classList.contains('toolbar-option-selected')
);
assert.equal(domRecentsPanel.style.visibility, 'visible');
assert.isTrue(
domOptionRecents.classList.contains('toolbar-option-selected')
);
});
});
suite('currentView', function() {
test('returns the current view', function() {
Navigation.showKeypad();
assert.equal(Navigation.currentView, 'keypad');
Navigation.showCalllog();
assert.equal(Navigation.currentView, 'recents');
});
});
});
});