Data provider for the test testMetadataEnforceSchema.

Return value

array[] The batches of data.

File

core/tests/Drupal/Tests/Core/Theme/Component/ComponentMetadataTest.php, line 55

Class

ComponentMetadataTest
Unit tests for the component metadata class.

Namespace

Drupal\Tests\Core\Theme\Component

Code

public static function dataProviderMetadata() : array {
  return [
    'minimal example without schemas' => [
      [
        'path' => 'foo/bar/component-name',
        'id' => 'core:component-name',
        'name' => 'Component Name',
        'libraryOverrides' => [
          'dependencies' => [
            'core/drupal',
          ],
        ],
        'group' => 'my-group',
        'description' => 'My description',
      ],
      [
        'path' => 'bar/component-name',
        'status' => 'stable',
        'thumbnail' => '',
        'props' => NULL,
      ],
      TRUE,
    ],
    'complete example with schema' => [
      [
        '$schema' => 'https://git.drupalcode.org/project/drupal/-/raw/HEAD/core/assets/schemas/v1/metadata.schema.json',
        'id' => 'core:my-button',
        'machineName' => 'my-button',
        'path' => 'foo/my-other/path',
        'name' => 'Button',
        'description' => 'JavaScript enhanced button that tracks the number of times a user clicked it.',
        'libraryOverrides' => [
          'dependencies' => [
            'core/drupal',
          ],
        ],
        'group' => 'my-group',
        'props' => [
          'type' => 'object',
          'required' => [
            'text',
          ],
          'properties' => [
            'text' => [
              'type' => 'string',
              'title' => 'Title',
              'description' => 'The title for the button',
              'minLength' => 2,
              'examples' => [
                'Press',
                'Submit now',
              ],
            ],
            'iconType' => [
              'type' => 'string',
              'title' => 'Icon Type',
              'enum' => [
                'power',
                'like',
                'external',
              ],
            ],
          ],
        ],
      ],
      [
        'path' => 'my-other/path',
        'status' => 'stable',
        'thumbnail' => '',
        'group' => 'my-group',
        'additionalProperties' => FALSE,
        'props' => [
          'type' => 'object',
          'required' => [
            'text',
          ],
          'additionalProperties' => FALSE,
          'properties' => [
            'text' => [
              'type' => [
                'string',
                'object',
              ],
              'title' => 'Title',
              'description' => 'The title for the button',
              'minLength' => 2,
              'examples' => [
                'Press',
                'Submit now',
              ],
            ],
            'iconType' => [
              'type' => [
                'string',
                'object',
              ],
              'title' => 'Icon Type',
              'enum' => [
                'power',
                'like',
                'external',
              ],
            ],
          ],
        ],
      ],
      FALSE,
    ],
  ];
}