Repository: focus-shift/jollyday (java)

Issue:
Restoration Day missing in Geneva
### Affected country

Swizerland - Geneva

### Affected public holiday

Restauration de la République

### Source of the information

https://de.wikipedia.org/wiki/Feiertage_in_der_Schweiz
https://www.seco.admin.ch/dam/seco/de/dokumente/Arbeit/Arbeitsbedingungen/Arbeitsgesetz%20und%20Verordnungen/Feiertage-Schweiz.pdf.download.pdf/Feiertage_2015_web_de.pdf
https://www.bj.admin.ch/dam/bj/de/data/publiservice/service/zivilprozessrecht/kant-feiertage.pdf.download.pdf/kant-feiertage.pdf
https://www.feiertagskalender.ch/index.php?geo=245&jahr=2023&klasse=5&hl=de

### More information

Genève is the official name, Genf is the German name.

Pull request:
Add Restoration Day in ch ge
closes #378 

Patch:
diff --git a/jollyday-core/src/main/resources/descriptions/holiday_descriptions.properties b/jollyday-core/src/main/resources/descriptions/holiday_descriptions.properties
index 42ccd436..0045f158 100644
--- a/jollyday-core/src/main/resources/descriptions/holiday_descriptions.properties
+++ b/jollyday-core/src/main/resources/descriptions/holiday_descriptions.properties
@@ -252,6 +252,7 @@ holiday.description.REMEMBRANCE_TRUTH_JUSTICE        = Day of Remembrance for Tr
 holiday.description.REPENTANCE_PRAYER                = Day of Repentance and Prayer
 holiday.description.REPUBLIC_DAY                     = Republic Day
 holiday.description.RESPECT_AGED_DAY                 = Respect-for-the-Aged Day
+holiday.description.RESTORATION_OF_THE_REPUBLIC      = Restoration of the Republic
 holiday.description.REST_INDEP                       = Day of Restoration of Independence
 holiday.description.REVOLUTION                       = Revolution day
 holiday.description.RIEBEECK                         = Van Riebeeck's Day
diff --git a/jollyday-core/src/main/resources/descriptions/holiday_descriptions_de.properties b/jollyday-core/src/main/resources/descriptions/holiday_descriptions_de.properties
index b19bdb7f..7b9843d6 100644
--- a/jollyday-core/src/main/resources/descriptions/holiday_descriptions_de.properties
+++ b/jollyday-core/src/main/resources/descriptions/holiday_descriptions_de.properties
@@ -240,7 +240,7 @@ holiday.description.QUEENS_BIRTHDAY                  = Geburtstag der Königin
 holiday.description.QUEENS_DIAMOND_JUBILEE           = Diamantenes Thronjubiläum der Königin
 holiday.description.QUEENS_PLATINUM_JUBILEE          = Queen's Platinum Jubilee
 holiday.description.QUEENS_STATE_FUNERAL             = Queen's State Funeral
-holiday.description.QUEEN_ELIZABETH_II_MEMORIAL_DAY = Gedenktag für Königin Elisabeth II.
+holiday.description.QUEEN_ELIZABETH_II_MEMORIAL_DAY  = Gedenktag für Königin Elisabeth II.
 holiday.description.RACE                             = Kolumbus-Tag
 holiday.description.RECONCILIATION                   = Tag der Versöhnung
 holiday.description.RECREATION                       = Erholungstag
@@ -252,6 +252,7 @@ holiday.description.REMEMBRANCE_TRUTH_JUSTICE        = Erinnerungstag für Wahrh
 holiday.description.REPENTANCE_PRAYER                = Buß- und Bettag
 holiday.description.REPUBLIC_DAY                     = Tag der Republik
 holiday.description.RESPECT_AGED_DAY                 = Seniorentag
+holiday.description.RESTORATION_OF_THE_REPUBLIC      = Wiederherstellung der Republik
 holiday.description.REST_INDEP                       = Tag der Wiederherstellung der Unabhängigkeit
 holiday.description.REVOLUTION                       = Revolutionstag
 holiday.description.RIEBEECK                         = Van Riebeeck's Tag
