Verbrauchskostenreport implementieren
Tests / test (push) Successful in 1m10s

This commit is contained in:
dh
2026-09-17 08:56:38 +00:00
parent 3e0d198525
commit d36bd29c31
60 changed files with 63520 additions and 28 deletions
+9 -9
View File
@@ -8,28 +8,28 @@ use PHPUnit\Framework\TestCase;
final class DokumentationsstrukturTest extends TestCase
{
/** @return list<string> */
/** @return array<string, array{string, string}> */
public function modulReadmes(): array
{
return [
'Abrechnungsmanager',
'Virtuelle-Batterie',
'CC100-Hardware',
'Energiediagramm',
'VGT-Schnittstelle',
'Shelly-Modul',
'Verbrauchskostenreport' => ['Verbrauchskostenreport', 'Status: Implementiert'],
'Virtuelle Batterie' => ['Virtuelle-Batterie', 'Status: Diskussionsentwurf'],
'CC100 Hardware' => ['CC100-Hardware', 'Status: Diskussionsentwurf'],
'Energiediagramm' => ['Energiediagramm', 'Status: Diskussionsentwurf'],
'VGT-Schnittstelle' => ['VGT-Schnittstelle', 'Status: Diskussionsentwurf'],
'Shelly-Modul' => ['Shelly-Modul', 'Status: Diskussionsentwurf'],
];
}
/** @dataProvider modulReadmes */
public function testJederModulentwurfHatEinReadme(string $modul): void
public function testJedesModulHatEinReadmeMitErwartetemStatus(string $modul, string $status): void
{
$pfad = __DIR__ . '/../docs/module/' . $modul . '/README.md';
self::assertFileExists($pfad);
$inhalt = file_get_contents($pfad);
self::assertNotFalse($inhalt);
self::assertStringContainsString('Status: Diskussionsentwurf', $inhalt);
self::assertStringContainsString($status, $inhalt);
self::assertStringContainsString('Properties', $inhalt);
}
}
+58
View File
@@ -18,5 +18,63 @@ final class LibraryMetadataTest extends TestCase
self::assertSame('8.0', $daten['compatibility']['version']);
self::assertMatchesRegularExpression('/^\{[0-9A-F-]{36}\}$/', $daten['id']);
}
public function testVerbrauchskostenreportHatNeutraleMetadaten(): void
{
$inhalt = file_get_contents(__DIR__ . '/../Verbrauchskostenreport/module.json');
self::assertNotFalse($inhalt);
$daten = json_decode($inhalt, true, 512, JSON_THROW_ON_ERROR);
self::assertSame('{9DAC29C7-F381-F2A4-7CE2-F391C4123F38}', $daten['id']);
self::assertSame('Verbrauchskostenreport', $daten['name']);
self::assertSame([], $daten['aliases']);
self::assertSame('VKR', $daten['prefix']);
self::assertSame(3, $daten['type']);
}
public function testVerbrauchskostenreportFormularIstGueltigesJson(): void
{
$inhalt = file_get_contents(__DIR__ . '/../Verbrauchskostenreport/form.json');
self::assertNotFalse($inhalt);
$daten = json_decode($inhalt, true, 512, JSON_THROW_ON_ERROR);
self::assertArrayHasKey('elements', $daten);
self::assertNotEmpty($daten['elements']);
}
public function testRequestActionSchreibtKeineDirekteAusgabe(): void
{
$inhalt = file_get_contents(__DIR__ . '/../Verbrauchskostenreport/module.php');
self::assertNotFalse($inhalt);
$anfang = strpos($inhalt, 'public function RequestAction');
$ende = strpos($inhalt, 'public function ProcessHookData');
self::assertNotFalse($anfang);
self::assertNotFalse($ende);
self::assertStringNotContainsString('echo ', substr($inhalt, $anfang, $ende - $anfang));
}
public function testVerbrauchskostenreportVerwendetNeutraleBegriffe(): void
{
$dateien = [
'/../README.md',
'/../docs/module/README.md',
'/../docs/module/Verbrauchskostenreport/README.md',
'/../Verbrauchskostenreport/README.md',
'/../Verbrauchskostenreport/form.json',
'/../Verbrauchskostenreport/module.json',
'/../Verbrauchskostenreport/module.php',
];
foreach ($dateien as $datei) {
$inhalt = file_get_contents(__DIR__ . $datei);
self::assertNotFalse($inhalt);
self::assertDoesNotMatchRegularExpression(
'/Abrechn|(^|[^A-Za-z])Rechnung([^A-Za-z]|$)|Invoice|Billing/i',
$inhalt,
$datei
);
}
}
}