diff --git a/Changelog.md b/Changelog.md index 758b33d..3aa9c2c 100644 --- a/Changelog.md +++ b/Changelog.md @@ -3,6 +3,7 @@ ## master (unreleased) - Bugfix: setting *Consciência Negra day* as a non-holiday by default for Brazilian calendars, thx to @edniemeyer (#516). +- Bugfix: Introducing the changes in Croatia holidays as of 2020 - Remembrance Day, Independence Day, Statehood Day... thx to @davidpodrebarac for the bug report (#515). ## v10.1.0 (2020-06-18) diff --git a/workalendar/europe/croatia.py b/workalendar/europe/croatia.py index 83a7588..f2e1cd6 100644 --- a/workalendar/europe/croatia.py +++ b/workalendar/europe/croatia.py @@ -1,3 +1,5 @@ +from datetime import date + from ..core import WesternCalendar, ChristianMixin from ..registry_tools import iso_register @@ -9,9 +11,7 @@ class Croatia(WesternCalendar, ChristianMixin): FIXED_HOLIDAYS = WesternCalendar.FIXED_HOLIDAYS + ( (5, 1, "International Workers' Day"), (6, 22, "Anti-Fascist Struggle Day"), - (6, 25, "Statehood Day"), (8, 5, "Victory & Homeland Thanksgiving & Day of Croatian defenders"), - (10, 8, "Independence Day"), ) include_epiphany = True @@ -23,3 +23,22 @@ class Croatia(WesternCalendar, ChristianMixin): include_christmas = True include_boxing_day = True boxing_day_label = "St. Stephen's Day" + + def get_fixed_holidays(self, year): + days = super().get_fixed_holidays(year) + + if year >= 2020: + days.extend([ + # Statehood date has changed in 2020 + (date(year, 5, 30), "Statehood Day"), + # Remembrance Day has been added in 2020 + (date(year, 11, 18), "Remembrance Day"), + ]) + else: + days.extend([ + (date(year, 6, 25), "Statehood Day"), + # Independance day was a holiday until 2020 + (date(year, 10, 8), "Independence Day"), + ]) + + return days diff --git a/workalendar/tests/test_europe.py b/workalendar/tests/test_europe.py index 9f7036a..e8e65cc 100644 --- a/workalendar/tests/test_europe.py +++ b/workalendar/tests/test_europe.py @@ -239,21 +239,67 @@ class CroatiaTest(GenericCalendarTest): def test_year_2016(self): holidays = self.cal.holidays_set(2016) - self.assertIn(date(2016, 1, 1), holidays) # New Year's Day Nova Godin - self.assertIn(date(2016, 1, 6), holidays) # Epiphany Bogojavljenje, - self.assertIn(date(2016, 3, 27), holidays) # Easter Sunday Uskrs i us + self.assertIn(date(2016, 1, 1), holidays) # New Year's Day + self.assertIn(date(2016, 1, 6), holidays) # Epiphany / Bogojavljenje + self.assertIn(date(2016, 3, 27), holidays) # Easter Sunday self.assertIn(date(2016, 3, 28), holidays) # Easter Monday - self.assertIn(date(2016, 5, 1), holidays) # Intl Workers' Day Međunar - self.assertIn(date(2016, 5, 26), holidays) # Corpus Christi Tijelovo - self.assertIn(date(2016, 6, 22), holidays) # Anti-Fascist Day Dan anti - self.assertIn(date(2016, 6, 25), holidays) # Statehood Day Dan drž + self.assertIn(date(2016, 5, 1), holidays) # Intl Workers' Day + self.assertIn(date(2016, 5, 26), holidays) # Corpus Christi / Tijelovo + self.assertIn(date(2016, 6, 22), holidays) # Anti-Fascist Day + self.assertIn(date(2016, 6, 25), holidays) # Statehood Day self.assertIn(date(2016, 8, 5), holidays) # Victory & Homeland Thanks - self.assertIn(date(2016, 8, 15), holidays) # Assumption of Mary Vel + self.assertIn(date(2016, 8, 15), holidays) # Assumption of Mary self.assertIn(date(2016, 10, 8), holidays) # Independence Day Dan neov self.assertIn(date(2016, 11, 1), holidays) # All Saints' Day Dan svih self.assertIn(date(2016, 12, 25), holidays) # Christmas Božić self.assertIn(date(2016, 12, 26), holidays) # St. Stephen's Day Prvi d + def test_year_2020(self): + holidays = self.cal.holidays_set(2020) + self.assertIn(date(2020, 1, 1), holidays) # New Year's Day + self.assertIn(date(2020, 1, 6), holidays) # Epiphany / Bogojavljenje + self.assertIn(date(2020, 4, 12), holidays) # Easter Sunday + self.assertIn(date(2020, 4, 13), holidays) # Easter Monday + self.assertIn(date(2020, 5, 1), holidays) # Labour Day + self.assertIn(date(2020, 5, 30), holidays) # Statehood day + self.assertIn(date(2020, 6, 11), holidays) # Corpus Christi + self.assertIn(date(2020, 6, 22), holidays) # Anti-Fascist Day + # Victory & Homeland Thanksgiving + self.assertIn(date(2020, 8, 5), holidays) + self.assertIn(date(2020, 8, 15), holidays) # Assumption of Mary + self.assertIn(date(2020, 11, 1), holidays) # All Saints' Day + self.assertIn(date(2020, 11, 18), holidays) # Remembrance Day + self.assertIn(date(2020, 12, 25), holidays) # XMas + self.assertIn(date(2020, 12, 26), holidays) # St Stephen + + def test_statehood_day(self): + holidays_2019 = self.cal.holidays_set(2019) + holidays_2020 = self.cal.holidays_set(2020) + + # Statehood day was a holiday on June 25th until 2020 + self.assertIn(date(2019, 6, 25), holidays_2019) + self.assertNotIn(date(2020, 6, 25), holidays_2020) + + # Statehood day as of 2020 happens on May 30th + self.assertNotIn(date(2019, 5, 30), holidays_2019) + self.assertIn(date(2020, 5, 30), holidays_2020) + + def test_independance_day(self): + # Independence Day was a holiday until 2020 + holidays_2019 = self.cal.holidays_set(2019) + self.assertIn(date(2019, 10, 8), holidays_2019) + holidays_2020 = self.cal.holidays_set(2020) + self.assertNotIn(date(2020, 10, 8), holidays_2020) + + def test_remembrance_day(self): + # Remembrance Day was introduced as of 2020 + holidays_2018 = self.cal.holidays_set(2018) + self.assertNotIn(date(2018, 11, 18), holidays_2018) + holidays_2019 = self.cal.holidays_set(2019) + self.assertNotIn(date(2019, 11, 18), holidays_2019) + holidays_2020 = self.cal.holidays_set(2020) + self.assertIn(date(2020, 11, 18), holidays_2020) + class Cyprus(GenericCalendarTest): cal_class = Cyprus