diff --git a/jollyday-core/src/main/resources/descriptions/holiday_descriptions_el.properties b/jollyday-core/src/main/resources/descriptions/holiday_descriptions_el.properties
index d30bbe19..76d77e5b 100644
--- a/jollyday-core/src/main/resources/descriptions/holiday_descriptions_el.properties
+++ b/jollyday-core/src/main/resources/descriptions/holiday_descriptions_el.properties
@@ -1,4 +1,3 @@
-
 holiday.description.170_ANNIVERSARY_ARRIVAL_BERMUDA  = 170η επέτειος της άφιξης των πρώτων Πορτογάλων μεταναστών στις Βερμούδες
 holiday.description.1949_GREAT_MARCH_AND_RESTORATION = Εορτασμός της Μεγάλης Πορείας του 1949 και της Αποκατάστασης του Νομοθετικού Συμβουλίου.
 holiday.description.2ND_JANUARY                      = 2 Ιανουαρίου
@@ -241,7 +240,7 @@ holiday.description.QUEENS_BIRTHDAY                  = Γενέθλια της 
 holiday.description.QUEENS_DIAMOND_JUBILEE           = Διαμαντένιο Ιωβηλαίο της Βασίλισσας
 holiday.description.QUEENS_PLATINUM_JUBILEE          = Πλατινένιο Ιωβηλαίο της Βασίλισσας
 holiday.description.QUEENS_STATE_FUNERAL             = Κηδεία της Πολιτείας της Βασίλισσας
-holiday.description.QUEEN_ELIZABETH_II_MEMORIAL_DAY = Ημέρα μνήμης της βασίλισσας Ελισάβετ ΙΙ
+holiday.description.QUEEN_ELIZABETH_II_MEMORIAL_DAY  = Ημέρα μνήμης της βασίλισσας Ελισάβετ ΙΙ
 holiday.description.RACE                             = Ημέρα του Αγώνα
 holiday.description.RECONCILIATION                   = Ημέρα Συμφιλίωσης
 holiday.description.RECREATION                       = Ημέρα αναψυχής
@@ -253,6 +252,7 @@ holiday.description.REMEMBRANCE_TRUTH_JUSTICE        = Ημέρα Μνήμης 
 holiday.description.REPENTANCE_PRAYER                = Ημέρα Μετανοίας και Προσευχής
 holiday.description.REPUBLIC_DAY                     = Ημέρα Δημοκρατίας
 holiday.description.RESPECT_AGED_DAY                 = Ημέρα σεβασμού για τους ηλικιωμένους
+holiday.description.RESTORATION_OF_THE_REPUBLIC      = Αποκατάσταση της Δημοκρατίας
 holiday.description.REST_INDEP                       = Ημέρα Αποκατάστασης της Ανεξαρτησίας
 holiday.description.REVOLUTION                       = Ημέρα της επανάστασης
 holiday.description.RIEBEECK                         = Ημέρα του Van Riebeeck
diff --git a/jollyday-core/src/main/resources/descriptions/holiday_descriptions_fr.properties b/jollyday-core/src/main/resources/descriptions/holiday_descriptions_fr.properties
index 53a0681d..9e2791c1 100644
--- a/jollyday-core/src/main/resources/descriptions/holiday_descriptions_fr.properties
+++ b/jollyday-core/src/main/resources/descriptions/holiday_descriptions_fr.properties
@@ -76,9 +76,9 @@ holiday.description.CYBER_MONDAY                     = Cyber Monday
 holiday.description.CYRUS_METHODIUS                  = Jour de Saint Cyril et Methodius
 holiday.description.DAYTON                           = Accord de Dayton
 holiday.description.DAY_AFTER_NEW_YEAR               = Jour après le Nouvel An
-holiday.description.DAY_FOLLOWING_CHINESE_MID_AUTUMN  = Le jour suivant le festival chinois de la mi-automne
+holiday.description.DAY_FOLLOWING_CHINESE_MID_AUTUMN = Le jour suivant le festival chinois de la mi-automne
 holiday.description.DAY_FOLLOWING_EASTER_MONDAY      = Le jour suivant le lundi de Pâques
