Add Edge Agent implementation for gateway connection lifecycle, agent commands, Shelly device discovery, relay control, and WebSocket communication with broker. Include unit tests for critical flows.

This commit is contained in:
Jeppe Bundgaard
2026-04-08 19:01:42 +02:00
parent 653680376a
commit 45b7250480
101 changed files with 21583 additions and 16 deletions
@@ -0,0 +1,39 @@
<?php
function department_daily_reports_openapi_content_or_skip(): string
{
$candidates = [WD . '/openapi.yaml'];
for ($depth = 1; $depth <= 8; $depth++) {
$candidates[] = dirname(WD, $depth) . DIRECTORY_SEPARATOR . 'openapi.yaml';
}
$cwd = getcwd();
if (is_string($cwd) && $cwd !== '') {
$candidates[] = $cwd . DIRECTORY_SEPARATOR . 'openapi.yaml';
$candidates[] = dirname($cwd) . DIRECTORY_SEPARATOR . 'openapi.yaml';
}
foreach (array_values(array_unique($candidates)) as $candidate) {
if (!is_file($candidate)) {
continue;
}
$content = file_get_contents($candidate);
if ($content !== false) {
return $content;
}
}
test()->markTestSkipped('openapi.yaml is not mounted in this test container.');
}
it('documents the daily report overview endpoint and reusable schemas in openapi', function (): void {
$content = department_daily_reports_openapi_content_or_skip();
expect($content)->toContain('/departments/daily-reports/overview:');
expect($content)->toContain('operationId: getDailyReportOverview');
expect($content)->toContain('DepartmentDailyReportOverviewResponse:');
expect($content)->toContain('DepartmentDailyReportMetric:');
expect($content)->toContain('DepartmentDailyReportProductTile:');
expect($content)->toContain('- name: department_ids');
});