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,72 @@
'use strict';
/* globals loadBodyHTML*/
requireApp('settings/shared/test/unit/load_body_html_helper.js');
suite('Achievements List > ', function() {
var modules = [
'unit/mock_settings_service',
'modules/mvvm/observable_array',
'unit/mock_list_view',
'panels/achievements/achievements_template',
'panels/achievements/achievements_list'
];
var maps = {
'panels/achievements/achievements_list': {
'modules/settings_service': 'unit/mock_settings_service',
'modules/mvvm/list_view': 'unit/mock_list_view',
'panels/achievements/achievements_template': 'MockAchievementsTemplate'
}
};
var achievementsList, observableArray;
var mockAchievement = {
issuer: 'fxos-sharing',
criteria: 'achievements/sharing-is-caring'
};
suiteSetup(function(done) {
loadBodyHTML('_achievements.html');
// Create a new requirejs context
var requireCtx = testRequire([], maps, function() {});
// Define MockAchievementsTemplate
var MockAchievementsTemplate = {};
define('MockAchievementsTemplate', function() {
return function() {
return MockAchievementsTemplate;
};
});
requireCtx(modules, function(MockSettingsService, ObservableArray,
MockListView, MockAchievementsTemplate, AchievementsList) {
achievementsList = AchievementsList(document.body.querySelector(
'.achievements-list'));
observableArray = ObservableArray;
done();
});
});
suite('achievements list initialized', function() {
test('constructed', function() {
assert.equal(achievementsList.achievements.length, 0);
assert.isTrue(achievementsList._achievements instanceof observableArray);
});
});
suite('update achievements list', function() {
test('add an achievement to the list', function() {
var achievements = [mockAchievement];
achievementsList.achievements = achievements;
assert.equal(achievementsList.achievements.length, 1);
});
test('remove last achievement from the list', function() {
var achievements = [];
achievementsList.achievements = achievements;
assert.equal(achievementsList.achievements.length, 0);
});
});
});

View file

@ -0,0 +1,48 @@
'use strict';
suite('Achievements Template > ', function() {
var modules = [
'panels/achievements/achievements_template'
];
var achievementsTemplate;
var mockAchievement = {
issuer: 'fxos-sharing',
criteria: 'achievements/sharing-is-caring'
};
suiteSetup(function(done) {
var requireCtx = testRequire([], {}, function() {});
requireCtx(modules, function(achtemplate) {
achievementsTemplate = achtemplate;
done();
});
});
test('achievements template rendered', function() {
var subject = achievementsTemplate(mockAchievement);
assert.equal(subject.tagName, 'LI');
assert.isTrue(subject.classList.contains('achievements-item'));
var details = subject.querySelector('.details');
assert.ok(details);
var span = details.querySelector('span');
assert.ok(span);
assert.equal(span.getAttribute('data-l10n-id'),
'achievements-sharing-is-caring-name');
var small = details.querySelector('small');
assert.ok(small);
assert.equal(small.getAttribute('data-l10n-id'),
'achievements-sharing-is-caring-description');
assert.isTrue(small.classList.contains('description'));
var icon = subject.querySelector('img');
assert.ok(icon);
assert.isTrue(icon.classList.contains('icon'));
assert.isTrue(icon.src.indexOf('sharing-is-caring') > 0);
});
});

View file

@ -0,0 +1,73 @@
'use strict';
suite('Achievements Panel > ', function() {
var modules = [
'panels/achievements/panel',
'panels/achievements/achievements_list',
'shared/settings_listener',
'unit/mock_settings_panel'
];
var map = {
'*': {
'modules/settings_panel': 'unit/mock_settings_panel',
'panels/achievements/achievements_list': 'MockAchievementsList',
'shared/settings_listener': 'shared_mocks/mock_settings_listener'
}
};
var settingsListener;
suiteSetup(function(done) {
// Create a new requirejs context
var requireCtx = testRequire([], map, function() {});
var that = this;
var MockAchievementsList = {
get achievements() {},
set achievements(val) {}
};
define('MockAchievementsList', function() {
return function() {
return MockAchievementsList;
};
});
requireCtx(modules, function(AchievementsPanel, MockAchievementsList,
MockSettingsListener, MockSettingsPanel) {
MockSettingsPanel.mInnerFunction = options => Object.assign({}, options);
that.panel = AchievementsPanel();
that.achievementsList = MockAchievementsList();
settingsListener = MockSettingsListener;
settingsListener.observe = sinon.spy();
settingsListener.unobserve = sinon.spy();
done();
});
});
suite('panel initialized', function() {
setup(function() {
this.panel.onInit(document.body);
this.panel.onBeforeShow();
});
test('settings listener observer attached', function() {
assert(settingsListener.observe.calledOnce);
assert(settingsListener.observe.calledWith('achievements',
this.achievementsList.achievements));
});
});
suite('panel uninitialized', function() {
setup(function() {
this.panel.onHide();
});
test('settings listener observer detached', function() {
assert(settingsListener.unobserve.calledOnce);
assert(settingsListener.unobserve.calledWith('achievements'));
});
});
});