-holiday.description.DAY_FOLLOWING_GOOD_FRIDAY         = Le jour suivant le Vendredi saint
+holiday.description.DAY_FOLLOWING_GOOD_FRIDAY        = Le jour suivant le Vendredi saint
 holiday.description.DAY_OF_ALBANIANS                 = Journée des Albanais
 holiday.description.DAY_OF_ASHKALI                   = Jour d'Ashkali
 holiday.description.DAY_OF_BOSNIAKS                  = Journée Bosniaques
@@ -240,7 +240,7 @@ holiday.description.QUEENS_BIRTHDAY                  = Queen's birthday
 holiday.description.QUEENS_DIAMOND_JUBILEE           = Jubilé de diamant de la Reine
 holiday.description.QUEENS_PLATINUM_JUBILEE          = Queen's Platinum Jubilee
 holiday.description.QUEENS_STATE_FUNERAL             = Queen's State Funeral
-holiday.description.QUEEN_ELIZABETH_II_MEMORIAL_DAY = Journée commémorative de la Reine Elizabeth II
+holiday.description.QUEEN_ELIZABETH_II_MEMORIAL_DAY  = Journée commémorative de la Reine Elizabeth II
 holiday.description.RACE                             = Day of the Race
 holiday.description.RECONCILIATION                   = Day of Reconciliation
 holiday.description.RECREATION                       = Recreation Day
@@ -252,6 +252,7 @@ holiday.description.REMEMBRANCE_TRUTH_JUSTICE        = Journée du souvenir de l
 holiday.description.REPENTANCE_PRAYER                = Day of Repentance and Prayer
 holiday.description.REPUBLIC_DAY                     = Republic Day
 holiday.description.RESPECT_AGED_DAY                 = Respect-for-the-Aged Day
+holiday.description.RESTORATION_OF_THE_REPUBLIC      = Restauration de la République
 holiday.description.REST_INDEP                       = Day of Restoration of Independence
 holiday.description.REVOLUTION                       = Revolution day
 holiday.description.RIEBEECK                         = Van Riebeeck's Day
diff --git a/jollyday-core/src/main/resources/descriptions/holiday_descriptions_nl.properties b/jollyday-core/src/main/resources/descriptions/holiday_descriptions_nl.properties
index 9df02fef..87cc99e5 100644
--- a/jollyday-core/src/main/resources/descriptions/holiday_descriptions_nl.properties
+++ b/jollyday-core/src/main/resources/descriptions/holiday_descriptions_nl.properties
@@ -240,7 +240,7 @@ holiday.description.QUEENS_BIRTHDAY                  = Koninginnedag
 holiday.description.QUEENS_DIAMOND_JUBILEE           = Diamanten jubileum van de koningin
 holiday.description.QUEENS_PLATINUM_JUBILEE          = Queen's Platinum Jubilee
 holiday.description.QUEENS_STATE_FUNERAL             = Queen's State Funeral
-holiday.description.QUEEN_ELIZABETH_II_MEMORIAL_DAY = Koningin Elizabeth II gedenkdag
+holiday.description.QUEEN_ELIZABETH_II_MEMORIAL_DAY  = Koningin Elizabeth II gedenkdag
 holiday.description.RACE                             = Dag van de race
 holiday.description.RECONCILIATION                   = Dag van de verzoening
 holiday.description.RECREATION                       = Recreation dag
@@ -252,6 +252,7 @@ holiday.description.REMEMBRANCE_TRUTH_JUSTICE        = Herdenkingsdag voor waarh
 holiday.description.REPENTANCE_PRAYER                = Dag van berouw en gebed
 holiday.description.REPUBLIC_DAY                     = Dag van de republiek
 holiday.description.RESPECT_AGED_DAY                 = Dag van de ouderen
+holiday.description.RESTORATION_OF_THE_REPUBLIC      = Herstel van de Republiek
 holiday.description.REST_INDEP                       = Dag van het herstel van de onafhankelijkheid
 holiday.description.REVOLUTION                       = Dag van de revolutie
 holiday.description.RIEBEECK                         = Van Riebeeck's dag
