Add phpstan

This commit is contained in:
Oliver Davies 2025-05-29 18:12:17 +01:00
parent 90e8e68fa8
commit cc557aa0fc
8 changed files with 30 additions and 8 deletions

View file

@ -3,11 +3,14 @@
declare(strict_types=1);
use Drupal\Core\Render\BubbleableMetadata;
use Drupal\Core\StringTranslation\TranslatableMarkup;
use Drupal\opd_daily_emails\Collection\DailyEmailCollection;
use Drupal\opd_daily_emails\Repository\DailyEmailNodeRepository;
/**
* Implements hook_token_info().
*
* @return array{tokens: array<non-empty-string, array{description: TranslatableMarkup, name: TranslatableMarkup}[]>, types: array<non-empty-string, array{description: TranslatableMarkup, name: TranslatableMarkup}>}
*/
function opd_daily_emails_token_info(): array {
$tokens = [];
@ -34,8 +37,14 @@ function opd_daily_emails_token_info(): array {
/**
* Implements hook_tokens().
*
* @param array<non-empty-string, non-empty-string> $tokens
* @param array<non-empty-string, mixed> $data
* @param array<non-empty-string, mixed> $options
*
* @return array<non-empty-string, mixed>
*/
function opd_daily_emails_tokens($type, $tokens, array $data, array $options, BubbleableMetadata $bubbleableMetadata) : array {
function opd_daily_emails_tokens(string $type, array $tokens, array $data, array $options, BubbleableMetadata $bubbleableMetadata) : array {
$replacements = [];
if ($type === 'opd-daily-emails') {

View file

@ -8,6 +8,9 @@ use Drupal\node\NodeInterface;
final class DailyEmailCollection implements \Countable {
/**
* @param array<positive-int, NodeInterface> $emails
*/
public function __construct(
private array $emails,
) {

View file

@ -27,6 +27,8 @@ final class DailyEmailNodeRepository implements DailyEmailRepositoryInterface {
$query->accessCheck(TRUE);
$nodeIds = $query->execute();
/** @var NodeInterface[] */
$nodes = $nodeStorage->loadMultiple($nodeIds);
return new DailyEmailCollection($nodes);

View file

@ -14,7 +14,7 @@ class DailyEmailTokenTest extends BrowserTestBase {
public $defaultTheme = 'stark';
public static $modules = [
protected static $modules = [
'node',
'opd_daily_emails',
];

View file

@ -15,7 +15,7 @@ final class DailyEmailNodeRepositoryTest extends EntityKernelTestBase {
use DailyEmailTestTrait;
public static $modules = [
protected static $modules = [
'node',
'opd_daily_emails',
];
@ -32,11 +32,7 @@ final class DailyEmailNodeRepositoryTest extends EntityKernelTestBase {
]);
$repository = $this->container->get(DailyEmailNodeRepository::class);
$this->assertInstanceOf(
actual: $repository,
expected: DailyEmailRepositoryInterface::class,
);
assert($repository instanceof DailyEmailRepositoryInterface);
$emails = $repository->getAll();

View file

@ -11,6 +11,9 @@ trait DailyEmailTestTrait {
use NodeCreationTrait;
/**
* @param array<non-empty-string, non-empty-string|int> $options
*/
protected function createDailyEmailNode(array $options): NodeInterface {
return $this->createNode(array_merge(
$options,

View file

@ -4,6 +4,10 @@ declare(strict_types=1);
use Drupal\node\NodeInterface;
/**
* @param array<non-empty-string, array<non-empty-string, array{}>> $links
* @param array<non-empty-string, mixed> $context
*/
function opd_podcast_node_links_alter(array &$links, NodeInterface $entity, array &$context): void {
if ($entity->bundle() !== 'podcast_episode') {
return;

5
phpstan.neon.dist Normal file
View file

@ -0,0 +1,5 @@
parameters:
level: max
paths:
- modules
- themes