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 __construct(private array $events) {
} }
public function first(): ParagraphInterface {
return array_values($this->events)[0];
}
public function getIterator(): \Traversable { public function getIterator(): \Traversable {
return new \ArrayIterator($this->events); 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 { public function test_only_past_events_are_returned(): void {
$presentation = $this->createPresentation( $presentation = $this->createPresentation(
events: [ events: [
$this->createEvent(eventDate: 'now'), $this->createEvent(
$this->createEvent(eventDate: 'yesterday'), eventDate: 'now',
$this->createEvent(eventDate: 'tomorrow'), eventName: 'now',
),
$this->createEvent(
eventDate: 'yesterday',
eventName: 'yesterday',
),
$this->createEvent(
eventDate: 'tomorrow',
eventName: 'tomorrow',
),
], ],
); );
$events = $presentation->getPastEvents();
$this->assertCount( $this->assertCount(
expectedCount: 1, 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; return $presentation;
} }
private function createEvent(string $eventDate): ParagraphInterface { private function createEvent(string $eventName, string $eventDate): ParagraphInterface {
return Paragraph::create( return Paragraph::create(
[ [
'field_date' => (new DrupalDateTime($eventDate))->getTimestamp(), 'field_date' => (new DrupalDateTime($eventDate))->getTimestamp(),
'field_event_name' => $eventName,
'type' => 'event', 'type' => 'event',
], ],
); );