Share Gaia assets and adapters, keep private profiles and development documents local, and update both public READMEs.
110 lines
3.4 KiB
JavaScript
Executable file
110 lines
3.4 KiB
JavaScript
Executable file
'use strict';
|
|
/* global applications */
|
|
/* global MockApplications */
|
|
/* global MocksHelper */
|
|
/* global MockSettingsListener */
|
|
/* global SettingsListener */
|
|
/* global SearchWindow */
|
|
/* global MockAppWindow */
|
|
/* global MockService */
|
|
|
|
requireApp('system/test/unit/mock_applications.js');
|
|
requireApp('system/test/unit/mock_app_window.js');
|
|
requireApp('system/shared/test/unit/mocks/mock_manifest_helper.js');
|
|
requireApp('system/shared/test/unit/mocks/mock_manifest_helper.js');
|
|
requireApp('system/shared/test/unit/mocks/mock_service.js');
|
|
requireApp('system/shared/test/unit/mocks/mock_settings_listener.js');
|
|
|
|
var mocks = new MocksHelper([
|
|
'Applications',
|
|
'ManifestHelper',
|
|
'SettingsListener',
|
|
'Service'
|
|
]).init();
|
|
|
|
suite('system/SearchWindow', function() {
|
|
mocks.attachTestHelpers();
|
|
|
|
var realApplications;
|
|
var fakeElement;
|
|
var stubById;
|
|
|
|
setup(function(done) {
|
|
realApplications = window.applications;
|
|
window.applications = MockApplications;
|
|
|
|
fakeElement = document.createElement('div');
|
|
fakeElement.style.cssText = 'height: 100px; display: block;';
|
|
stubById = this.sinon.stub(document, 'getElementById')
|
|
.returns(fakeElement.cloneNode(true));
|
|
|
|
requireApp('system/js/browser_config_helper.js');
|
|
requireApp('system/js/app_window.js');
|
|
requireApp('system/js/search_window.js', done);
|
|
});
|
|
|
|
teardown(function() {
|
|
stubById.restore();
|
|
window.applications = realApplications;
|
|
realApplications = null;
|
|
});
|
|
|
|
var fakeAppConfig1 = {
|
|
url: 'app://www.fake/index.html',
|
|
manifest: {},
|
|
manifestURL: 'app://wwww.fake/ManifestURL',
|
|
origin: 'app://www.fake'
|
|
};
|
|
|
|
test('constructor', function() {
|
|
var searchWindow = new SearchWindow();
|
|
assert.ok(searchWindow.constructor === SearchWindow,
|
|
'Uses the SearchWindow constructor');
|
|
});
|
|
|
|
test('destroy - unobserves setting', function() {
|
|
var subject = new SearchWindow();
|
|
this.sinon.spy(SettingsListener, 'unobserve');
|
|
subject.destroy();
|
|
sinon.assert.calledWith(SettingsListener.unobserve,
|
|
'rocketbar.searchAppURL', subject._setBrowserConfig);
|
|
});
|
|
|
|
test('setBrowserConfig', function() {
|
|
var searchWindow = new SearchWindow();
|
|
|
|
this.sinon.stub(applications, 'getByManifestURL').returns({
|
|
origin: 'app://mozilla.org',
|
|
manifestURL: 'app://mozilla.org/manifest.webapp',
|
|
manifest: {}
|
|
});
|
|
|
|
var renderStub = this.sinon.stub(searchWindow, 'render');
|
|
var openStub = this.sinon.stub(searchWindow, 'open');
|
|
|
|
MockSettingsListener.mCallbacks['rocketbar.searchAppURL'](
|
|
'app://mozilla.org/');
|
|
|
|
assert.ok(renderStub.calledOnce);
|
|
assert.ok(openStub.calledOnce);
|
|
assert.equal(searchWindow.manifestURL, 'app://mozilla.org/manifest.webapp');
|
|
assert.equal(searchWindow.searchAppURL, 'app://mozilla.org/');
|
|
});
|
|
|
|
test('request close should close directly', function() {
|
|
var searchWindow = new SearchWindow();
|
|
var stubClose = this.sinon.stub(searchWindow, 'close');
|
|
searchWindow.requestClose();
|
|
assert.isTrue(stubClose.called);
|
|
});
|
|
|
|
test('call lockOrientation', function() {
|
|
var app1 = new MockAppWindow(fakeAppConfig1);
|
|
MockService.mockQueryWith('AppWindowManager.getActiveWindow', app1);
|
|
var searchWindow = new SearchWindow();
|
|
this.sinon.stub(app1, 'setOrientation');
|
|
searchWindow.lockOrientation();
|
|
assert.isTrue(app1.setOrientation.called,
|
|
'should lock orientation to root app');
|
|
});
|
|
});
|