diff --git a/phpunit.xml b/phpunit.xml
index 93e8811..a49056b 100644
--- a/phpunit.xml
+++ b/phpunit.xml
@@ -26,7 +26,11 @@
tests/Architecture/ModuleProviderContractTest.php
tests/Architecture/ModuleUiContractTest.php
tests/Architecture/RepositoryInterfaceContractTest.php
- tests/Architecture/StatusTaxonomyContractTest.php
+ tests/Architecture/StatusTaxonomyDataContractTest.php
+ tests/Architecture/StatusTaxonomyEnumContractTest.php
+ tests/Architecture/StatusTaxonomyFilterSchemaContractTest.php
+ tests/Architecture/StatusTaxonomyLiteralGuardContractTest.php
+ tests/Architecture/StatusTaxonomyUiContractTest.php
tests/Architecture/AuthzAdminMasterDataContractTest.php
diff --git a/tests/Architecture/StatusTaxonomyContractTest.php b/tests/Architecture/StatusTaxonomyContractFiles.php
similarity index 63%
rename from tests/Architecture/StatusTaxonomyContractTest.php
rename to tests/Architecture/StatusTaxonomyContractFiles.php
index a4bdb07..9889698 100644
--- a/tests/Architecture/StatusTaxonomyContractTest.php
+++ b/tests/Architecture/StatusTaxonomyContractFiles.php
@@ -2,16 +2,12 @@
namespace MintyPHP\Tests\Architecture;
-use PHPUnit\Framework\TestCase;
-
-class StatusTaxonomyContractTest extends TestCase
+final class StatusTaxonomyContractFiles
{
- use ProjectFileAssertionSupport;
-
/**
* @return list
*/
- private function taxonomyEnumFiles(): array
+ public static function taxonomyEnumFiles(): array
{
return [
'lib/Domain/Taxonomy/SystemAuditOutcome.php',
@@ -32,7 +28,7 @@ class StatusTaxonomyContractTest extends TestCase
/**
* @return array>
*/
- private function taxonomySchemaExpectations(): array
+ public static function taxonomySchemaExpectations(): array
{
return [
'pages/admin/system-audit/filter-schema.php' => [
@@ -63,7 +59,7 @@ class StatusTaxonomyContractTest extends TestCase
/**
* @return list
*/
- private function taxonomyDataEndpointFiles(): array
+ public static function taxonomyDataEndpointFiles(): array
{
return [
'pages/admin/system-audit/data().php',
@@ -79,7 +75,7 @@ class StatusTaxonomyContractTest extends TestCase
/**
* @return list
*/
- private function taxonomyLiteralGuardFiles(): array
+ public static function taxonomyLiteralGuardFiles(): array
{
return [
'lib/Service/Audit/SystemAuditService.php',
@@ -113,39 +109,12 @@ class StatusTaxonomyContractTest extends TestCase
];
}
- public function testTaxonomyEnumFilesUseSharedTraitAndRequiredMethods(): void
+ /**
+ * @return list
+ */
+ public static function forbiddenLiteralPatterns(): array
{
- foreach ($this->taxonomyEnumFiles() as $file) {
- $content = $this->readProjectFile($file);
- $this->assertStringContainsString('enum ', $content, $file);
- $this->assertStringContainsString('use SupportsStringTaxonomy;', $content, $file);
- $this->assertStringContainsString('function labelToken()', $content, $file);
- $this->assertStringContainsString('function badgeVariant()', $content, $file);
- }
- }
-
- public function testFilterSchemasReadTaxonomyValuesFromEnums(): void
- {
- foreach ($this->taxonomySchemaExpectations() as $file => $snippets) {
- $content = $this->readProjectFile($file);
- foreach ($snippets as $snippet) {
- $this->assertStringContainsString($snippet, $content, $file);
- }
- }
- }
-
- public function testDataEndpointsUseEnumBasedBadgeAndLabelResolution(): void
- {
- foreach ($this->taxonomyDataEndpointFiles() as $file) {
- $content = $this->readProjectFile($file);
- $this->assertStringContainsString('->badgeVariant()', $content, $file);
- $this->assertStringContainsString('->labelToken()', $content, $file);
- }
- }
-
- public function testNoLegacyLiteralTaxonomyChecksRemainInMigratedFiles(): void
- {
- $forbiddenPatterns = [
+ return [
"/\\bstatus\\s*=\\s*'(running|success|partial|failed|skipped|queued|sent|active|inactive)'/",
"/\\boutcome\\s*=\\s*'(success|failed|denied)'/",
"/\\bchannel\\s*=\\s*'(web|api|scheduler|cli)'/",
@@ -155,22 +124,5 @@ class StatusTaxonomyContractTest extends TestCase
"/['\\\"]actions['\\\"]\\s*=>\\s*'restore'/",
"/in_array\\([^\\n]*\\[(?:[^\\]]*'(?:success|failed|denied|running|partial|skipped|queued|sent|active|inactive|scheduler|manual|web|api|cli|deactivate|delete|restore|ok|lock_not_acquired|unexpected_error)')/",
];
-
- foreach ($this->taxonomyLiteralGuardFiles() as $file) {
- $content = $this->readProjectFile($file);
- foreach ($forbiddenPatterns as $pattern) {
- $this->assertSame(0, preg_match($pattern, $content), $file . ' pattern=' . $pattern);
- }
- }
- }
-
- public function testImportAuditIndexTemplateDoesNotUseLegacyStatusMapper(): void
- {
- $content = $this->readProjectFile('pages/admin/import-audit/index(default).phtml');
- $moduleContent = $this->readProjectFile('web/js/pages/admin-import-audit-index.js');
- $this->assertStringNotContainsString('const statusLabel = (value) =>', $moduleContent);
- $this->assertStringNotContainsString("if (key === 'running')", $moduleContent);
- $this->assertStringContainsString('cell.label || \'-\'', $moduleContent);
- $this->assertStringContainsString("assetVersion('js/pages/admin-import-audit-index.js')", $content);
}
}
diff --git a/tests/Architecture/StatusTaxonomyDataContractTest.php b/tests/Architecture/StatusTaxonomyDataContractTest.php
new file mode 100644
index 0000000..b884c4d
--- /dev/null
+++ b/tests/Architecture/StatusTaxonomyDataContractTest.php
@@ -0,0 +1,19 @@
+readProjectFile($file);
+ $this->assertStringContainsString('->badgeVariant()', $content, $file);
+ $this->assertStringContainsString('->labelToken()', $content, $file);
+ }
+ }
+}
diff --git a/tests/Architecture/StatusTaxonomyEnumContractTest.php b/tests/Architecture/StatusTaxonomyEnumContractTest.php
new file mode 100644
index 0000000..02889de
--- /dev/null
+++ b/tests/Architecture/StatusTaxonomyEnumContractTest.php
@@ -0,0 +1,21 @@
+readProjectFile($file);
+ $this->assertStringContainsString('enum ', $content, $file);
+ $this->assertStringContainsString('use SupportsStringTaxonomy;', $content, $file);
+ $this->assertStringContainsString('function labelToken()', $content, $file);
+ $this->assertStringContainsString('function badgeVariant()', $content, $file);
+ }
+ }
+}
diff --git a/tests/Architecture/StatusTaxonomyFilterSchemaContractTest.php b/tests/Architecture/StatusTaxonomyFilterSchemaContractTest.php
new file mode 100644
index 0000000..856657e
--- /dev/null
+++ b/tests/Architecture/StatusTaxonomyFilterSchemaContractTest.php
@@ -0,0 +1,20 @@
+ $snippets) {
+ $content = $this->readProjectFile($file);
+ foreach ($snippets as $snippet) {
+ $this->assertStringContainsString($snippet, $content, $file);
+ }
+ }
+ }
+}
diff --git a/tests/Architecture/StatusTaxonomyLiteralGuardContractTest.php b/tests/Architecture/StatusTaxonomyLiteralGuardContractTest.php
new file mode 100644
index 0000000..e248c5a
--- /dev/null
+++ b/tests/Architecture/StatusTaxonomyLiteralGuardContractTest.php
@@ -0,0 +1,20 @@
+readProjectFile($file);
+ foreach (StatusTaxonomyContractFiles::forbiddenLiteralPatterns() as $pattern) {
+ $this->assertSame(0, preg_match($pattern, $content), $file . ' pattern=' . $pattern);
+ }
+ }
+ }
+}
diff --git a/tests/Architecture/StatusTaxonomyUiContractTest.php b/tests/Architecture/StatusTaxonomyUiContractTest.php
new file mode 100644
index 0000000..ba86382
--- /dev/null
+++ b/tests/Architecture/StatusTaxonomyUiContractTest.php
@@ -0,0 +1,20 @@
+readProjectFile('pages/admin/import-audit/index(default).phtml');
+ $moduleContent = $this->readProjectFile('web/js/pages/admin-import-audit-index.js');
+ $this->assertStringNotContainsString('const statusLabel = (value) =>', $moduleContent);
+ $this->assertStringNotContainsString("if (key === 'running')", $moduleContent);
+ $this->assertStringContainsString('cell.label || \'-\'', $moduleContent);
+ $this->assertStringContainsString("assetVersion('js/pages/admin-import-audit-index.js')", $content);
+ }
+}
diff --git a/tests/README.md b/tests/README.md
index d0eaf1b..a3b3105 100644
--- a/tests/README.md
+++ b/tests/README.md
@@ -33,6 +33,6 @@ ohne dass jede Aenderung immer die komplette Suite im Kopf behalten muss.
## Naechste Refactor-Kandidaten
- `tests/Architecture/ContainerFactoryContractTest.php`
-- `tests/Architecture/StatusTaxonomyContractTest.php`
- `tests/Architecture/AuthLoginAccessibilityContractTest.php`
- `tests/Architecture/SecurityCryptoContractTest.php`
+- `tests/Architecture/AsideNavigationContractTest.php`