feat: Warnung, wenn lokale Werte ein zugewiesenes Preset überdecken

Co-Authored-By: Claude Haiku 5.5 <noreply@anthropic.com>
This commit is contained in:
Jan-Niclas Loosen
2026-10-18 16:53:38 +02:00
co-authored by Claude Haiku 5.5
parent be6ca5bee0
commit 1f9b50f1a6
5 changed files with 206 additions and 9 deletions
@@ -59,7 +59,14 @@ final class DiviCompositionTest extends TestCase
$writer->expects('presets')->times($reads)->andReturn([
'module' => ['divi/button' => ['default' => 'p-1', 'items' => [
'p-1' => ['id' => 'p-1', 'name' => 'Standard', 'moduleName' => 'divi/button'],
'p-2' => ['id' => 'p-2', 'name' => 'CTA primär', 'moduleName' => 'divi/button'],
'p-2' => [
'id' => 'p-2',
'name' => 'CTA primär',
'moduleName' => 'divi/button',
'attrs' => ['button' => ['decoration' => ['font' => ['font' => [
'desktop' => ['value' => ['color' => '#ffffff']],
]]]]],
],
]]],
'group' => ['divi/font' => ['default' => '', 'items' => [
'g-1' => ['id' => 'g-1', 'name' => 'Fließtext groß', 'groupName' => 'divi/font'],
@@ -238,4 +245,24 @@ final class DiviCompositionTest extends TestCase
self::assertNotSame($seven->presets(), $base->forPost(8)->presets());
self::assertNotSame($base->presets(), $seven->presets());
}
public function testWarningsKnowTheWritersPresets(): void
{
$composition = $this->composition($this->presetSource())->forPost(7);
$button = Block::create('divi/button', [
'modulePreset' => ['p-2'],
'button' => ['decoration' => ['font' => ['font' => ['desktop' => ['value' => ['color' => '#000000']]]]]],
]);
$document = new Document();
$document->append($button);
$index = NodeIndex::build($document);
$warnings = $composition->warnings()->collect($index, [$button]);
$covering = array_values(
array_filter($warnings, static fn (string $w): bool => str_contains($w, 'überdecken'))
);
self::assertCount(1, $covering);
self::assertStringContainsString('„CTA primär“', $covering[0]);
}
}