From ac9cc4955a93198219d9a52f552baf9a3799315d Mon Sep 17 00:00:00 2001 From: fs Date: Thu, 19 Mar 2026 18:48:16 +0100 Subject: [PATCH] Split public page contracts --- phpunit.xml | 6 +++-- .../PublicPageAdminContractTest.php | 23 +++++++++++++++++++ ....php => PublicPageRoutingContractTest.php} | 19 +++------------ tests/README.md | 4 ++-- 4 files changed, 32 insertions(+), 20 deletions(-) create mode 100644 tests/Architecture/PublicPageAdminContractTest.php rename tests/Architecture/{PublicPageContractTest.php => PublicPageRoutingContractTest.php} (56%) diff --git a/phpunit.xml b/phpunit.xml index c6eba8d..0d6f653 100644 --- a/phpunit.xml +++ b/phpunit.xml @@ -37,7 +37,8 @@ tests/Architecture/FileStorageContractTest.php tests/Architecture/PostEndpointCsrfContractTest.php tests/Architecture/PostRedirectGetContractTest.php - tests/Architecture/PublicPageContractTest.php + tests/Architecture/PublicPageAdminContractTest.php + tests/Architecture/PublicPageRoutingContractTest.php tests/Architecture/SecurityCryptoContractTest.php tests/Architecture/SecurityLoggingContractTest.php @@ -51,7 +52,8 @@ tests/Architecture/DetailActionPolicyContractTest.php tests/Architecture/DetailPageContractTest.php tests/Architecture/DetailValidationSummaryContractTest.php - tests/Architecture/FilterDrawerContractTest.php + tests/Architecture/FilterDrawerRuntimeContractTest.php + tests/Architecture/FilterDrawerTemplateContractTest.php tests/Architecture/FrontendRuntimeComponentContractTest.php tests/Architecture/FrontendRuntimeEntrypointContractTest.php tests/Architecture/FrontendRuntimeHostContractTest.php diff --git a/tests/Architecture/PublicPageAdminContractTest.php b/tests/Architecture/PublicPageAdminContractTest.php new file mode 100644 index 0000000..cf1aeb8 --- /dev/null +++ b/tests/Architecture/PublicPageAdminContractTest.php @@ -0,0 +1,23 @@ +readProjectFile('pages/page/index($slug).php'); + $copyAction = $this->readProjectFile('pages/page/copy-language().php'); + + $this->assertStringContainsString('UiAccessService::class', $indexAction); + $this->assertStringContainsString('SettingsAuthorizationPolicy::ABILITY_ADMIN_SETTINGS_UPDATE', $indexAction); + $this->assertStringNotContainsString('$canEdit = $currentUserId > 0;', $indexAction); + + $this->assertStringContainsString('UiAccessService::class', $copyAction); + $this->assertStringContainsString('SettingsAuthorizationPolicy::ABILITY_ADMIN_SETTINGS_UPDATE', $copyAction); + } +} diff --git a/tests/Architecture/PublicPageContractTest.php b/tests/Architecture/PublicPageRoutingContractTest.php similarity index 56% rename from tests/Architecture/PublicPageContractTest.php rename to tests/Architecture/PublicPageRoutingContractTest.php index 4bebaf3..3487d1b 100644 --- a/tests/Architecture/PublicPageContractTest.php +++ b/tests/Architecture/PublicPageRoutingContractTest.php @@ -4,13 +4,13 @@ namespace MintyPHP\Tests\Architecture; use PHPUnit\Framework\TestCase; -class PublicPageContractTest extends TestCase +class PublicPageRoutingContractTest extends TestCase { use ProjectFileAssertionSupport; public function testPublicStaticPageRoutesPointToPublicPageTargets(): void { - $routes = include $this->projectRootPath() . '/config/routes.php'; + $routes = include dirname(__DIR__, 2) . '/config/routes.php'; $this->assertIsArray($routes); $byPath = []; @@ -34,23 +34,10 @@ class PublicPageContractTest extends TestCase public function testPageTemplatesAreSeparatedByContext(): void { - $root = $this->projectRootPath(); + $root = dirname(__DIR__, 2); $this->assertFileExists($root . '/pages/page/index(default).phtml'); $this->assertFileDoesNotExist($root . '/pages/page/index(page).phtml'); $this->assertFileExists($root . '/pages/public-page/index(page).phtml'); } - - public function testPageMutationsUseSettingsUpdateCapabilityGuard(): void - { - $indexAction = $this->readProjectFile('pages/page/index($slug).php'); - $copyAction = $this->readProjectFile('pages/page/copy-language().php'); - - $this->assertStringContainsString('UiAccessService::class', $indexAction); - $this->assertStringContainsString('SettingsAuthorizationPolicy::ABILITY_ADMIN_SETTINGS_UPDATE', $indexAction); - $this->assertStringNotContainsString('$canEdit = $currentUserId > 0;', $indexAction); - - $this->assertStringContainsString('UiAccessService::class', $copyAction); - $this->assertStringContainsString('SettingsAuthorizationPolicy::ABILITY_ADMIN_SETTINGS_UPDATE', $copyAction); - } } diff --git a/tests/README.md b/tests/README.md index 6167adf..53dc58d 100644 --- a/tests/README.md +++ b/tests/README.md @@ -32,8 +32,8 @@ ohne dass jede Aenderung immer die komplette Suite im Kopf behalten muss. ## Naechste Refactor-Kandidaten -- `tests/Architecture/FilterDrawerContractTest.php` -- `tests/Architecture/PublicPageContractTest.php` - `tests/Architecture/CodexSkillsContractTest.php` - `tests/Architecture/ModuleRegistryContractTest.php` - `tests/Architecture/AgentSystemContractTest.php` +- `tests/Architecture/DetailValidationSummaryContractTest.php` +- `tests/Architecture/DetailActionPolicyContractTest.php`