Files
WP-LIT-MCP/tests/Unit/Integrations/Divi/Release/FeatureTextsTest.php
T

60 lines
2.0 KiB
PHP
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<?php
declare(strict_types=1);
namespace LIT\MCP\Tests\Unit\Integrations\Divi\Release;
use PHPUnit\Framework\TestCase;
use RecursiveDirectoryIterator;
use RecursiveIteratorIterator;
/**
* With a lock per feature (E1–E3) no text may say that "writing" or "Divi" as a whole is locked: only the tools of
* the affected features refuse, every other Divi tool keeps working.
*/
final class FeatureTextsTest extends TestCase
{
private const OLD_PHRASES = [
'Schreibende Divi-Werkzeuge sind gesperrt',
'Schreiben ist gesperrt',
'Schreiben bleibt gesperrt',
'lesende Divi-Werkzeuge funktionieren weiter',
'Divi-Werkzeuge lesen nur',
'bis dahin lesen',
];
/** @return array<string, string> Path => content of the PHP sources and the guides. */
private static function texts(): array
{
$root = dirname(__DIR__, 5);
$texts = [];
foreach (glob($root . '/docs/guides/*.md') ?: [] as $file) {
$texts[$file] = (string) file_get_contents($file);
}
foreach (new RecursiveIteratorIterator(new RecursiveDirectoryIterator($root . '/src')) as $file) {
if (str_ends_with((string) $file, '.php')) {
$texts[(string) $file] = (string) file_get_contents((string) $file);
}
}
return $texts;
}
public function testNoTextLocksWritingAsAWhole(): void
{
$texts = self::texts();
self::assertNotEmpty($texts);
foreach ($texts as $path => $text) {
// Join string literals split over lines ('a ' . 'b') so a phrase cannot hide in a line break.
$text = (string) preg_replace('/\'\s*\.\s*\'/', '', $text);
foreach (self::OLD_PHRASES as $phrase) {
self::assertFalse(
stripos($text, $phrase) !== false,
sprintf('%s still says "%s" – name the feature instead', basename($path), $phrase)
);
}
}
}
}