Add PodcastNodeRepositoryTest

This commit is contained in:
Oliver Davies 2025-07-14 19:36:14 +01:00
parent dafc7430b9
commit 76197f02cc
2 changed files with 69 additions and 0 deletions

View file

@ -0,0 +1,69 @@
<?php
namespace Drupal\Tests\opd_podcast\Functional;
use Drupal\KernelTests\Core\Entity\EntityKernelTestBase;
use Drupal\Tests\node\Traits\NodeCreationTrait;
use Drupal\node\NodeInterface;
use Drupal\opd_podcast\Episode;
use Drupal\opd_podcast\Repository\PodcastNodeRepository;
class PodcastNodeRepositoryTest extends EntityKernelTestBase {
use NodeCreationTrait;
protected static $modules = [
'node',
'opd_podcast',
'taxonomy',
];
public function test_it_returns_published_podcast_episodes(): void {
$this->createEpisode([
'title' => 'Episode A',
'status' => NodeInterface::PUBLISHED,
]);
$this->createEpisode([
'title' => 'Episode B',
'status' => NodeInterface::NOT_PUBLISHED,
]);
$this->createEpisode([
'title' => 'Episode C',
'status' => NodeInterface::PUBLISHED,
]);
$this->createEpisode([
'title' => 'Episode D',
'status' => NodeInterface::PUBLISHED,
]);
$repository = $this->container->get(PodcastNodeRepository::class);
$episodes = $repository->getPublished();
$this->assertCount(expectedCount: 3, haystack: $episodes);
$titles = array_map(
array: $episodes,
callback: fn (NodeInterface $episode): string => (string) $episode->getTitle(),
);
$this->assertSame(
actual: array_values($titles),
expected: ['Episode A', 'Episode C', 'Episode D'],
);
}
/**
* @param array<non-empty-string, mixed> $values
*/
private function createEpisode(array $values): NodeInterface {
return $this->createNode([
'type' => Episode::NODE_TYPE,
...$values,
]);
}
}