Properly localize unknown/unavailable sensors (#752)

This commit is contained in:
Adam Mills 2017-12-23 16:16:40 -05:00 committed by GitHub
parent 38088acf14
commit b3ded276b5
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 31 additions and 1 deletions

View File

@ -15,7 +15,7 @@ export default function computeStateDisplay(localize, stateObj, language) {
if (!stateObj._stateDisplay) {
stateObj._stateDisplay = localize(`state.${domain}.default.${stateObj.state}`);
}
} else if (stateObj.attributes.unit_of_measurement) {
} else if (stateObj.attributes.unit_of_measurement && !['unknown', 'unavailable'].includes(stateObj.state)) {
stateObj._stateDisplay = stateObj.state + ' ' + stateObj.attributes.unit_of_measurement;
} else if (domain === 'input_datetime') {
let date;

View File

@ -55,6 +55,36 @@ describe('computeStateDisplay', () => {
assert.strictEqual(computeStateDisplay(localize, stateObj, 'en'), '123 m');
});
it('Localizes unknown sensor value with units', () => {
const altLocalize = function (message, ...args) {
if (message === 'state.sensor.unknown') return null;
return localize(message, ...args);
};
const stateObj = {
entity_id: 'sensor.test',
state: 'unknown',
attributes: {
unit_of_measurement: 'm',
},
};
assert.strictEqual(computeStateDisplay(altLocalize, stateObj, 'en'), 'state.default.unknown');
});
it('Localizes unavailable sensor value with units', () => {
const altLocalize = function (message, ...args) {
if (message === 'state.sensor.unavailable') return null;
return localize(message, ...args);
};
const stateObj = {
entity_id: 'sensor.test',
state: 'unavailable',
attributes: {
unit_of_measurement: 'm',
},
};
assert.strictEqual(computeStateDisplay(altLocalize, stateObj, 'en'), 'state.default.unavailable');
});
it('Localizes input_datetime with full date time', () => {
const stateObj = {
entity_id: 'input_datetime.test',