From f5b0689705038e8af51676adb6f40cfdbf2029ff Mon Sep 17 00:00:00 2001 From: Wojtek Date: Fri, 10 Jan 2020 17:44:44 +0100 Subject: [PATCH 1/5] Update GovUkDataRetriever.php --- src/Objects/DataRetrievers/GovUkDataRetriever.php | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/Objects/DataRetrievers/GovUkDataRetriever.php b/src/Objects/DataRetrievers/GovUkDataRetriever.php index 6f07212..9589e79 100755 --- a/src/Objects/DataRetrievers/GovUkDataRetriever.php +++ b/src/Objects/DataRetrievers/GovUkDataRetriever.php @@ -64,8 +64,9 @@ public function retrieve($location) $bankHolidayDates = []; foreach ($data[$location]['events'] as $holidayDate) { + list($year, $month, $day) = explode('-', $holidayDate['date']); $bankHolidayDate = new UkBankHoliday($holidayDate['title'], $holidayDate['date'], $holidayDate['notes']); - $bankHolidayDates[] = $bankHolidayDate; + $bankHolidayDates[$year][$month][$day][] = $bankHolidayDate; } return $bankHolidayDates; From 75ee559aa69d422998fd4b5be3ecf16c1bb61534 Mon Sep 17 00:00:00 2001 From: Wojtek Date: Fri, 10 Jan 2020 17:47:44 +0100 Subject: [PATCH 2/5] Update UkBankHolidayFactory.php Performance improvment --- src/Factories/UkBankHolidayFactory.php | 41 +++++++++++++++----------- 1 file changed, 24 insertions(+), 17 deletions(-) diff --git a/src/Factories/UkBankHolidayFactory.php b/src/Factories/UkBankHolidayFactory.php index 8761fdc..f4fee5e 100755 --- a/src/Factories/UkBankHolidayFactory.php +++ b/src/Factories/UkBankHolidayFactory.php @@ -7,6 +7,7 @@ abstract class UkBankHolidayFactory { private static $dataRetriver; + private static $dates = []; private static function setUpDataRetriever() { @@ -15,35 +16,41 @@ private static function setUpDataRetriever() public static function getAll($location = 'england-and-wales') { + + if(empty(self::$dates[$location]) === false) { + return self::$dates[$location]; + } + self::setUpDataRetriever(); - $dates = self::$dataRetriver->retrieve($location); - - return $dates; + self::$dates[$location] = self::$dataRetriver->retrieve($location); + + return self::$dates[$location]; + } public static function getByMonth($year, $month, $location = 'england-and-wales') { + $dates = self::getAll($location); - $dateRange = []; - foreach ($dates as $date) { - if (date('Y', strtotime($date->date)) == $year && date('m', strtotime($date->date)) == $month) { - $dateRange[] = $date; - } + + if(!isset($dates[$year][$month])) { + return []; } - - return $dateRange; + + return $dates[$year][$month]; + } public static function getByDate($year, $month, $day, $location = 'england-and-wales') { + $dates = self::getByMonth($year, $month, $location); - $dateRange = []; - foreach ($dates as $date) { - if (date('d', strtotime($date->date)) == $day) { - $dateRange[] = $date; - } + + if(!isset($dates[$day])) { + return []; } - - return $dateRange; + + return $dates[$day]; + } } From 2ad4550a6a908a6fbab009d81b926020f49ee7e1 Mon Sep 17 00:00:00 2001 From: Wojtek Date: Fri, 10 Jan 2020 19:36:22 +0100 Subject: [PATCH 3/5] Update UkBankHolidayFactory.php StylesCI amedmends --- src/Factories/UkBankHolidayFactory.php | 17 ++++------------- 1 file changed, 4 insertions(+), 13 deletions(-) diff --git a/src/Factories/UkBankHolidayFactory.php b/src/Factories/UkBankHolidayFactory.php index f4fee5e..f7cd60f 100755 --- a/src/Factories/UkBankHolidayFactory.php +++ b/src/Factories/UkBankHolidayFactory.php @@ -15,42 +15,33 @@ private static function setUpDataRetriever() } public static function getAll($location = 'england-and-wales') - { - + { if(empty(self::$dates[$location]) === false) { return self::$dates[$location]; - } - + } self::setUpDataRetriever(); self::$dates[$location] = self::$dataRetriver->retrieve($location); return self::$dates[$location]; - } public static function getByMonth($year, $month, $location = 'england-and-wales') { - - $dates = self::getAll($location); - + $dates = self::getAll($location); if(!isset($dates[$year][$month])) { return []; } return $dates[$year][$month]; - } public static function getByDate($year, $month, $day, $location = 'england-and-wales') { - - $dates = self::getByMonth($year, $month, $location); - + $dates = self::getByMonth($year, $month, $location); if(!isset($dates[$day])) { return []; } return $dates[$day]; - } } From 8030acc21a003feb8946993f2491949f3af6bc1d Mon Sep 17 00:00:00 2001 From: Wojciech Brozyna Date: Fri, 10 Jan 2020 20:46:53 +0100 Subject: [PATCH 4/5] Tests fixed --- tests/Functional/BasicUsageTest.php | 2 +- tests/Unit/HolidayRetrievalByLocationTest.php | 13 +++++++++---- tests/Unit/LaravelCacheDriverTest.php | 13 +++++++++---- 3 files changed, 19 insertions(+), 9 deletions(-) diff --git a/tests/Functional/BasicUsageTest.php b/tests/Functional/BasicUsageTest.php index 346e535..0031243 100644 --- a/tests/Functional/BasicUsageTest.php +++ b/tests/Functional/BasicUsageTest.php @@ -7,7 +7,7 @@ final class BasicUsageTest extends TestCase { public function testGetNewYearsDay() { - $holidays = UkBankHolidayFactory::getByDate(2017, 01, 2); + $holidays = UkBankHolidayFactory::getByDate('2017', '01', '02'); $this->assertTrue(is_array($holidays), 'Holidays should be an array.'); $this->assertEquals(1, count($holidays), 'Holidays array should have 1 value.'); diff --git a/tests/Unit/HolidayRetrievalByLocationTest.php b/tests/Unit/HolidayRetrievalByLocationTest.php index b62858d..b510530 100644 --- a/tests/Unit/HolidayRetrievalByLocationTest.php +++ b/tests/Unit/HolidayRetrievalByLocationTest.php @@ -10,10 +10,15 @@ private function checkHolidaysArrayFormat($holidays) { $this->assertTrue(is_array($holidays), 'Holidays should be an array.'); $this->assertTrue(count($holidays) > 0, 'Holidays array should have at least 1 value.'); - - $holiday = $holidays[0]; - - $this->assertEquals('RapidWeb\UkBankHolidays\Objects\UkBankHoliday', get_class($holiday)); + $currYear = date('Y'); + $this->assertTrue(is_array($holidays[$currYear])); + $months = end($holidays[$currYear]); + $this->assertTrue(is_array($months)); + $days = end($months); + $this->assertTrue(is_array($days)); + $day = end($days); + + $this->assertEquals('RapidWeb\UkBankHolidays\Objects\UkBankHoliday', get_class($day)); } public function testEnglandWales() diff --git a/tests/Unit/LaravelCacheDriverTest.php b/tests/Unit/LaravelCacheDriverTest.php index 7c2a849..82a1ede 100644 --- a/tests/Unit/LaravelCacheDriverTest.php +++ b/tests/Unit/LaravelCacheDriverTest.php @@ -9,10 +9,15 @@ private function checkHolidaysArrayFormat($holidays) { $this->assertTrue(is_array($holidays), 'Holidays should be an array.'); $this->assertTrue(count($holidays) > 0, 'Holidays array should have at least 1 value.'); - - $holiday = $holidays[0]; - - $this->assertEquals('RapidWeb\UkBankHolidays\Objects\UkBankHoliday', get_class($holiday)); + $currYear = date('Y'); + $this->assertTrue(is_array($holidays[$currYear])); + $months = end($holidays[$currYear]); + $this->assertTrue(is_array($months)); + $days = end($months); + $this->assertTrue(is_array($days)); + $day = end($days); + + $this->assertEquals('RapidWeb\UkBankHolidays\Objects\UkBankHoliday', get_class($day)); } public function testEnglandWales() From cfb6f235e1ed1b1b57d4cd4e1f736dc330de1bf8 Mon Sep 17 00:00:00 2001 From: Wojciech Brozyna Date: Tue, 28 Jan 2020 11:11:44 +0100 Subject: [PATCH 5/5] StyleCI diff file applied. --- src/Factories/UkBankHolidayFactory.php | 20 +++++++++---------- tests/Unit/HolidayRetrievalByLocationTest.php | 2 +- tests/Unit/LaravelCacheDriverTest.php | 2 +- 3 files changed, 12 insertions(+), 12 deletions(-) diff --git a/src/Factories/UkBankHolidayFactory.php b/src/Factories/UkBankHolidayFactory.php index f7cd60f..e5f4e0d 100755 --- a/src/Factories/UkBankHolidayFactory.php +++ b/src/Factories/UkBankHolidayFactory.php @@ -15,33 +15,33 @@ private static function setUpDataRetriever() } public static function getAll($location = 'england-and-wales') - { - if(empty(self::$dates[$location]) === false) { + { + if (empty(self::$dates[$location]) === false) { return self::$dates[$location]; - } + } self::setUpDataRetriever(); self::$dates[$location] = self::$dataRetriver->retrieve($location); - + return self::$dates[$location]; } public static function getByMonth($year, $month, $location = 'england-and-wales') { - $dates = self::getAll($location); - if(!isset($dates[$year][$month])) { + $dates = self::getAll($location); + if (!isset($dates[$year][$month])) { return []; } - + return $dates[$year][$month]; } public static function getByDate($year, $month, $day, $location = 'england-and-wales') { - $dates = self::getByMonth($year, $month, $location); - if(!isset($dates[$day])) { + $dates = self::getByMonth($year, $month, $location); + if (!isset($dates[$day])) { return []; } - + return $dates[$day]; } } diff --git a/tests/Unit/HolidayRetrievalByLocationTest.php b/tests/Unit/HolidayRetrievalByLocationTest.php index b510530..cdab026 100644 --- a/tests/Unit/HolidayRetrievalByLocationTest.php +++ b/tests/Unit/HolidayRetrievalByLocationTest.php @@ -17,7 +17,7 @@ private function checkHolidaysArrayFormat($holidays) $days = end($months); $this->assertTrue(is_array($days)); $day = end($days); - + $this->assertEquals('RapidWeb\UkBankHolidays\Objects\UkBankHoliday', get_class($day)); } diff --git a/tests/Unit/LaravelCacheDriverTest.php b/tests/Unit/LaravelCacheDriverTest.php index 82a1ede..dbb32d1 100644 --- a/tests/Unit/LaravelCacheDriverTest.php +++ b/tests/Unit/LaravelCacheDriverTest.php @@ -16,7 +16,7 @@ private function checkHolidaysArrayFormat($holidays) $days = end($months); $this->assertTrue(is_array($days)); $day = end($days); - + $this->assertEquals('RapidWeb\UkBankHolidays\Objects\UkBankHoliday', get_class($day)); }