From 4e551b1347dd00370f00b7b110513d9331b1a296 Mon Sep 17 00:00:00 2001 From: Oliver Davies Date: Wed, 13 Feb 2019 22:47:34 +0000 Subject: [PATCH] Group hosts for multiple events --- src/Service/Picker.php | 51 ++++++++++++++++++++++++++++++++++++ tests/Service/PickerTest.php | 39 +++++++++++++++++++++++++++ 2 files changed, 90 insertions(+) create mode 100644 src/Service/Picker.php create mode 100644 tests/Service/PickerTest.php diff --git a/src/Service/Picker.php b/src/Service/Picker.php new file mode 100644 index 0000000..c14d037 --- /dev/null +++ b/src/Service/Picker.php @@ -0,0 +1,51 @@ +hosts = collect(); + } + + /** + * Retrieve the event hosts. + * + * @return \Tightenco\Collect\Support\Collection + */ + public function getHosts(): Collection + { + return $this->hosts; + } + + /** + * Set the hosts for the retrieved events. + * + * @param \Tightenco\Collect\Support\Collection $data + * The event data. + * + * @return self + */ + public function setHosts(Collection $data): self + { + $this->hosts = $data->pluck('hosts.*.host_name') + ->flatten(1) + ->unique() + ->sort(); + + return $this; + } +} diff --git a/tests/Service/PickerTest.php b/tests/Service/PickerTest.php new file mode 100644 index 0000000..43c13a7 --- /dev/null +++ b/tests/Service/PickerTest.php @@ -0,0 +1,39 @@ + [ + ['host_name' => 'Lee Stone'], + ['host_name' => 'Dave Liddament'], + ['host_name' => 'Kat Zien'], + ], + ], + [ + 'hosts' => [ + ['host_name' => 'Oliver Davies'], + ['host_name' => 'Lee Stone'], + ['host_name' => 'Lucia Velasco'], + ['host_name' => 'Dave Liddament'], + ], + ], + ]; + + $picker = new Picker(); + $picker->setHosts(collect($data)); + + $hosts = $picker->getHosts(); + $this->assertInstanceOf(Collection::class, $hosts); + $this->assertCount(5, $hosts); + } +}