Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
42 lines
1.4 KiB
PHP
42 lines
1.4 KiB
PHP
<?php
|
||
|
||
declare(strict_types=1);
|
||
|
||
namespace LIT\MCP\Tests\Support;
|
||
|
||
use LIT\MCP\Integrations\Divi\Release\CompatibilityMatrix;
|
||
use LIT\MCP\Integrations\Divi\Release\DiviFeature;
|
||
use LIT\MCP\Integrations\Divi\Release\FeatureStatus;
|
||
use LIT\MCP\Integrations\Divi\Release\ReleaseState;
|
||
use LIT\MCP\Integrations\Divi\Release\ReleaseStatus;
|
||
|
||
/** Release statuses for tests: every feature released except the named ones. */
|
||
final class ReleaseMatrices
|
||
{
|
||
/** @param list<DiviFeature> $locked */
|
||
public static function matrix(array $locked, ReleaseState $state = ReleaseState::Untested): CompatibilityMatrix
|
||
{
|
||
$features = [];
|
||
foreach (DiviFeature::cases() as $feature) {
|
||
$features[$feature->value] = in_array($feature, $locked, true)
|
||
? new FeatureStatus(
|
||
$feature,
|
||
$state,
|
||
$state === ReleaseState::Incompatible ? ['Seiten: et_x() – Signatur geändert'] : []
|
||
)
|
||
: new FeatureStatus($feature, ReleaseState::Released, [], ReleaseStatus::SOURCE_CODE);
|
||
}
|
||
|
||
return new CompatibilityMatrix($features);
|
||
}
|
||
|
||
/** @param list<DiviFeature> $locked */
|
||
public static function status(
|
||
array $locked,
|
||
ReleaseState $state = ReleaseState::Untested,
|
||
string $version = '5.3.0'
|
||
): ReleaseStatus {
|
||
return ReleaseStatus::of($version, self::matrix($locked, $state));
|
||
}
|
||
}
|