Files
Enelix-Utils/tests/EnergiediagrammModulstrukturTest.php
T
2026-10-01 15:34:23 +00:00

79 lines
3.1 KiB
PHP

<?php
declare(strict_types=1);
namespace Belevo\EnelixUtils\Tests;
use PHPUnit\Framework\TestCase;
final class EnergiediagrammModulstrukturTest extends TestCase
{
public function testModuleMetadataAndFormExposeRequiredConfiguration(): void
{
$module = json_decode(
file_get_contents(__DIR__ . '/../Energiediagramm/module.json'),
true,
512,
JSON_THROW_ON_ERROR
);
$form = json_decode(
file_get_contents(__DIR__ . '/../Energiediagramm/form.json'),
true,
512,
JSON_THROW_ON_ERROR
);
self::assertSame('{F73B8F8D-5E36-4B23-B379-4632A517A1D6}', $module['id']);
self::assertSame('Energiediagramm', $module['name']);
self::assertSame('ENELIXENERGY', $module['prefix']);
$serialized = json_encode($form, JSON_THROW_ON_ERROR);
foreach ([
'ProduktionZaehlerID',
'EinspeisungZaehlerID',
'NetzbezugZaehlerID',
'VerbrauchZaehlerID',
'Standardzeitraum',
'FarbeEigenverbrauch',
'FarbeAutarkie',
] as $property) {
self::assertStringContainsString($property, $serialized);
}
self::assertSame(2, substr_count($serialized, 'SelectColor'));
}
public function testHtmlStartsWithDataAndRespondsToAvailableWidth(): void
{
$html = file_get_contents(__DIR__ . '/../Energiediagramm/module.html');
self::assertNotFalse($html);
self::assertStringContainsString('__ENELIX_INITIAL_STATE__', $html);
self::assertStringContainsString('ResizeObserver', $html);
self::assertStringContainsString('grid-template-columns: minmax(0, 1fr)', $html);
self::assertStringContainsString('padding: 58px 14px 14px', $html);
self::assertStringContainsString('padding: 58px 10px 10px', $html);
self::assertStringContainsString('background-color: var(--card-color, transparent)', $html);
self::assertStringContainsString('color: var(--content-color, CanvasText)', $html);
self::assertStringContainsString('function syncColorScheme()', $html);
self::assertStringContainsString('SetCustomRange', $html);
self::assertStringNotContainsString("addEventListener('load'", $html);
}
public function testModuleEmbedsInitialPayloadAndEnablesSupportedVisualization(): void
{
$module = file_get_contents(__DIR__ . '/../Energiediagramm/module.php');
self::assertNotFalse($module);
self::assertStringContainsString(
"str_replace('__ENELIX_INITIAL_STATE__'",
$module
);
self::assertStringContainsString(
"version_compare(IPS_GetKernelVersion(), '9.0', '>=')",
$module
);
self::assertStringContainsString('SetVisualizationType($visualizationType)', $module);
self::assertStringContainsString('Standardzeitraum', $module);
self::assertStringContainsString('CustomStart', $module);
self::assertStringContainsString('CustomEnd', $module);
}
}