// Focused UI checks for zone temperature origin and sensor-safety indicators.
// Run from the project root: node scripts/test_temperature_explanation_ui.js
'use strict';
const assert = require('node:assert/strict');
const fs = require('node:fs');
const vm = require('node:vm');
const dict = JSON.parse(fs.readFileSync('lang/pl.json', 'utf8')).translations;
const ctx = vm.createContext({
app: { zones: [], devices: [], groups: [] },
tr: (key, vars = {}) => String(dict[key] || key).replace(/\{(\w+)\}/g, (match, name) => vars[name] ?? match),
fmtTemp: value => value == null ? '--' : `${Number(value).toFixed(1)}°C`,
uiIcon: name => ``,
esc: value => String(value ?? '').replace(/[&<>'"]/g, x => ({ '&': '&', '<': '<', '>': '>', "'": ''', '"': '"' })[x]),
});
vm.runInContext(fs.readFileSync('web/js-dynamic/entities.js', 'utf8'), ctx);
const combined = {
sensor_source: 'combined',
control_temperature_source: 'combined',
device_temperature: 19,
external_temperature: 21,
external_sensor_weight: 0.8,
current_temperature: 20.6,
room_sensor_status: 'ok',
enabled: true,
};
const formula = ctx.zoneTemperatureExplanation(combined);
assert.match(formula, /GREE 19\.0°C × 20%/);
assert.match(formula, /pokój 21\.0°C × 80% = 20\.6°C/);
const help = ctx.zoneTemperatureHelp(combined);
assert.match(help, /