test: shared Divi fixtures in tests/Support (T1)
- DiviFixtures: markup(), givenPost(), schema(), designSystem(), catalog(), dynamicContentRegistry(), maliciousRefs() - moved verbatim out of DiviPageLoaderTest, DesignSystemTest, ModuleCatalogTest, DynamicContentMapTest and VariableRefTest (its malicious() provider now returns maliciousRefs()). - ComposeFixture moves to tests/Support. - DiviWriterFixture: modules(), designReader(), composition(), a recording saver(), log() and writer(&$saved, &$failures, unfiltered, loader) for the five tests that wired the Divi write stack by hand. No test cases or assertions changed (1397 / 5834). Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -7,6 +7,7 @@ namespace LIT\MCP\Tests\Unit\Integrations\Divi\Schema;
|
||||
use Brain\Monkey\Functions;
|
||||
use LIT\MCP\Integrations\Divi\Schema\DiviCatalogAbility;
|
||||
use LIT\MCP\Integrations\Divi\Schema\DiviModules;
|
||||
use LIT\MCP\Tests\Support\DiviFixtures;
|
||||
use LIT\MCP\Tests\Unit\TestCase;
|
||||
use Mockery;
|
||||
|
||||
@@ -15,7 +16,7 @@ final class DiviCatalogAbilityTest extends TestCase
|
||||
private function ability(): DiviCatalogAbility
|
||||
{
|
||||
$modules = Mockery::mock(DiviModules::class);
|
||||
$modules->allows('catalog')->andReturn(ModuleCatalogTest::sampleCatalog());
|
||||
$modules->allows('catalog')->andReturn(DiviFixtures::catalog());
|
||||
|
||||
return new DiviCatalogAbility($modules);
|
||||
}
|
||||
|
||||
@@ -7,27 +7,14 @@ namespace LIT\MCP\Tests\Unit\Integrations\Divi\Schema;
|
||||
use LIT\MCP\Integrations\Divi\Schema\AttrPathIndex;
|
||||
use LIT\MCP\Integrations\Divi\Schema\ModuleCatalog;
|
||||
use LIT\MCP\Integrations\Divi\Schema\ShortformMap;
|
||||
use LIT\MCP\Tests\Support\DiviFixtures;
|
||||
use PHPUnit\Framework\TestCase;
|
||||
|
||||
final class ModuleCatalogTest extends TestCase
|
||||
{
|
||||
/** Real Divi 5.2.1 metadata (tests/Integration/divi-metadata-fixture.php). */
|
||||
public static function sampleCatalog(): ModuleCatalog
|
||||
{
|
||||
$sample = json_decode(
|
||||
(string) file_get_contents(dirname(__DIR__, 4) . '/Fixtures/divi/metadata-sample.json'),
|
||||
true
|
||||
);
|
||||
|
||||
return new ModuleCatalog(
|
||||
$sample['metadata'],
|
||||
static fn (string $name): array => (array) ($sample['defaults'][$name] ?? [])
|
||||
);
|
||||
}
|
||||
|
||||
public function testKnowsModulesTitlesCategoriesAndChildren(): void
|
||||
{
|
||||
$catalog = self::sampleCatalog();
|
||||
$catalog = DiviFixtures::catalog();
|
||||
|
||||
self::assertTrue($catalog->has('divi/button'));
|
||||
self::assertFalse($catalog->has('button'));
|
||||
@@ -44,7 +31,7 @@ final class ModuleCatalogTest extends TestCase
|
||||
|
||||
public function testDerivesAttributePathsFromSettingsAndDefaults(): void
|
||||
{
|
||||
$catalog = self::sampleCatalog();
|
||||
$catalog = DiviFixtures::catalog();
|
||||
|
||||
foreach (
|
||||
[
|
||||
@@ -93,7 +80,7 @@ final class ModuleCatalogTest extends TestCase
|
||||
|
||||
public function testEveryShortformPathIsKnownForTheSampledModules(): void
|
||||
{
|
||||
$catalog = self::sampleCatalog();
|
||||
$catalog = DiviFixtures::catalog();
|
||||
foreach (['text', 'heading', 'button', 'image', 'blurb', 'code', 'accordion-item'] as $type) {
|
||||
foreach (ShortformMap::fields($type) as $field => $spec) {
|
||||
self::assertTrue(
|
||||
@@ -131,7 +118,7 @@ final class ModuleCatalogTest extends TestCase
|
||||
|
||||
public function testDerivesAttributePathKindsFromComponentMetadataWherePossible(): void
|
||||
{
|
||||
$catalog = self::sampleCatalog();
|
||||
$catalog = DiviFixtures::catalog();
|
||||
|
||||
self::assertSame('richtext', $catalog->pathKind('divi/text', 'content.innerContent'));
|
||||
self::assertSame('text', $catalog->pathKind('divi/heading', 'title.innerContent'));
|
||||
@@ -154,7 +141,7 @@ final class ModuleCatalogTest extends TestCase
|
||||
|
||||
public function testLeavesCompositeAttributePathsUnknownRatherThanGuessing(): void
|
||||
{
|
||||
$catalog = self::sampleCatalog();
|
||||
$catalog = DiviFixtures::catalog();
|
||||
|
||||
// button.innerContent's only attrName-annotated node is the "link" sub-group itself
|
||||
// (component.type "group": link text + linkUrl + linkTarget), and its "text" sub-field
|
||||
@@ -172,7 +159,7 @@ final class ModuleCatalogTest extends TestCase
|
||||
*/
|
||||
public function testDerivesPerSubNameKindsForCompositePaths(): void
|
||||
{
|
||||
$catalog = self::sampleCatalog();
|
||||
$catalog = DiviFixtures::catalog();
|
||||
|
||||
// imageIcon.innerContent (divi/blurb): useIcon (toggle), icon (icon-picker), src
|
||||
// (upload, image) each carry attrName + subName + their own field component.
|
||||
|
||||
Reference in New Issue
Block a user