Share Gaia assets and adapters, keep private profiles and development documents local, and update both public READMEs.
173 lines
5.4 KiB
JavaScript
Executable file
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');
|
|
});
|
|
});
|
|
});
|
|
});
|