diff --git a/jollyday-core/src/main/resources/descriptions/holiday_descriptions_pt.properties b/jollyday-core/src/main/resources/descriptions/holiday_descriptions_pt.properties
index 453e5c6e..a34097fa 100644
--- a/jollyday-core/src/main/resources/descriptions/holiday_descriptions_pt.properties
+++ b/jollyday-core/src/main/resources/descriptions/holiday_descriptions_pt.properties
@@ -1,4 +1,3 @@
-
 holiday.description.170_ANNIVERSARY_ARRIVAL_BERMUDA  = 170º Aniversário da chegada dos primeiros imigrantes portugueses às Bermudas
 holiday.description.1949_GREAT_MARCH_AND_RESTORATION = Comemoração da Grande Marcha de 1949 e da Restauração do Conselho Legislativo
 holiday.description.2ND_JANUARY                      = 2 de janeiro
@@ -241,7 +240,7 @@ holiday.description.QUEENS_BIRTHDAY                  = Aniversário da Rainha
 holiday.description.QUEENS_DIAMOND_JUBILEE           = Jubileu de Diamante da Rainha
 holiday.description.QUEENS_PLATINUM_JUBILEE          = Queen's Platinum Jubilee
 holiday.description.QUEENS_STATE_FUNERAL             = Queen's State Funeral
-holiday.description.QUEEN_ELIZABETH_II_MEMORIAL_DAY = Dia de homenagem à Rainha Isabel II
+holiday.description.QUEEN_ELIZABETH_II_MEMORIAL_DAY  = Dia de homenagem à Rainha Isabel II
 holiday.description.RACE                             = Dia da Corrida
 holiday.description.RECONCILIATION                   = Dia da Reconciliação
 holiday.description.RECREATION                       = Dia da Recriação
@@ -253,6 +252,7 @@ holiday.description.REMEMBRANCE_TRUTH_JUSTICE        = Dia Memorial da Verdade e
 holiday.description.REPENTANCE_PRAYER                = Dia do Arrependimento e da Oração
 holiday.description.REPUBLIC_DAY                     = Dia da República
 holiday.description.RESPECT_AGED_DAY                 = Respect-for-the-Aged Day
+holiday.description.RESTORATION_OF_THE_REPUBLIC      = Restauração da República
 holiday.description.REST_INDEP                       = Dia da Restauração da Independência
 holiday.description.REVOLUTION                       = Dia da Revolução
 holiday.description.RIEBEECK                         = Dia de Van Riebeeck
diff --git a/jollyday-core/src/main/resources/descriptions/holiday_descriptions_sv.properties b/jollyday-core/src/main/resources/descriptions/holiday_descriptions_sv.properties
index 77ee5d18..6a363942 100644
--- a/jollyday-core/src/main/resources/descriptions/holiday_descriptions_sv.properties
+++ b/jollyday-core/src/main/resources/descriptions/holiday_descriptions_sv.properties
@@ -240,7 +240,7 @@ holiday.description.QUEENS_BIRTHDAY                  = Queen's birthday
 holiday.description.QUEENS_DIAMOND_JUBILEE           = Drottningens diamantjubileum
 holiday.description.QUEENS_PLATINUM_JUBILEE          = Queen's Platinum Jubilee
 holiday.description.QUEENS_STATE_FUNERAL             = Queen's State Funeral
-holiday.description.QUEEN_ELIZABETH_II_MEMORIAL_DAY = Drottning Elizabeth II:s minnesdag
+holiday.description.QUEEN_ELIZABETH_II_MEMORIAL_DAY  = Drottning Elizabeth II:s minnesdag
 holiday.description.RACE                             = Day of the Race
 holiday.description.RECONCILIATION                   = Day of Reconciliation
 holiday.description.RECREATION                       = Recreation Day
@@ -252,6 +252,7 @@ holiday.description.REMEMBRANCE_TRUTH_JUSTICE        = Day of Remembrance for Tr
 holiday.description.REPENTANCE_PRAYER                = Day of Repentance and Prayer
 holiday.description.REPUBLIC_DAY                     = Republic Day
 holiday.description.RESPECT_AGED_DAY                 = Respect-for-the-Aged Day
+holiday.description.RESTORATION_OF_THE_REPUBLIC      = Återupprättandet av republiken
 holiday.description.REST_INDEP                       = Day of Restoration of Independence
 holiday.description.REVOLUTION                       = Revolution day
 holiday.description.RIEBEECK                         = Van Riebeeck's Day
