Test : le bloc storage se lit aussi par GetLoadTelemetry (lot e1)

La journée de la démo relit la télémétrie par la frontière RPC pendant le
blocage : le bloc passe la validation du schéma déclaré (o:storage), et le Get
rend ce qui a été publié.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
Patrick Schurig 2026-10-24 08:56:24 +02:00
parent 4ffa8391cf
commit 3cbcdeeca3

View File

@ -10860,6 +10860,14 @@ void Simulation::testOffPeakDemoDay()
QCOMPARE(bat.value("observed").toMap().value("enableDischarging").toBool(), true);
QCOMPARE(bat.value("observed").toMap().value("dischargingRate").toDouble(), 0.0);
QCOMPARE(s.ecrites->size(), 2); // rien de réécrit une minute après la pose
// PAR LA FRONTIÈRE RPC, pas par l'accesseur : le bloc passe la validation du schéma déclaré
// (`o:storage`), et le Get rend ce qui a été publié.
const QVariantMap rpc = injectAndWait("NymeaEnergy.GetLoadTelemetry").toMap().value("params").toMap();
QCOMPARE(rpc.value("storage").toMap().value("dischargeBlocked").toBool(), true);
QCOMPARE(rpc.value("storage").toMap().value("decision").toMap().value("code").toString(),
QString(DecisionCode::StorageDischargeBlocked));
QCOMPARE(rpc.value("storage").toMap().value("batteries").toList().value(0).toMap()
.value("thingId").toUuid(), s.batterie->id());
const QString texteBat = renderFr(DecisionReason(DecisionCode::StorageDischargeBlocked,
stockage(snap).value("decision").toMap().value("params").toMap()));
QVERIFY2(texteBat.startsWith(QStringLiteral("Décharge de la batterie bloquée : la voiture charge en heures creuses")),