feat: PresetScope und PresetBook – Preset-Bestand im Divi-Speicherformat
Co-Authored-By: Claude Haiku 5.5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Haiku 5.5
parent
36af846b3e
commit
578ccba118
@@ -0,0 +1,48 @@
|
||||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace LIT\MCP\Tests\Unit\Integrations\Divi\Design;
|
||||
|
||||
use InvalidArgumentException;
|
||||
use LIT\MCP\Integrations\Divi\Design\PresetScope;
|
||||
use PHPUnit\Framework\TestCase;
|
||||
|
||||
final class PresetScopeTest extends TestCase
|
||||
{
|
||||
public function testShortAndFullNames(): void
|
||||
{
|
||||
self::assertSame('divi/button', PresetScope::fromInput(['module' => 'button'], 'items[0]')->name);
|
||||
self::assertSame('module', PresetScope::fromInput(['module' => 'divi/button'], 'items[0]')->kind);
|
||||
$group = PresetScope::fromInput(['group' => 'font-body'], 'items[0]');
|
||||
self::assertSame(['group', 'divi/font-body'], [$group->kind, $group->name]);
|
||||
self::assertSame('Gruppen-Preset divi/font-body', $group->label());
|
||||
self::assertTrue($group->equals(new PresetScope('group', 'divi/font-body')));
|
||||
}
|
||||
|
||||
/** @return array<string, array{array<string, mixed>, string}> */
|
||||
public static function invalid(): array
|
||||
{
|
||||
return [
|
||||
'nothing' => [[], 'items[0]'],
|
||||
'both' => [['module' => 'button', 'group' => 'font'], 'items[0]'],
|
||||
'not a name' => [['module' => 'Button 1'], 'items[0].module'],
|
||||
'not a string' => [['group' => 5], 'items[0].group'],
|
||||
'two slashes' => [['module' => 'divi/a/b'], 'items[0].module'],
|
||||
];
|
||||
}
|
||||
|
||||
/**
|
||||
* @dataProvider invalid
|
||||
* @param array<string, mixed> $item
|
||||
*/
|
||||
public function testInvalidInputNamesTheField(array $item, string $field): void
|
||||
{
|
||||
try {
|
||||
PresetScope::fromInput($item, 'items[0]');
|
||||
self::fail('expected an exception');
|
||||
} catch (InvalidArgumentException $e) {
|
||||
self::assertStringStartsWith($field . ':', $e->getMessage());
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user