fix: content-create names the Divi layout when its write fails (S50)
A failing Divi layout write discarded the draft with the fields/terms message (REASON_EXTRAS); it now passes NewDraft::REASON_LAYOUT (ledger T9). Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01At3V6SjwbMe6eMzVGW3Hs7
This commit is contained in:
@@ -144,7 +144,7 @@ final class ContentCreateAbility implements Ability
|
||||
try {
|
||||
$layout = $withDivi ? $this->divi?->write($postId, $postType, self::sections($input)) : null;
|
||||
} catch (Throwable $e) {
|
||||
$draft->discard($postId, $e, NewDraft::REASON_EXTRAS);
|
||||
$draft->discard($postId, $e, NewDraft::REASON_LAYOUT);
|
||||
}
|
||||
if ($layout instanceof WP_Error) {
|
||||
return $draft->refuse($postId, $layout);
|
||||
|
||||
@@ -26,6 +26,7 @@ final class NewDraft
|
||||
{
|
||||
public const REASON_INSERT = 'WordPress hat beim Anlegen des Eintrags einen Fehler gemeldet.';
|
||||
public const REASON_EXTRAS = 'Felder, Begriffe oder Beitragsbild konnten nicht gespeichert werden.';
|
||||
public const REASON_LAYOUT = 'Das Divi-Layout konnte nicht gespeichert werden.';
|
||||
|
||||
public function __construct(
|
||||
private PostWriter $writer,
|
||||
|
||||
@@ -13,6 +13,7 @@ use LIT\MCP\Integrations\Divi\Pages\DiviContentComposer;
|
||||
use LIT\MCP\Integrations\Divi\Pages\DiviSaver;
|
||||
use LIT\MCP\Integrations\WordPress\Content\ContentComposer;
|
||||
use LIT\MCP\Integrations\WordPress\Content\ContentCreateAbility;
|
||||
use LIT\MCP\Integrations\WordPress\Content\NewDraft;
|
||||
use LIT\MCP\Integrations\WordPress\Content\PostWriter;
|
||||
use LIT\MCP\Integrations\WordPress\Schema\ContentSchema;
|
||||
use LIT\MCP\Tests\Support\DiviWriterFixture;
|
||||
@@ -168,6 +169,9 @@ final class ContentCreateDiviTest extends TestCase
|
||||
self::fail('WriteFailed expected');
|
||||
} catch (WriteFailed $e) {
|
||||
self::assertTrue($e->rolledBack);
|
||||
// Ruling S50 / ledger T9: the client reads about the layout, not about fields or terms.
|
||||
self::assertSame(NewDraft::REASON_LAYOUT, $e->reason);
|
||||
self::assertStringContainsString('Divi-Layout', $e->reason);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user