Ensure the correct event is returned

This commit is contained in:
Oliver Davies 2025-06-11 09:54:18 +01:00
parent 4715d02ae0
commit 08fc6c66be
3 changed files with 28 additions and 5 deletions

View file

@ -17,6 +17,10 @@ readonly final class EventCollection implements \IteratorAggregate {
public function __construct(private array $events) {
}
public function first(): ParagraphInterface {
return array_values($this->events)[0];
}
public function getIterator(): \Traversable {
return new \ArrayIterator($this->events);
}

View file

@ -14,15 +14,33 @@ final class PresentationTest extends ExistingSiteBase {
public function test_only_past_events_are_returned(): void {
$presentation = $this->createPresentation(
events: [
$this->createEvent(eventDate: 'now'),
$this->createEvent(eventDate: 'yesterday'),
$this->createEvent(eventDate: 'tomorrow'),
$this->createEvent(
eventDate: 'now',
eventName: 'now',
),
$this->createEvent(
eventDate: 'yesterday',
eventName: 'yesterday',
),
$this->createEvent(
eventDate: 'tomorrow',
eventName: 'tomorrow',
),
],
);
$events = $presentation->getPastEvents();
$this->assertCount(
expectedCount: 1,
haystack: $presentation->getPastEvents(),
haystack: $events,
);
$this->assertSame(
actual: $events->first()->get('field_event_name')->value,
expected: 'yesterday',
);
}

View file

@ -28,10 +28,11 @@ trait PresentationCreationTrait {
return $presentation;
}
private function createEvent(string $eventDate): ParagraphInterface {
private function createEvent(string $eventName, string $eventDate): ParagraphInterface {
return Paragraph::create(
[
'field_date' => (new DrupalDateTime($eventDate))->getTimestamp(),
'field_event_name' => $eventName,
'type' => 'event',
],
);