refactor(tests): remove redundant tests and fix assertion style

Remove subset/duplicate architecture tests already covered by broader
checks, and replace assertTrue(true) with self::addToAssertionCount(1)
for explicit no-exception-thrown intent.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-03-25 18:46:49 +01:00
parent cb5f7037b2
commit c609753570
19 changed files with 111 additions and 284 deletions

View File

@@ -4,6 +4,7 @@ namespace MintyPHP\Repository\Audit;
use MintyPHP\DB;
use MintyPHP\Repository\Support\RepoQuery;
use MintyPHP\Repository\Support\RepositoryArrayHelper;
/** Records API request/response audit entries with status codes, timing, and error details. */
class ApiAuditLogRepository implements ApiAuditLogRepositoryInterface
@@ -178,7 +179,7 @@ class ApiAuditLogRepository implements ApiAuditLogRepositoryInterface
$methods = [];
if (is_array($methodRows)) {
foreach ($methodRows as $row) {
$flat = self::flattenRow($row);
$flat = RepositoryArrayHelper::flattenRow($row);
$method = strtoupper(trim((string) ($flat['method'] ?? '')));
if ($method === '') {
continue;
@@ -208,7 +209,7 @@ class ApiAuditLogRepository implements ApiAuditLogRepositoryInterface
$users = [];
if (is_array($userRows)) {
foreach ($userRows as $row) {
$flat = self::flattenRow($row);
$flat = RepositoryArrayHelper::flattenRow($row);
$id = (int) ($flat['user_id'] ?? 0);
if ($id <= 0) {
continue;
@@ -241,7 +242,7 @@ class ApiAuditLogRepository implements ApiAuditLogRepositoryInterface
$tenants = [];
if (is_array($tenantRows)) {
foreach ($tenantRows as $row) {
$flat = self::flattenRow($row);
$flat = RepositoryArrayHelper::flattenRow($row);
$id = (int) ($flat['tenant_id'] ?? 0);
if ($id <= 0) {
continue;
@@ -334,24 +335,4 @@ class ApiAuditLogRepository implements ApiAuditLogRepositoryInterface
return $log;
}
/**
* @return array<string, mixed>
*/
private static function flattenRow(mixed $row): array
{
if (!is_array($row)) {
return [];
}
$flat = [];
foreach ($row as $key => $value) {
if (is_array($value)) {
$flat = array_merge($flat, $value);
} elseif (is_string($key)) {
$flat[$key] = $value;
}
}
return $flat;
}
}

View File

@@ -5,6 +5,7 @@ namespace MintyPHP\Repository\Audit;
use MintyPHP\DB;
use MintyPHP\Domain\Taxonomy\ImportAuditStatus;
use MintyPHP\Repository\Support\RepoQuery;
use MintyPHP\Repository\Support\RepositoryArrayHelper;
/** Tracks CSV import runs including source file, row counts, status, and completion metadata. */
class ImportAuditRunRepository implements ImportAuditRunRepositoryInterface
@@ -202,7 +203,7 @@ class ImportAuditRunRepository implements ImportAuditRunRepositoryInterface
$users = [];
if (is_array($userRows)) {
foreach ($userRows as $row) {
$flat = self::flattenRow($row);
$flat = RepositoryArrayHelper::flattenRow($row);
$id = (int) ($flat['user_id'] ?? 0);
if ($id <= 0) {
continue;
@@ -298,24 +299,4 @@ class ImportAuditRunRepository implements ImportAuditRunRepositoryInterface
return $item;
}
/**
* @return array<string, mixed>
*/
private static function flattenRow(mixed $row): array
{
if (!is_array($row)) {
return [];
}
$flat = [];
foreach ($row as $key => $value) {
if (is_array($value)) {
$flat = array_merge($flat, $value);
} elseif (is_string($key)) {
$flat[$key] = $value;
}
}
return $flat;
}
}

View File

@@ -6,6 +6,7 @@ use MintyPHP\DB;
use MintyPHP\Domain\Taxonomy\SystemAuditChannel;
use MintyPHP\Domain\Taxonomy\SystemAuditOutcome;
use MintyPHP\Repository\Support\RepoQuery;
use MintyPHP\Repository\Support\RepositoryArrayHelper;
/** Persists system audit events with actor, target, outcome, channel, and hashed request metadata. */
class SystemAuditLogRepository implements SystemAuditLogRepositoryInterface
@@ -205,7 +206,7 @@ class SystemAuditLogRepository implements SystemAuditLogRepositoryInterface
$eventTypes = [];
if (is_array($eventRows)) {
foreach ($eventRows as $row) {
$flat = self::flattenRow($row);
$flat = RepositoryArrayHelper::flattenRow($row);
$eventType = strtolower(trim((string) ($flat['event_type'] ?? '')));
if ($eventType === '' || strlen($eventType) > 64) {
continue;
@@ -238,7 +239,7 @@ class SystemAuditLogRepository implements SystemAuditLogRepositoryInterface
$actors = [];
if (is_array($actorRows)) {
foreach ($actorRows as $row) {
$flat = self::flattenRow($row);
$flat = RepositoryArrayHelper::flattenRow($row);
$id = (int) ($flat['actor_user_id'] ?? 0);
if ($id <= 0) {
continue;
@@ -335,24 +336,4 @@ class SystemAuditLogRepository implements SystemAuditLogRepositoryInterface
return $log;
}
/**
* @return array<string, mixed>
*/
private static function flattenRow(mixed $row): array
{
if (!is_array($row)) {
return [];
}
$flat = [];
foreach ($row as $key => $value) {
if (is_array($value)) {
$flat = array_merge($flat, $value);
} elseif (is_string($key)) {
$flat[$key] = $value;
}
}
return $flat;
}
}

View File

@@ -7,6 +7,7 @@ use MintyPHP\Domain\Taxonomy\UserLifecycleAction;
use MintyPHP\Domain\Taxonomy\UserLifecycleStatus;
use MintyPHP\Domain\Taxonomy\UserLifecycleTriggerType;
use MintyPHP\Repository\Support\RepoQuery;
use MintyPHP\Repository\Support\RepositoryArrayHelper;
/** Records user lifecycle transitions (deactivation, deletion, restore) with reason codes and snapshots. */
class UserLifecycleAuditRepository implements UserLifecycleAuditRepositoryInterface
@@ -204,7 +205,7 @@ class UserLifecycleAuditRepository implements UserLifecycleAuditRepositoryInterf
$actions = [];
if (is_array($actionRows)) {
foreach ($actionRows as $row) {
$flat = self::flattenRow($row);
$flat = RepositoryArrayHelper::flattenRow($row);
$action = strtolower(trim((string) ($flat['action'] ?? '')));
if (UserLifecycleAction::tryNormalize($action) === null) {
continue;
@@ -230,7 +231,7 @@ class UserLifecycleAuditRepository implements UserLifecycleAuditRepositoryInterf
$statuses = [];
if (is_array($statusRows)) {
foreach ($statusRows as $row) {
$flat = self::flattenRow($row);
$flat = RepositoryArrayHelper::flattenRow($row);
$status = strtolower(trim((string) ($flat['status'] ?? '')));
if (UserLifecycleStatus::tryNormalize($status) === null) {
continue;
@@ -256,7 +257,7 @@ class UserLifecycleAuditRepository implements UserLifecycleAuditRepositoryInterf
$triggerTypes = [];
if (is_array($triggerRows)) {
foreach ($triggerRows as $row) {
$flat = self::flattenRow($row);
$flat = RepositoryArrayHelper::flattenRow($row);
$triggerType = strtolower(trim((string) ($flat['trigger_type'] ?? '')));
if (UserLifecycleTriggerType::tryNormalize($triggerType) === null) {
continue;
@@ -286,7 +287,7 @@ class UserLifecycleAuditRepository implements UserLifecycleAuditRepositoryInterf
$actors = [];
if (is_array($actorRows)) {
foreach ($actorRows as $row) {
$flat = self::flattenRow($row);
$flat = RepositoryArrayHelper::flattenRow($row);
$id = (int) ($flat['actor_user_id'] ?? 0);
if ($id <= 0) {
continue;
@@ -445,24 +446,4 @@ class UserLifecycleAuditRepository implements UserLifecycleAuditRepositoryInterf
return $item;
}
/**
* @return array<string, mixed>
*/
private static function flattenRow(mixed $row): array
{
if (!is_array($row)) {
return [];
}
$flat = [];
foreach ($row as $key => $value) {
if (is_array($value)) {
$flat = array_merge($flat, $value);
} elseif (is_string($key)) {
$flat[$key] = $value;
}
}
return $flat;
}
}

View File

@@ -70,4 +70,27 @@ final class RepositoryArrayHelper
return array_values(array_filter($ids, static fn (int $id): bool => $id > 0));
}
/**
* Flatten a MintyPHP DB row that can contain nested table-key arrays.
*
* @return array<string, mixed>
*/
public static function flattenRow(mixed $row): array
{
if (!is_array($row)) {
return [];
}
$flat = [];
foreach ($row as $key => $value) {
if (is_array($value)) {
$flat = array_merge($flat, $value);
} elseif (is_string($key)) {
$flat[$key] = $value;
}
}
return $flat;
}
}