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.
This commit is contained in:
OverSu 2026-09-30 23:13:03 +02:00
commit b38dea0597
25901 changed files with 9982925 additions and 369 deletions

View file

@ -0,0 +1,143 @@
/* global MockDatastore, MockNavigatorDatastore,
MockBasket, MockL10n, MocksHelper,
NewsletterManager */
'use strict';
require('/shared/test/unit/mocks/mock_basket_client.js');
require('/shared/test/unit/mocks/mock_lazy_loader.js');
require('/shared/test/unit/mocks/mock_navigator_datastore.js');
require('/shared/test/unit/mocks/mock_l10n.js');
requireApp('system/test/unit/mock_ftu_launcher.js');
var mocksHelperForNewsletterManager = new MocksHelper([
'FtuLauncher',
'Datastore',
'LazyLoader',
'Basket'
]).init();
suite('Newsletter Manager >', function() {
var realL10n, mockOnce,
realOnLine,
realDatastores;
mocksHelperForNewsletterManager.attachTestHelpers();
suiteSetup(function(done) {
realOnLine = Object.getOwnPropertyDescriptor(navigator, 'onLine');
Object.defineProperty(navigator, 'onLine', {
fakeOnLine: false,
configurable: true,
get: function() { return this.fakeOnLine; },
set: function(status) { this.fakeOnLine = status; }
});
realL10n = navigator.mozL10n;
mockOnce = MockL10n.once;
navigator.mozL10n = MockL10n;
navigator.mozL10n.once = function(callback) {
callback();
};
realDatastores = navigator.getDataStores;
navigator.getDataStores = MockNavigatorDatastore.getDataStores;
MockBasket._dataStore= MockDatastore;
requireApp('system/js/newsletter_manager.js', done);
});
suiteTeardown(function() {
if (realOnLine) {
Object.defineProperty(navigator, 'onLine', realOnLine);
}
MockL10n.once = mockOnce;
navigator.mozL10n = realL10n;
navigator.getDataStores = realDatastores;
});
suite('DataStore accessed >', function() {
var onlineListener;
var email = {
'newsletter_email': 'email@ser.er'
};
setup(function() {
this.sinon.spy(MockDatastore, 'get');
this.sinon.spy(NewsletterManager, 'sendNewsletter');
onlineListener = this.sinon.stub(window, 'addEventListener');
});
teardown(function() {
MockDatastore.clear();
});
test('Recovered email >', function(done) {
MockDatastore.add({
'emailSent': true
}, 1).then(NewsletterManager.start).then(function() {
sinon.assert.calledWith(MockDatastore.get, 1);
done();
}, done);
});
test('Do not send if email already sent >', function(done) {
MockDatastore.add({
'emailSent': true
}, 1).then(NewsletterManager.start).then(function() {
sinon.assert.notCalled(NewsletterManager.sendNewsletter);
done();
}, done);
});
test('Send it if online >', function(done) {
navigator.onLine = true;
MockDatastore.add(email, 1).then(NewsletterManager.start).then(
function() {
sinon.assert.calledWith(NewsletterManager.sendNewsletter,
email.newsletter_email);
done();
}, done);
});
test('Wait for connection if offline >', function(done) {
navigator.onLine = false;
MockDatastore.add(email, 1).then(NewsletterManager.start).then(
function() {
sinon.assert.notCalled(NewsletterManager.sendNewsletter);
sinon.assert.called(window.addEventListener, 'online');
done();
}, done);
});
test('Online change triggers listener >', function(done) {
navigator.onLine = false;
onlineListener.yields();
MockDatastore.add(email, 1).then(NewsletterManager.start).then(
function() {
sinon.assert.called(NewsletterManager.sendNewsletter);
done();
}, done);
});
suite('Sending the info >', function() {
var updatedEmail = {
'emailSent': true
};
setup(function() {
sinon.spy(MockDatastore, 'put');
});
test('Datastore updated when email sent >', function(done) {
NewsletterManager.sendNewsletter(email).then(function() {
sinon.assert.calledWith(MockDatastore.put, updatedEmail);
done();
});
});
});
});
});