143 lines
5.8 KiB
PHP
143 lines
5.8 KiB
PHP
<?php
|
|
|
|
declare(strict_types=1);
|
|
|
|
namespace Belevo\EnelixEMS\Tests;
|
|
|
|
use PHPUnit\Framework\TestCase;
|
|
|
|
final class ManagerModulstrukturTest extends TestCase
|
|
{
|
|
public function testManagerIstAlsSymconModulVollstaendig(): void
|
|
{
|
|
foreach (['module.json', 'form.json', 'module.php'] as $datei) {
|
|
self::assertFileExists(__DIR__ . '/../Manager/' . $datei);
|
|
}
|
|
|
|
$metadaten = json_decode(
|
|
(string) file_get_contents(__DIR__ . '/../Manager/module.json'),
|
|
true,
|
|
512,
|
|
JSON_THROW_ON_ERROR
|
|
);
|
|
self::assertSame('Manager', $metadaten['name']);
|
|
self::assertSame('Enelix', $metadaten['vendor']);
|
|
self::assertSame(['Manager'], $metadaten['aliases']);
|
|
self::assertSame(3, $metadaten['type']);
|
|
self::assertMatchesRegularExpression('/^\{[0-9A-F-]{36}\}$/', $metadaten['id']);
|
|
}
|
|
|
|
public function testFormularEnthaeltDieZentralenManagerProperties(): void
|
|
{
|
|
$formular = json_decode(
|
|
(string) file_get_contents(__DIR__ . '/../Manager/form.json'),
|
|
true,
|
|
512,
|
|
JSON_THROW_ON_ERROR
|
|
);
|
|
$json = json_encode($formular, JSON_THROW_ON_ERROR | JSON_UNESCAPED_SLASHES);
|
|
|
|
foreach ([
|
|
'NetzleistungVariableID',
|
|
'VerbraucherZuordnung',
|
|
'AutomatischeVerbraucherZuordnung',
|
|
'Lastspitzenmodus',
|
|
'Monatsgrenzen',
|
|
'SollwertSolarladen',
|
|
'KeepAlive',
|
|
'VerbraucherTimeout',
|
|
'MesswertMaxAlter',
|
|
'Umschaltdifferenz',
|
|
'DiagnosevariablenAnzeigen',
|
|
'LoggingEin',
|
|
'Lizenzcode',
|
|
'LizenzPruefen',
|
|
'LizenzInstallationID',
|
|
'LizenzInformation',
|
|
'VerbraucherAktualisieren',
|
|
] as $property) {
|
|
self::assertStringContainsString($property, $json);
|
|
}
|
|
foreach (['Regelintervall', 'Vorgabeintervall', 'UmschaltschwelleUeberschuss',
|
|
'UmschaltschwelleLastspitze', 'Optionale obere Anschluesse', 'LizenzAnschluss'] as $entfernt
|
|
) {
|
|
self::assertStringNotContainsString($entfernt, $json);
|
|
}
|
|
foreach (['Grundeinstellungen', 'Erweiterte Einstellungen', 'Prognose / Forecast',
|
|
'SDL / VGT', 'Lizenzierung', 'Stoerueberwachung'] as $bereich
|
|
) {
|
|
self::assertStringContainsString($bereich, $json);
|
|
}
|
|
self::assertSame('Lizenzierung', $formular['elements'][0]['caption']);
|
|
self::assertStringContainsString(
|
|
"'SuchbereichID' => \$SuchbereichID",
|
|
$json
|
|
);
|
|
self::assertStringContainsString(
|
|
"'Zuordnung' => \$AutomatischeVerbraucherZuordnung",
|
|
$json
|
|
);
|
|
}
|
|
|
|
public function testManagerTrenntDiagnosevariablenUndDebugLogging(): void
|
|
{
|
|
$inhalt = (string) file_get_contents(__DIR__ . '/../Manager/module.php');
|
|
|
|
self::assertStringContainsString(
|
|
"RegisterPropertyBoolean('DiagnosevariablenAnzeigen', false)",
|
|
$inhalt
|
|
);
|
|
self::assertStringContainsString("ReadPropertyBoolean('DiagnosevariablenAnzeigen')", $inhalt);
|
|
self::assertStringContainsString('UnregisterVariable($ident)', $inhalt);
|
|
self::assertStringContainsString("ReadPropertyBoolean('LoggingEin')", $inhalt);
|
|
self::assertStringContainsString('SendDebug(', $inhalt);
|
|
}
|
|
|
|
public function testManagerBindetDieLizenzierungFailClosedAn(): void
|
|
{
|
|
$inhalt = (string) file_get_contents(__DIR__ . '/../Manager/module.php');
|
|
|
|
self::assertFileExists(__DIR__ . '/../libs/Lizenzpruefung.php');
|
|
self::assertStringContainsString(
|
|
"RegisterPropertyString('Lizenzcode', '')",
|
|
$inhalt
|
|
);
|
|
self::assertStringContainsString(
|
|
"https://license.enelix.ch/api/v1/licenses/activate",
|
|
$inhalt
|
|
);
|
|
self::assertStringContainsString("RegisterAttributeString('LizenzInstallationID'", $inhalt);
|
|
self::assertStringContainsString("RegisterAttributeString('LizenzLease'", $inhalt);
|
|
self::assertStringContainsString("RegisterAttributeString('LizenzcodeHash'", $inhalt);
|
|
self::assertStringContainsString('STATUS_LIZENZ_UNGUELTIG', $inhalt);
|
|
self::assertStringContainsString('aktualisiereLizenzfreigabe(', $inhalt);
|
|
self::assertStringNotContainsString("'publicKey' =>", $inhalt);
|
|
}
|
|
|
|
public function testManagerVerwendetDieNeuenZeitdefaults(): void
|
|
{
|
|
$inhalt = (string) file_get_contents(__DIR__ . '/../Manager/module.php');
|
|
|
|
self::assertStringContainsString("RegisterPropertyInteger('KeepAlive', 60)", $inhalt);
|
|
self::assertStringContainsString("RegisterPropertyInteger('VerbraucherTimeout', 60)", $inhalt);
|
|
self::assertStringContainsString("RegisterPropertyInteger('MesswertMaxAlter', 60)", $inhalt);
|
|
self::assertStringContainsString("RegisterPropertyFloat('Umschaltdifferenz', 5.0)", $inhalt);
|
|
self::assertStringNotContainsString("RegisterPropertyInteger('Regelintervall'", $inhalt);
|
|
self::assertStringNotContainsString("RegisterPropertyInteger('Vorgabeintervall'", $inhalt);
|
|
|
|
$verbraucherBasis = (string) file_get_contents(__DIR__ . '/../libs/VerbraucherBasisTrait.php');
|
|
self::assertStringContainsString(
|
|
"RegisterPropertyInteger('VorgabeTimeout', 120)",
|
|
$verbraucherBasis
|
|
);
|
|
}
|
|
|
|
public function testManagerImplementiertDenGemeinsamenEmpfangsvertrag(): void
|
|
{
|
|
$inhalt = (string) file_get_contents(__DIR__ . '/../Manager/module.php');
|
|
self::assertStringContainsString('implements ManagerSchnittstelle', $inhalt);
|
|
self::assertStringContainsString('VerbraucherdatenEmpfangen(array $daten)', $inhalt);
|
|
self::assertStringContainsString("'ManagerdatenEmpfangen'", $inhalt);
|
|
}
|
|
}
|