Comments from event hosts are excluded

This commit is contained in:
Oliver Davies 2019-02-14 00:27:07 +00:00
parent db30fd7044
commit 034e896a4c
2 changed files with 64 additions and 5 deletions

View file

@ -72,6 +72,26 @@ class Picker
*/
public function setComments(Collection $comments)
{
$this->comments = $comments->flatten(1)->values();
$this->comments = $comments
->flatten(1)
->filter(function (array $comment) {
return !$this->isUserAnEventHost($comment['user_display_name']);
})
->values();
return $this;
}
/**
* Determine whether a commenter is an event host.
*
* @param string $user_display_name
* The user's display name.
*
* @return bool
*/
private function isUserAnEventHost(string $user_display_name): bool
{
return $this->hosts->contains($user_display_name);
}
}

View file

@ -42,11 +42,20 @@ class PickerTest extends TestCase
{
$comments = [
[
['comment' => 'Great talk!'],
['comment' => 'Could be better.'],
[
'comment' => 'Great talk!',
'user_display_name' => 'Dan Ackroyd',
],
[
'comment' => 'Could be better.',
'user_display_name' => 'Lucia Velasco',
],
],
[
['comment' => 'Needs more cat pictures.'],
[
'comment' => 'Needs more cat pictures.',
'user_display_name' => 'Rupert Jabelman',
],
],
];
@ -61,7 +70,37 @@ class PickerTest extends TestCase
/** @test */
public function comments_from_event_hosts_cannot_be_picked()
{
$this->markTestIncomplete();
$event = [
'hosts' => [
['host_name' => 'Oliver Davies'],
],
];
$comments = [
[
[
'comment' => 'Great talk!',
'user_display_name' => 'Peter Fisher',
],
[
'comment' => 'Text on slides could be bigger.',
'user_display_name' => 'Oliver Davies',
],
[
'comment' => 'Speak slower.',
'user_display_name' => 'Zan Baldwin',
],
],
];
$comments = (new Picker())
->setHosts(collect([$event]))
->setComments(collect($comments))
->getComments();
$this->assertCount(2, $comments);
$this->assertSame('Peter Fisher', $comments[0]['user_display_name']);
$this->assertSame('Zan Baldwin', $comments[1]['user_display_name']);
}
/** @test */