NoSourcePluginDecoratorTest.php

Namespace

Drupal\Tests\migrate\Unit\Plugin

File

core/modules/migrate/tests/src/Unit/Plugin/NoSourcePluginDecoratorTest.php

View source
<?php

declare (strict_types=1);
namespace Drupal\Tests\migrate\Unit\Plugin;

use Drupal\Component\Plugin\Discovery\DiscoveryInterface;
use Drupal\Core\DependencyInjection\ContainerBuilder;
use Drupal\migrate\Plugin\MigrateSourcePluginManager;
use Drupal\migrate\Plugin\NoSourcePluginDecorator;
use Drupal\Tests\UnitTestCase;

/**
 * @coversDefaultClass \Drupal\migrate\Plugin\NoSourcePluginDecorator
 * @group migrate
 */
class NoSourcePluginDecoratorTest extends UnitTestCase {
  
  /**
   * @covers ::getDefinitions
   * @dataProvider providerGetDefinitions
   */
  public function testGetDefinitions(array $definition, bool $source_exists) : void {
    $source_manager = $this->createMock(MigrateSourcePluginManager::class);
    $source_manager->expects($this->any())
      ->method('hasDefinition')
      ->willReturn($source_exists);
    $container = new ContainerBuilder();
    $container->set('plugin.manager.migrate.source', $source_manager);
    \Drupal::setContainer($container);
    $discovery_interface = $this->createMock(DiscoveryInterface::class);
    $discovery_interface->expects($this->once())
      ->method('getDefinitions')
      ->willReturn([
      $definition,
    ]);
    $decorator = new NoSourcePluginDecorator($discovery_interface);
    $results = $decorator->getDefinitions();
    if ($source_exists) {
      $this->assertEquals([
        $definition,
      ], $results);
    }
    else {
      $this->assertEquals([], $results);
    }
  }
  
  /**
   * Provides data for testGetDefinitions().
   */
  public static function providerGetDefinitions() : array {
    return [
      'source exists' => [
        [
          'source' => [
            'plugin' => 'valid_plugin',
          ],
          'process' => [],
          'destination' => [],
        ],
        TRUE,
      ],
      'source does not exist' => [
        [
          'source' => [
            'plugin' => 'invalid_plugin',
          ],
          'process' => [],
          'destination' => [],
        ],
        FALSE,
      ],
      'source is not defined' => [
        [
          'process' => [],
          'destination' => [],
        ],
        FALSE,
      ],
    ];
  }

}

Classes

Title Deprecated Summary
NoSourcePluginDecoratorTest @coversDefaultClass \Drupal\migrate\Plugin\NoSourcePluginDecorator[[api-linebreak]] @group migrate

Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.