From 9da5acbfa69745aece9bd42bcb2c26b820468c76 Mon Sep 17 00:00:00 2001 From: Yannick Ihmels Date: Sun, 15 Oct 2023 16:09:45 +0200 Subject: [PATCH] Add International Womens Day to DE-MV (#311) For the German state of Mecklenburg-Western Pomerania, International Womens Day is considered to be officially observed. --- .../Germany/MecklenburgWesternPomerania.php | 12 ++ src/Yasumi/Yasumi.php | 1 + .../InternationalWomensDayTest.php | 103 ++++++++++++++++++ .../MecklenburgWesternPomeraniaTest.php | 2 +- 4 files changed, 117 insertions(+), 1 deletion(-) create mode 100644 tests/Germany/MecklenburgWesternPomerania/InternationalWomensDayTest.php diff --git a/src/Yasumi/Provider/Germany/MecklenburgWesternPomerania.php b/src/Yasumi/Provider/Germany/MecklenburgWesternPomerania.php index 7809fbdf2..812443d6d 100644 --- a/src/Yasumi/Provider/Germany/MecklenburgWesternPomerania.php +++ b/src/Yasumi/Provider/Germany/MecklenburgWesternPomerania.php @@ -46,10 +46,22 @@ public function initialize(): void { parent::initialize(); + if ($this->year >= 2023) { + $this->addHoliday($this->internationalWomensDay($this->year, $this->timezone, $this->locale)); + } + // Add custom Christian holidays $this->calculateReformationDay(); } + public function getSources(): array + { + return array_merge( + ['https://www.ndr.de/nachrichten/mecklenburg-vorpommern/Frauentag-in-MV-Landtag-beschliesst-neuen-Feiertag,frauentag370.html'], + parent::getSources(), + ); + } + /** * For the German state of Mecklenburg-Western Pomerania, Reformation Day was celebrated since 1517. * Note: In 2017 all German states will celebrate Reformation Day for its 500th anniversary. diff --git a/src/Yasumi/Yasumi.php b/src/Yasumi/Yasumi.php index c2c98af91..b91ee9b7e 100644 --- a/src/Yasumi/Yasumi.php +++ b/src/Yasumi/Yasumi.php @@ -215,6 +215,7 @@ public static function getProviders(): array \FilesystemIterator::SKIP_DOTS ), \RecursiveIteratorIterator::SELF_FIRST); + /** @var \SplFileInfo $file */ foreach ($filesIterator as $file) { if ($file->isDir()) { continue; diff --git a/tests/Germany/MecklenburgWesternPomerania/InternationalWomensDayTest.php b/tests/Germany/MecklenburgWesternPomerania/InternationalWomensDayTest.php new file mode 100644 index 000000000..729cec0f4 --- /dev/null +++ b/tests/Germany/MecklenburgWesternPomerania/InternationalWomensDayTest.php @@ -0,0 +1,103 @@ + + */ + +namespace Yasumi\tests\Germany\MecklenburgWesternPomerania; + +use Yasumi\Holiday; +use Yasumi\tests\HolidayTestCase; + +/** + * Class containing tests for International Womens Day in Mecklenburg–Western Pomerania, Germany. + */ +class InternationalWomensDayTest extends MecklenburgWesternPomeraniaBaseTestCase implements HolidayTestCase +{ + /** + * The name of the holiday to be tested. + */ + public const HOLIDAY = 'internationalWomensDay'; + + /** + * The year in which the holiday was established. + */ + public const ESTABLISHMENT_YEAR = 2023; + + /** + * Test the holiday defined in this test upon establishment. + * + * @throws \Exception + */ + public function testHolidayOnEstablishment(): void + { + $this->assertHoliday( + self::REGION, + self::HOLIDAY, + self::ESTABLISHMENT_YEAR, + new \DateTime(self::ESTABLISHMENT_YEAR.'-03-08', new \DateTimeZone(self::TIMEZONE)) + ); + } + + /** + * Test the holiday defined in this test before establishment. + * + * @throws \Exception + */ + public function testHolidayBeforeEstablishment(): void + { + $this->assertNotHoliday( + self::REGION, + self::HOLIDAY, + $this->generateRandomYear(1000, self::ESTABLISHMENT_YEAR - 1) + ); + } + + /** + * Test the holiday defined in this test after completion. + * + * @throws \Exception + */ + public function testHolidayAfterCompletion(): void + { + $this->assertNotHoliday(self::REGION, self::HOLIDAY, $this->generateRandomYear(1900, self::ESTABLISHMENT_YEAR - 1)); + } + + /** + * Tests the translated name of the holiday defined in this test. + * + * @throws \Exception + */ + public function testTranslation(): void + { + $this->assertTranslatedHolidayName( + self::REGION, + self::HOLIDAY, + $this->generateRandomYear(self::ESTABLISHMENT_YEAR, self::ESTABLISHMENT_YEAR), + [self::LOCALE => 'Internationaler Frauentag'] + ); + } + + /** + * Tests type of the holiday defined in this test. + * + * @throws \Exception + */ + public function testHolidayType(): void + { + $this->assertHolidayType( + self::REGION, + self::HOLIDAY, + $this->generateRandomYear(self::ESTABLISHMENT_YEAR, self::ESTABLISHMENT_YEAR), + Holiday::TYPE_OFFICIAL + ); + } +} diff --git a/tests/Germany/MecklenburgWesternPomerania/MecklenburgWesternPomeraniaTest.php b/tests/Germany/MecklenburgWesternPomerania/MecklenburgWesternPomeraniaTest.php index 7a3f7b160..b6445d3fe 100644 --- a/tests/Germany/MecklenburgWesternPomerania/MecklenburgWesternPomeraniaTest.php +++ b/tests/Germany/MecklenburgWesternPomerania/MecklenburgWesternPomeraniaTest.php @@ -102,6 +102,6 @@ public function testOtherHolidays(): void */ public function testSources(): void { - $this->assertSources(self::REGION, 2); + $this->assertSources(self::REGION, 3); } }