VulpesOS/gaia/apps/search/test/unit/providers/contacts_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

94 lines
2.7 KiB
JavaScript
Executable file

'use strict';
/* global MocksHelper, MockMozContacts, MockContactsList, MockMozActivity,
Search */
require('/shared/test/unit/mocks/mock_moz_activity.js');
require('/shared/js/url_helper.js');
requireApp('search/test/unit/mock_search.js');
requireApp('search/js/providers/provider.js');
require('/shared/test/unit/mocks/mock_mozContacts.js');
require('/apps/communications/contacts/test/unit/mock_contacts_list.js');
var mocksForMarketplaceProvider = new MocksHelper([
'MozActivity'
]).init();
suite('search/providers/contacts', function() {
mocksForMarketplaceProvider.attachTestHelpers();
var fakeElement, stubById, subject;
suiteSetup(function() {
navigator.mozContacts = MockMozContacts;
sinon.stub(navigator.mozContacts, 'find', function() {
return {
set onsuccess(cb) {
cb(MockContactsList());
},
set onerror(cb) {
},
result: MockContactsList()
};
});
});
setup(function(done) {
fakeElement = document.createElement('div');
fakeElement.style.cssText = 'height: 100px; display: block;';
stubById = this.sinon.stub(document, 'getElementById')
.returns(fakeElement.cloneNode(true));
requireApp('search/js/providers/contacts.js', function() {
subject = Search.providers.Contacts;
subject.init();
done();
});
});
teardown(function() {
stubById.restore();
});
suite('click', function() {
test('launches the web activity', function() {
var searchCloseStub = this.sinon.stub(Search, 'close');
subject.click({
target: {
dataset: {
contactId: 'mozilla'
}
}
});
var activityInfo = MockMozActivity.calls[0];
assert.equal(activityInfo.name, 'open');
assert.equal(activityInfo.data.params.id, 'mozilla');
assert.ok(searchCloseStub.calledOnce);
});
});
suite('search', function() {
setup(function() {
this.sinon.stub(URL, 'createObjectURL');
});
test('clears results', function() {
var stub = this.sinon.stub(subject, 'clear');
subject.search(null, function() {});
assert.ok(stub.calledOnce);
});
test('contact is rendered', function(done) {
subject.search('stub content').then((results) => {
Search.collect(subject, results);
var contact = subject.container.querySelector('.result');
assert.equal(contact.querySelector('.title').innerHTML, 'Pepito A');
assert.equal(contact.getAttribute('aria-label'), 'Pepito A');
assert.equal(contact.getAttribute('role'), 'link');
assert.equal(contact.querySelector('.icon img').getAttribute('role'),
'presentation');
done();
});
});
});
});