Update TalkExtension and tests

This commit is contained in:
Oliver Davies 2019-05-20 01:58:36 +01:00
parent 6b022a02d0
commit 7f48563806
2 changed files with 33 additions and 15 deletions

View file

@ -85,13 +85,7 @@ class TalksExtension extends AbstractExtension
*/ */
public function getName() public function getName()
{ {
return 'talks'; return 'app.talks';
}
private function getLastDate($talk): string
{
return $this->getEvents(collect([$talk]))
->pluck('date')->max();
} }
public function getEvents(Collection $talks): Collection public function getEvents(Collection $talks): Collection
@ -100,4 +94,24 @@ class TalksExtension extends AbstractExtension
return $talk['events']; return $talk['events'];
}); });
} }
public function filterUpcoming(Collection $talks)
{
return $talks->filter(function ($talk) {
return $this->getLastDate($talk) >= $this->today;
})->values();
}
public function filterPast(Collection $talks)
{
return $talks->filter(function ($talk) {
return $this->getLastDate($talk) < $this->today;
})->values();
}
private function getLastDate($talk): string
{
return $this->getEvents(collect([$talk]))
->pluck('date')->max();
}
} }

View file

@ -91,10 +91,11 @@ class TalksExtensionTest extends TestCase
], ],
]; ];
$result = $this->extension->getPast([$pastTalk, $futureTalk]); $talks = $this->extension->getAll([$pastTalk, $futureTalk]);
$filtered = $this->extension->filterPast($talks);
$this->assertCount(1, $result); $this->assertCount(1, $filtered);
$this->assertSame($pastTalk, $result->first()); $this->assertSame($pastTalk, $filtered->first());
} }
/** @test */ /** @test */
@ -121,10 +122,11 @@ class TalksExtensionTest extends TestCase
], ],
]; ];
$result = $this->extension->getUpcoming([$pastTalk, $todayTalk, $futureTalk]); $talks = $this->extension->getAll([$pastTalk, $todayTalk, $futureTalk]);
$filtered = $this->extension->filterUpcoming($talks);
$this->assertCount(2, $result); $this->assertCount(2, $filtered);
$this->assertSame([$todayTalk, $futureTalk], $result->toArray()); $this->assertSame([$todayTalk, $futureTalk], $filtered->toArray());
} }
/** @test */ /** @test */
@ -138,8 +140,10 @@ class TalksExtensionTest extends TestCase
], ],
]; ];
$this->assertCount(1, $this->extension->getUpcoming([$talk])); $talks = $this->extension->getAll([$talk]);
$this->assertEmpty($this->extension->getPast([$talk]));
$this->assertCount(1, $this->extension->filterUpcoming($talks));
$this->assertEmpty($this->extension->filterPast($talks));
} }
/** @test */ /** @test */