diff --git a/src/Service/Picker.php b/src/Service/Picker.php index 8f4da20..b7b5027 100644 --- a/src/Service/Picker.php +++ b/src/Service/Picker.php @@ -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); } } diff --git a/tests/Service/PickerTest.php b/tests/Service/PickerTest.php index e99b688..34341e8 100644 --- a/tests/Service/PickerTest.php +++ b/tests/Service/PickerTest.php @@ -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 */