fix: Variablen-Detach meldet verbleibende eingebettete Verweise und lehnt Werte mit Verweis, Markup oder leerem Inhalt ab
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Sonnet 5.5
parent
e951cc1353
commit
62f8465e60
@@ -9,6 +9,8 @@ use Closure;
|
||||
use LIT\MCP\Abilities\WriteFailed;
|
||||
use LIT\MCP\Integrations\Divi\BlockTree\Block;
|
||||
use LIT\MCP\Integrations\Divi\BlockTree\GlobalInstance;
|
||||
use LIT\MCP\Integrations\Divi\BlockTree\Json;
|
||||
use LIT\MCP\Integrations\Divi\Design\VariableDetachRewrite;
|
||||
use LIT\MCP\Integrations\Divi\Design\NodeRewrite;
|
||||
use LIT\MCP\Integrations\Divi\Design\PageRewriter;
|
||||
use LIT\MCP\Integrations\Divi\Library\GlobalUsages;
|
||||
@@ -368,6 +370,33 @@ final class PageRewriterTest extends TestCase
|
||||
self::assertSame(['102'], array_column($this->log->records, 'object_id'));
|
||||
}
|
||||
|
||||
/** V9: a page that only mentions the variable inside a longer text is not saved, but reported as skipped. */
|
||||
public function testVariableReferencesLeftBehindAreSkippedEvenOnAPageThatIsNotSaved(): void
|
||||
{
|
||||
$embedded = '<!-- wp:divi/text ' . Json::encode(['content' => ['innerContent' => ['desktop' => ['value' => 'Ab '
|
||||
. VariableDetachRewriteTest::ref('gvid-radius0001') . ' Rundung']]]]) . ' /-->';
|
||||
$whole = '<!-- wp:divi/text ' . Json::encode(['content' => ['innerContent' => ['desktop' => ['value'
|
||||
=> VariableDetachRewriteTest::ref('gvid-radius0001')]]]]) . ' /-->';
|
||||
$rewriter = $this->rewriter([
|
||||
self::page(101, self::layout($embedded)),
|
||||
self::page(102, self::layout($whole, $embedded)),
|
||||
]);
|
||||
$rewrite = static fn (): NodeRewrite => new VariableDetachRewrite('gvid-radius0001', '8px', 'numbers');
|
||||
|
||||
$preview = $rewriter->preview(self::query(), $rewrite, null);
|
||||
$result = $rewriter->apply(self::ABILITY, self::query(), $rewrite, null, self::SUMMARY);
|
||||
|
||||
self::assertSame(1, $preview['pages_count']);
|
||||
self::assertSame(
|
||||
[101, 102],
|
||||
array_column($preview['skipped'], 'post_id')
|
||||
);
|
||||
self::assertStringStartsWith('s0.r0.c0.m0: Die Variable steht hier eingebettet', $preview['skipped'][0]['reason']);
|
||||
self::assertStringStartsWith('s0.r0.c0.m1: ', $preview['skipped'][1]['reason']);
|
||||
self::assertSame([102], array_column($result['saved'], 'post_id'));
|
||||
self::assertSame([101, 102], array_column($result['skipped'], 'post_id'));
|
||||
}
|
||||
|
||||
/** R8: pages loadWritable() refuses (Divi 4, unparsable – fail-closed candidates) are skipped, not remaining. */
|
||||
public function testRefusedPagesAreSkippedWithTheLoaderMessage(): void
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user