feat(warmwasser): Temperaturgrenzen konfigurierbar machen
Tests / test (push) Successful in 1m10s

This commit is contained in:
dh
2026-09-29 12:11:43 +00:00
parent fe966516b5
commit a74f14aa19
6 changed files with 105 additions and 16 deletions
@@ -31,6 +31,8 @@ return static function (TestContext $test): void {
'LastwechselSperrzeit' => 1,
'Hysterese' => 5.0,
'TemperaturMaxAlter' => 120,
'TemperaturUntergrenze' => 0.0,
'TemperaturObergrenze' => 100.0,
'LegionellenfunktionAktiv' => true,
'LegionellenMinimalintervallTage' => 4,
'LegionellenMaximalintervallTage' => 7,
@@ -90,6 +92,24 @@ return static function (TestContext $test): void {
IPS_RequestAction($managerId, 'Regeln', true);
};
$test->runCase('Temperaturgrenzen melden Unter- und Uebertemperatur', static function (
TestContext $test
) use ($verbraucherId, $temperaturSetzen): void {
$stoertextId = $test->objectByIdent('Stoertext', $verbraucherId);
$temperaturSetzen(100.0);
$test->assertTrue(!str_contains((string) GetValue($stoertextId), 'Uebertemperatur'));
$temperaturSetzen(100.1);
$test->assertTrue(str_contains((string) GetValue($stoertextId), 'Uebertemperatur'));
$temperaturSetzen(0.0);
$test->assertTrue(!str_contains((string) GetValue($stoertextId), 'Untertemperatur'));
$temperaturSetzen(-0.1);
$test->assertTrue(str_contains((string) GetValue($stoertextId), 'Untertemperatur'));
$temperaturSetzen(52.0);
});
if ($lizenzcode === '') {
$test->runCase('Manager bleibt ohne Lizenz sicher gesperrt', static function (
TestContext $test
+34 -2
View File
@@ -29,14 +29,14 @@ final class WarmwassererwaermerModulstrukturTest extends TestCase
self::assertMatchesRegularExpression('/^\{[0-9A-F-]{36}\}$/', $metadaten['id']);
}
public function testAlle19PropertiesSindRegistriertUndImFormularDokumentiert(): void
public function testAlle21PropertiesSindRegistriertUndImFormularDokumentiert(): void
{
$basis = (string) file_get_contents(__DIR__ . '/../libs/VerbraucherBasisTrait.php');
$modul = (string) file_get_contents(self::MODULPFAD . 'module.php');
preg_match_all('/RegisterProperty(?:Integer|Float|Boolean|String)\(\'([^\']+)\'/', $basis . $modul, $treffer);
$properties = array_values(array_unique($treffer[1]));
self::assertCount(19, $properties);
self::assertCount(21, $properties);
$formular = (string) file_get_contents(self::MODULPFAD . 'form.json');
foreach ($properties as $property) {
@@ -136,6 +136,38 @@ final class WarmwassererwaermerModulstrukturTest extends TestCase
self::assertStringContainsString('Mindesttemperatur < Maximaltemperatur', $inhalt);
}
public function testTemperaturstoergrenzenSindKonfigurierbarUndVonSollwertenGetrennt(): void
{
$inhalt = (string) file_get_contents(self::MODULPFAD . 'module.php');
self::assertStringContainsString(
"RegisterPropertyFloat('TemperaturUntergrenze', 0.0)",
$inhalt
);
self::assertStringContainsString(
"RegisterPropertyFloat('TemperaturObergrenze', 100.0)",
$inhalt
);
self::assertStringContainsString("ReadPropertyFloat('TemperaturUntergrenze')", $inhalt);
self::assertStringContainsString("ReadPropertyFloat('TemperaturObergrenze')", $inhalt);
self::assertStringContainsString("'Kennung' => 'Untertemperatur'", $inhalt);
self::assertStringContainsString("'Kennung' => 'Uebertemperatur'", $inhalt);
$formular = json_decode(
(string) file_get_contents(self::MODULPFAD . 'form.json'),
true,
512,
JSON_THROW_ON_ERROR
);
$erweitert = array_values(array_filter(
$formular['elements'],
static fn (array $element): bool =>
$element['caption'] === 'Erweiterte Speichereinstellungen'
));
self::assertCount(1, $erweitert);
self::assertContains('TemperaturUntergrenze', array_column($erweitert[0]['items'], 'name'));
self::assertContains('TemperaturObergrenze', array_column($erweitert[0]['items'], 'name'));
}
public function testSchaltfolgeIstBreakBeforeMake(): void
{
$inhalt = (string) file_get_contents(self::MODULPFAD . 'module.php');