Split aside navigation contracts

This commit is contained in:
2026-03-19 19:13:51 +01:00
parent 115723fcd6
commit f7787465f7
4 changed files with 38 additions and 21 deletions

View File

@@ -50,7 +50,8 @@
<file>tests/Architecture/SecurityLoggingTelemetryContractTest.php</file>
</testsuite>
<testsuite name="ArchitectureUI">
<file>tests/Architecture/AsideNavigationContractTest.php</file>
<file>tests/Architecture/AsideNavigationAdminContractTest.php</file>
<file>tests/Architecture/AsideNavigationRuntimeContractTest.php</file>
<file>tests/Architecture/AuthHelpLinksPageContractTest.php</file>
<file>tests/Architecture/AuthHelpLinksPartialContractTest.php</file>
<file>tests/Architecture/AuthLoginFieldAccessibilityContractTest.php</file>

View File

@@ -4,7 +4,7 @@ namespace MintyPHP\Tests\Architecture;
use PHPUnit\Framework\TestCase;
class AsideNavigationContractTest extends TestCase
final class AsideNavigationAdminContractTest extends TestCase
{
use ProjectFileAssertionSupport;
@@ -23,22 +23,4 @@ class AsideNavigationContractTest extends TestCase
$this->assertStringContainsString("'key' => 'admin-logs'", $content);
$this->assertStringContainsString("'key' => 'admin-system'", $content);
}
public function testAsidePanelsUseSharedDetailsOpenStateHelper(): void
{
$content = $this->readProjectFile('web/js/components/app-toggle-aside-panels.js');
$this->assertStringContainsString("import { initPersistedDetailsGroup } from '../core/app-details-open-state.js';", $content);
$this->assertStringContainsString('initPersistedDetailsGroup({', $content);
$this->assertStringContainsString("panel.dataset.asideDetailsOpenActive === '1'", $content);
}
public function testDetailStateUsesSharedDetailsOpenStateHelper(): void
{
$content = $this->readProjectFile('web/js/components/app-details-state.js');
$this->assertStringContainsString("import { initPersistedDetailsGroup } from '../core/app-details-open-state.js';", $content);
$this->assertStringContainsString('initPersistedDetailsGroup({', $content);
$this->assertStringNotContainsString('window.localStorage.setItem(storageKey, JSON.stringify(openKeys));', $content);
}
}

View File

@@ -0,0 +1,34 @@
<?php
namespace MintyPHP\Tests\Architecture;
use PHPUnit\Framework\TestCase;
final class AsideNavigationRuntimeContractTest extends TestCase
{
use ProjectFileAssertionSupport;
public function testAsidePanelsUseSharedDetailsOpenStateHelper(): void
{
$content = $this->readProjectFile('web/js/components/app-toggle-aside-panels.js');
$this->assertStringContainsString(
"import { initPersistedDetailsGroup } from '../core/app-details-open-state.js';",
$content
);
$this->assertStringContainsString('initPersistedDetailsGroup({', $content);
$this->assertStringContainsString("panel.dataset.asideDetailsOpenActive === '1'", $content);
}
public function testDetailStateUsesSharedDetailsOpenStateHelper(): void
{
$content = $this->readProjectFile('web/js/components/app-details-state.js');
$this->assertStringContainsString(
"import { initPersistedDetailsGroup } from '../core/app-details-open-state.js';",
$content
);
$this->assertStringContainsString('initPersistedDetailsGroup({', $content);
$this->assertStringNotContainsString('window.localStorage.setItem(storageKey, JSON.stringify(openKeys));', $content);
}
}

View File

@@ -34,5 +34,5 @@ ohne dass jede Aenderung immer die komplette Suite im Kopf behalten muss.
- `tests/Architecture/ContainerFactoryContractTest.php`
- `tests/Architecture/SecurityCryptoContractTest.php`
- `tests/Architecture/AsideNavigationContractTest.php`
- `tests/Architecture/AuthzApiBootstrapContractTest.php`
- `tests/Architecture/ListTitlebarContractTest.php`