VulpesOS/gaia/apps/system/test/unit/tone_upgrader_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

219 lines
6.7 KiB
JavaScript
Executable file

/* global requireApp, suite, test, suiteSetup, suiteTeardown, setup, teardown */
/* global assert, MockNavigatorSettings, toneUpgrader */
'use strict';
requireApp('system/shared/test/unit/mocks/mock_navigator_moz_settings.js');
requireApp('system/js/tone_upgrader.js');
suite('system/ToneUpgrader', function() {
var realSettings;
suiteSetup(function() {
realSettings = navigator.mozSettings;
navigator.mozSettings = MockNavigatorSettings;
});
suiteTeardown(function() {
navigator.mozSettings = realSettings;
});
suite('Built-in ringtone', function() {
var type, expectedInfo;
setup(function() {
type = 'ringtone';
expectedInfo = {
settingsBase: 'dialer.ringtone',
baseURL: '/shared/resources/media/ringtones/',
name: 'ringer_firefox',
filename: 'ringer_firefox.opus',
mimetype: 'audio/ogg'
};
});
teardown(function() {});
suite('ToneUpgrader.getInfo()', function() {
test('with ringtone type', function() {
var testInfo = toneUpgrader.getInfo(type);
for (var property in testInfo) {
assert.equal(testInfo[property], expectedInfo[property]);
}
});
});
suite('ToneUpgrader.setDefault()', function() {
var toneName, toneIdKey, toneDefaultIdKey;
setup(function() {
toneName = expectedInfo.settingsBase + '.name';
toneIdKey = expectedInfo.settingsBase + '.id';
toneDefaultIdKey = expectedInfo.settingsBase + '.default.id';
});
teardown(function() {
for (var property in MockNavigatorSettings.mSettings) {
MockNavigatorSettings.mSettings[property] = '';
}
});
test('with ringtone type', function(done) {
toneUpgrader.setDefault(type).then(function() {
var mSettings = MockNavigatorSettings.mSettings;
var info = expectedInfo;
var prefix = 'builtin:';
assert.equal(mSettings[toneName].l10nID, info.name + '2');
assert.equal(mSettings[toneIdKey], prefix + type + '/' + info.name);
assert.equal(mSettings[toneDefaultIdKey], prefix + info.name);
}, function() {
assert.isTrue(false, 'Failed to set the default ringtone!');
}).then(done, done);
});
});
suite('ToneUpgrader.perform()', function() {
var toneIdKey;
setup(function() {
toneIdKey = toneUpgrader.getInfo(type).settingsBase + '.id';
MockNavigatorSettings.mSettings[toneIdKey] = 'builtin:one_of_the_tones';
});
teardown(function() {
MockNavigatorSettings.mSettings[toneIdKey] = '';
});
test('with ringtone type', function(done) {
toneUpgrader.perform(type).then(function() {
assert.isTrue(true, 'Succeed to perform upgrading the ringtone!');
}, function() {
assert.isTrue(false, 'Failed to perform upgrading the ringtone!');
}).then(done, done);
});
});
});
suite('Customized ringtone', function() {
var type;
var toneIdKey;
setup(function() {
type = 'ringtone';
toneIdKey = toneUpgrader.getInfo(type).settingsBase + '.id';
MockNavigatorSettings.mSettings[toneIdKey] = 'I_am_a_customized_tone';
});
teardown(function() {
MockNavigatorSettings.mSettings[toneIdKey] = '';
});
test('ToneUpgrader.perform() with customized ringtone', function(done) {
toneUpgrader.perform(type).then(function() {
assert.isTrue(true, 'Succeed to perform upgrading the ringtone!');
}, function() {
assert.isTrue(false, 'Failed to perform upgrading the ringtone!');
}).then(done, done);
});
});
suite('Built-in alerttone', function() {
var type, expectedInfo;
setup(function() {
type = 'alerttone';
expectedInfo = {
settingsBase: 'notification.ringtone',
baseURL: '/shared/resources/media/notifications/',
name: 'notifier_firefox',
filename: 'notifier_firefox.opus',
mimetype: 'audio/ogg'
};
});
teardown(function() {});
suite('ToneUpgrader.getInfo()', function() {
test('with alerttone type', function() {
var testInfo = toneUpgrader.getInfo(type);
for (var property in testInfo) {
assert.equal(testInfo[property], expectedInfo[property]);
}
});
});
suite('ToneUpgrader.setDefault()', function() {
var toneName, toneIdKey, toneDefaultIdKey;
setup(function() {
toneName = expectedInfo.settingsBase + '.name';
toneIdKey = expectedInfo.settingsBase + '.id';
toneDefaultIdKey = expectedInfo.settingsBase + '.default.id';
});
teardown(function() {
for (var property in MockNavigatorSettings.mSettings) {
MockNavigatorSettings.mSettings[property] = '';
}
});
test('with alerttone type', function(done) {
toneUpgrader.setDefault(type).then(function() {
var mSettings = MockNavigatorSettings.mSettings;
var info = expectedInfo;
var prefix = 'builtin:';
assert.equal(mSettings[toneName].l10nID, info.name + '2');
assert.equal(mSettings[toneIdKey], prefix + type + '/' + info.name);
assert.equal(mSettings[toneDefaultIdKey], prefix + info.name);
}, function() {
assert.isTrue(false, 'Failed to set the default alerttone!');
}).then(done, done);
});
});
suite('ToneUpgrader.perform()', function() {
var toneIdKey;
setup(function() {
toneIdKey = toneUpgrader.getInfo(type).settingsBase + '.id';
MockNavigatorSettings.mSettings[toneIdKey] = 'builtin:one_of_the_tones';
});
teardown(function() {
MockNavigatorSettings.mSettings[toneIdKey] = '';
});
test('with alerttone type', function(done) {
toneUpgrader.perform(type).then(function() {
assert.isTrue(true, 'Succeed to perform upgrading the alerttone!');
}, function() {
assert.isTrue(false, 'Failed to perform upgrading the alerttone!');
}).then(done, done);
});
});
});
suite('Customized alerttone', function() {
var type;
var toneIdKey;
setup(function() {
type = 'alerttone';
toneIdKey = toneUpgrader.getInfo(type).settingsBase + '.id';
MockNavigatorSettings.mSettings[toneIdKey] = 'I_am_a_customized_tone';
});
teardown(function() {
MockNavigatorSettings.mSettings[toneIdKey] = '';
});
test('ToneUpgrader.perform() with customized alerttone', function(done) {
toneUpgrader.perform(type).then(function() {
assert.isTrue(true, 'Succeed to perform upgrading the ringtone!');
}, function() {
assert.isTrue(false, 'Failed to perform upgrading the ringtone!');
}).then(done, done);
});
});
});