diff --git a/jollyday-core/src/main/resources/holidays/Holidays_ch.xml b/jollyday-core/src/main/resources/holidays/Holidays_ch.xml
index 67f1460e..7ff62be9 100644
--- a/jollyday-core/src/main/resources/holidays/Holidays_ch.xml
+++ b/jollyday-core/src/main/resources/holidays/Holidays_ch.xml
@@ -90,6 +90,7 @@
 
   <SubConfigurations hierarchy="ge" description="Genève">
     <Holidays>
+      <Fixed month="DECEMBER" day="31" descriptionPropertiesKey="RESTORATION_OF_THE_REPUBLIC"/>
       <RelativeToWeekdayInMonth weekday="THURSDAY" when="AFTER" descriptionPropertiesKey="GENEVAN_FAST">
         <FixedWeekday which="FIRST" weekday="SUNDAY" month="SEPTEMBER"/>
       </RelativeToWeekdayInMonth>


Test patch:
diff --git a/jollyday-tests/src/test/java/de/focus_shift/jollyday/tests/country/HolidayCHTest.java b/jollyday-tests/src/test/java/de/focus_shift/jollyday/tests/country/HolidayCHTest.java
index a4e0c47f..f0956e22 100644
--- a/jollyday-tests/src/test/java/de/focus_shift/jollyday/tests/country/HolidayCHTest.java
+++ b/jollyday-tests/src/test/java/de/focus_shift/jollyday/tests/country/HolidayCHTest.java
@@ -15,6 +15,7 @@ import java.util.Set;
 import static de.focus_shift.jollyday.core.HolidayCalendar.SWITZERLAND;
 import static de.focus_shift.jollyday.core.HolidayType.OFFICIAL_HOLIDAY;
 import static de.focus_shift.jollyday.core.ManagerParameters.create;
+import static java.time.Month.DECEMBER;
 import static java.time.Month.SEPTEMBER;
 import static java.time.Month.JUNE;
 import static org.assertj.core.api.Assertions.assertThat;
@@ -64,4 +65,13 @@ class HolidayCHTest extends AbstractCountryTestBase {
       .isNotEmpty()
       .contains(new Holiday(LocalDate.of(year.getValue(), JUNE, 23), "INDEPENDENCE_DAY", OFFICIAL_HOLIDAY));
   }
+
+  @Property
+  void ensuresThatRestorationOfTheRepublicIsConfiguredInGeneve(@ForAll @YearRange Year year) {
+    final HolidayManager holidayManager = HolidayManager.getInstance(create(SWITZERLAND));
+    final Set<Holiday> holidays = holidayManager.getHolidays(year.getValue(), "ge");
+    assertThat(holidays)
+      .isNotEmpty()
+      .contains(new Holiday(LocalDate.of(year.getValue(), DECEMBER, 31), "RESTORATION_OF_THE_REPUBLIC", OFFICIAL_HOLIDAY));
+  }
 }
diff --git a/jollyday-tests/src/test/resources/holidays/Holidays_test_ch_2022.xml b/jollyday-tests/src/test/resources/holidays/Holidays_test_ch_2022.xml
index f459fa58..fb12d2b3 100644
--- a/jollyday-tests/src/test/resources/holidays/Holidays_test_ch_2022.xml
+++ b/jollyday-tests/src/test/resources/holidays/Holidays_test_ch_2022.xml
@@ -85,6 +85,7 @@
   <SubConfigurations hierarchy="ge" description="Genève">
     <Holidays>
       <Fixed month="SEPTEMBER" day="8" descriptionPropertiesKey="GENEVAN_FAST"/>
+      <Fixed month="DECEMBER" day="31" descriptionPropertiesKey="RESTORATION_OF_THE_REPUBLIC"/>
       <Fixed month="APRIL" day="15" descriptionPropertiesKey="christian.GOOD_FRIDAY"/>
       <Fixed month="APRIL" day="18" descriptionPropertiesKey="christian.EASTER_MONDAY"/>
       <Fixed month="JUNE" day="6" descriptionPropertiesKey="christian.WHIT_MONDAY"/>