VulpesOS/gaia/apps/settings/test/unit/modules/battery_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

157 lines
4.4 KiB
JavaScript
Executable file

/* global define */
'use strict';
suite('Battery', function() {
var sandbox = sinon.sandbox.create();
var MockPlatformBattery;
var map = {
'modules/battery': {
'modules/navigator/battery': 'MockPlatformBattery'
}
};
// Load a new Batery instance
var loadBattery = function(callback) {
var requireCtx = testRequire([], map, function() {});
define('MockPlatformBattery', function() {
return MockPlatformBattery;
});
requireCtx(['modules/battery'], callback);
};
setup(function() {
MockPlatformBattery = {
charging: null,
level: null,
addEventListener: function() {}
};
});
teardown(function() {
sandbox.restore();
});
suite('return correct values when initialized', function() {
test('charging', function(done) {
MockPlatformBattery.charging = true;
MockPlatformBattery.level = 0.5;
MockPlatformBattery.chargingTime = 13337;
MockPlatformBattery.dischargingTime = Infinity;
loadBattery(function(Battery) {
assert.equal(Battery.level, 50);
assert.equal(Battery.state, 'charging');
assert.equal(Battery.chargingTime, 13337);
assert.equal(Battery.dischargingTime, Infinity);
done();
});
});
test('charged', function(done) {
MockPlatformBattery.charging = true;
MockPlatformBattery.level = 1;
loadBattery(function(Battery) {
assert.equal(Battery.level, 100);
assert.equal(Battery.state, 'charged');
done();
});
});
test('unplugged', function(done) {
MockPlatformBattery.charging = false;
MockPlatformBattery.level = 1;
loadBattery(function(Battery) {
assert.equal(Battery.level, 100);
assert.equal(Battery.state, 'unplugged');
done();
});
});
});
suite('status changes', function() {
test('should reflect level changes', function(done) {
sandbox.spy(MockPlatformBattery, 'addEventListener');
MockPlatformBattery.level = 0.5;
loadBattery(function(Battery) {
assert.equal(Battery.level, 50);
// change the level
MockPlatformBattery.level = 0.51;
// emit the event
MockPlatformBattery.addEventListener.args.some(function(arg) {
if (arg[0] === 'levelchange') {
arg[1].call();
return true;
}
});
assert.equal(Battery.level, 51);
done();
});
});
test('should reflect state changes', function(done) {
sandbox.spy(MockPlatformBattery, 'addEventListener');
MockPlatformBattery.charging = false;
MockPlatformBattery.level = 1;
loadBattery(function(Battery) {
assert.equal(Battery.state, 'unplugged');
// change the state
MockPlatformBattery.charging = true;
// emit the event
MockPlatformBattery.addEventListener.args.some(function(arg) {
if (arg[0] === 'chargingchange') {
arg[1].call();
return true;
}
});
assert.equal(Battery.state, 'charged');
done();
});
});
test('should reflect chargingTime changes', function(done) {
sandbox.spy(MockPlatformBattery, 'addEventListener');
MockPlatformBattery.charging = true;
MockPlatformBattery.level = 10;
MockPlatformBattery.chargingTime = 13337;
loadBattery(function(Battery) {
// change the state
MockPlatformBattery.chargingTime = 13337 - 1337;
// emit the event
MockPlatformBattery.addEventListener.args.some(function(arg) {
if (arg[0] === 'chargingtimechange') {
arg[1].call();
return true;
}
});
assert.equal(Battery.chargingTime, 13337 - 1337);
done();
});
});
test('should reflect dischargingTime changes', function(done) {
sandbox.spy(MockPlatformBattery, 'addEventListener');
MockPlatformBattery.charging = false;
MockPlatformBattery.level = 9;
MockPlatformBattery.dischargingTime = 13337;
loadBattery(function(Battery) {
// change the state
MockPlatformBattery.dischargingTime = 13337 - 1337;
// emit the event
MockPlatformBattery.addEventListener.args.some(function(arg) {
if (arg[0] === 'dischargingtimechange') {
arg[1].call();
return true;
}
});
assert.equal(Battery.dischargingTime, 13337 - 1337);
done();
});
});
});
});