smart_trim-8.x-1.3/tests/src/Unit/SuggestionTest.php
tests/src/Unit/SuggestionTest.php
<?php
declare(strict_types=1);
namespace Drupal\Tests\smart_trim\Unit;
use Drupal\Core\DependencyInjection\ContainerBuilder;
use Drupal\smart_trim\Hook\SmartTrimHooks;
use Drupal\Tests\UnitTestCase;
require __DIR__ . "/../../../smart_trim.module";
/**
* Unit Test coverage.
*
* @group smart_trim
*/
class SuggestionTest extends UnitTestCase {
/**
* Set up dependency injection container for hooks.
*/
public function setUp(): void {
parent::setUp();
\Drupal::unsetContainer();
$container = new ContainerBuilder();
$container->register(SmartTrimHooks::class, SmartTrimHooks::class);
\Drupal::setContainer($container);
}
/**
* Testing hook_theme_suggestions_HOOK_alter.
*
* @covers smart_trim_theme_suggestions_smart_trim_alter
*
* @dataProvider suggestionProvider
*/
public function testSuggestion($variables, $expected_count, $expected_samples) {
$suggestions = [];
smart_trim_theme_suggestions_smart_trim_alter($suggestions, $variables);
// Confirm that expected number of suggestions received.
$this->assertSame(count($suggestions), $expected_count);
// Confirm that each of the expected suggestions is in the result.
foreach ($expected_samples as $sample) {
$this->assertContains($sample, $suggestions);
}
}
/**
* Data provider for testSuggestion().
*/
public static function suggestionProvider(): array {
return [
[
[
'entity_type' => 'node',
'entity_bundle' => 'article',
'field' => 'body',
],
7,
[
'smart_trim__node',
'smart_trim__node__body',
'smart_trim__node__article__body',
],
],
[
[
'entity_type' => 'node',
'entity_bundle' => 'page',
'field' => 'description',
],
7,
[
'smart_trim__node',
'smart_trim__node__description',
'smart_trim__node__page__description',
],
],
[
[
'entity_type' => 'node',
'entity_bundle' => NULL,
'field' => 'body',
],
3,
[
'smart_trim__node',
'smart_trim__body',
'smart_trim__node__body',
],
],
[
[
'entity_type' => 'node',
'field' => 'body',
],
3,
[
'smart_trim__node',
'smart_trim__body',
'smart_trim__node__body',
],
],
[
[
'entity_type' => 'user',
'entity_bundle' => 'user',
'field' => 'biography',
],
7,
[
'smart_trim__user',
'smart_trim__user__biography',
'smart_trim__user__user__biography',
],
],
[
[
'entity_type' => NULL,
'entity_bundle' => NULL,
'field' => NULL,
],
0,
[],
],
[
[],
0,
[],
],
];
}
}
