Repository: vacanza/holidays
Pull request #2207 (2025-01-02 15:56:01)

Introduce `common.WorkingDayTests` class
<!--
  Thanks for contributing to holidays!
-->

## Proposed change

<!--
  Describe the big picture of your changes.
  Don't forget to link your PR to an existing issue if any.
-->

Introduce `common.WorkingDaysTests` class with working days testing methods.

## Type of change

<!--
  Type of change you want to introduce. Please, check one (1) box only!
  If your PR requires multiple boxes to be checked, most likely it needs to
  be split into multiple PRs.
-->

- [ ] New country/market holidays support (thank you!)
- [ ] Supported country/market holidays update (calendar discrepancy fix, localization)
- [x] Existing code/documentation/test/process quality improvement (best practice, cleanup, refactoring, optimization)
- [ ] Dependency update (version deprecation/pin/upgrade)
- [ ] Bugfix (non-breaking change which fixes an issue)
- [ ] Breaking change (a code change causing existing functionality to break)
- [ ] New feature (new `holidays` functionality in general)

## Checklist

<!--
  Put an `x` in the boxes that apply. You can change them after PR is created.
-->

- [x] I've followed the [contributing guidelines][contributing-guidelines]
- [x] I've successfully run `make check`, all checks and tests are green

<!--
  Thanks again for your contribution!
-->

[contributing-guidelines]: https://github.com/vacanza/holidays/blob/dev/CONTRIBUTING.rst
[docs]: https://github.com/vacanza/holidays/tree/dev/docs/source


sonarqubecloud[bot]: ## [![Quality Gate Passed](https://sonarsource.github.io/sonarcloud-github-static-resources/v2/checks/QualityGateBadge/qg-passed-20px.png 'Quality Gate Passed')](https://sonarcloud.io/dashboard?id=vacanza_python-holidays&pullRequest=2207) **Quality Gate passed**  
Issues  
![](https://sonarsource.github.io/sonarcloud-github-static-resources/v2/common/passed-16px.png '') [0 New issues](https://sonarcloud.io/project/issues?id=vacanza_python-holidays&pullRequest=2207&issueStatuses=OPEN,CONFIRMED&sinceLeakPeriod=true)  
![](https://sonarsource.github.io/sonarcloud-github-static-resources/v2/common/accepted-16px.png '') [0 Accepted issues](https://sonarcloud.io/project/issues?id=vacanza_python-holidays&pullRequest=2207&issueStatuses=ACCEPTED)

Measures  
![](https://sonarsource.github.io/sonarcloud-github-static-resources/v2/common/passed-16px.png '') [0 Security Hotspots](https://sonarcloud.io/project/security_hotspots?id=vacanza_python-holidays&pullRequest=2207&issueStatuses=OPEN,CONFIRMED&sinceLeakPeriod=true)  
![](https://sonarsource.github.io/sonarcloud-github-static-resources/v2/common/passed-16px.png '') [0.0% Coverage on New Code](https://sonarcloud.io/component_measures?id=vacanza_python-holidays&pullRequest=2207&metric=new_coverage&view=list)  
![](https://sonarsource.github.io/sonarcloud-github-static-resources/v2/common/passed-16px.png '') [0.0% Duplication on New Code](https://sonarcloud.io/component_measures?id=vacanza_python-holidays&pullRequest=2207&metric=new_duplicated_lines_density&view=list)  
  
[See analysis details on SonarQube Cloud](https://sonarcloud.io/dashboard?id=vacanza_python-holidays&pullRequest=2207)


codecov[bot]: ## [Codecov](https://app.codecov.io/gh/vacanza/holidays/pull/2207?dropdown=coverage&src=pr&el=h1&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=vacanza) Report
All modified and coverable lines are covered by tests :white_check_mark:
> Project coverage is 100.00%. Comparing base [(`a387595`)](https://app.codecov.io/gh/vacanza/holidays/commit/a3875955314dc88c4cf2242a930f7f0b2f30bc3f?dropdown=coverage&el=desc&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=vacanza) to head [(`7541664`)](https://app.codecov.io/gh/vacanza/holidays/commit/7541664ceb7e7aa24406ae2ea26d12a74f70ef75?dropdown=coverage&el=desc&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=vacanza).

<details><summary>Additional details and impacted files</summary>


```diff
@@            Coverage Diff            @@
##               dev     #2207   +/-   ##
=========================================
  Coverage   100.00%   100.00%           
=========================================
  Files          195       195           
  Lines        11762     11762           
  Branches      1699      1699           
=========================================
  Hits         11762     11762           
```

</details>

[:umbrella: View full report in Codecov by Sentry](https://app.codecov.io/gh/vacanza/holidays/pull/2207?dropdown=coverage&src=pr&el=continue&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=vacanza).   
:loudspeaker: Have feedback on the report? [Share it here](https://about.codecov.io/codecov-pr-comment-feedback/?utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=vacanza).

sonarqubecloud[bot]: ## [![Quality Gate Passed](https://sonarsource.github.io/sonarcloud-github-static-resources/v2/checks/QualityGateBadge/qg-passed-20px.png 'Quality Gate Passed')](https://sonarcloud.io/dashboard?id=vacanza_python-holidays&pullRequest=2207) **Quality Gate passed**  
Issues  
![](https://sonarsource.github.io/sonarcloud-github-static-resources/v2/common/passed-16px.png '') [0 New issues](https://sonarcloud.io/project/issues?id=vacanza_python-holidays&pullRequest=2207&issueStatuses=OPEN,CONFIRMED&sinceLeakPeriod=true)  
![](https://sonarsource.github.io/sonarcloud-github-static-resources/v2/common/accepted-16px.png '') [0 Accepted issues](https://sonarcloud.io/project/issues?id=vacanza_python-holidays&pullRequest=2207&issueStatuses=ACCEPTED)

Measures  
![](https://sonarsource.github.io/sonarcloud-github-static-resources/v2/common/passed-16px.png '') [0 Security Hotspots](https://sonarcloud.io/project/security_hotspots?id=vacanza_python-holidays&pullRequest=2207&issueStatuses=OPEN,CONFIRMED&sinceLeakPeriod=true)  
![](https://sonarsource.github.io/sonarcloud-github-static-resources/v2/common/passed-16px.png '') [0.0% Coverage on New Code](https://sonarcloud.io/component_measures?id=vacanza_python-holidays&pullRequest=2207&metric=new_coverage&view=list)  
![](https://sonarsource.github.io/sonarcloud-github-static-resources/v2/common/passed-16px.png '') [0.0% Duplication on New Code](https://sonarcloud.io/component_measures?id=vacanza_python-holidays&pullRequest=2207&metric=new_duplicated_lines_density&view=list)  
  
[See analysis details on SonarQube Cloud](https://sonarcloud.io/dashboard?id=vacanza_python-holidays&pullRequest=2207)


sonarqubecloud[bot]: ## [![Quality Gate Passed](https://sonarsource.github.io/sonarcloud-github-static-resources/v2/checks/QualityGateBadge/qg-passed-20px.png 'Quality Gate Passed')](https://sonarcloud.io/dashboard?id=vacanza_python-holidays&pullRequest=2207) **Quality Gate passed**  
Issues  
![](https://sonarsource.github.io/sonarcloud-github-static-resources/v2/common/passed-16px.png '') [0 New issues](https://sonarcloud.io/project/issues?id=vacanza_python-holidays&pullRequest=2207&issueStatuses=OPEN,CONFIRMED&sinceLeakPeriod=true)  
![](https://sonarsource.github.io/sonarcloud-github-static-resources/v2/common/accepted-16px.png '') [0 Accepted issues](https://sonarcloud.io/project/issues?id=vacanza_python-holidays&pullRequest=2207&issueStatuses=ACCEPTED)

Measures  
![](https://sonarsource.github.io/sonarcloud-github-static-resources/v2/common/passed-16px.png '') [0 Security Hotspots](https://sonarcloud.io/project/security_hotspots?id=vacanza_python-holidays&pullRequest=2207&issueStatuses=OPEN,CONFIRMED&sinceLeakPeriod=true)  
![](https://sonarsource.github.io/sonarcloud-github-static-resources/v2/common/passed-16px.png '') [0.0% Coverage on New Code](https://sonarcloud.io/component_measures?id=vacanza_python-holidays&pullRequest=2207&metric=new_coverage&view=list)  
![](https://sonarsource.github.io/sonarcloud-github-static-resources/v2/common/passed-16px.png '') [0.0% Duplication on New Code](https://sonarcloud.io/component_measures?id=vacanza_python-holidays&pullRequest=2207&metric=new_duplicated_lines_density&view=list)  
  
[See analysis details on SonarQube Cloud](https://sonarcloud.io/dashboard?id=vacanza_python-holidays&pullRequest=2207)



Patch:
diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml
index 031c9055..d08fcc19 100644
--- a/.pre-commit-config.yaml
+++ b/.pre-commit-config.yaml
@@ -23,7 +23,7 @@ repos:
           - --py39-plus
 
   - repo: https://github.com/astral-sh/ruff-pre-commit
-    rev: v0.8.4
+    rev: v0.8.5
     hooks:
       - id: ruff
       - id: ruff-format
diff --git a/holidays/countries/azerbaijan.py b/holidays/countries/azerbaijan.py
index 917215b8..64e482d0 100644
--- a/holidays/countries/azerbaijan.py
+++ b/holidays/countries/azerbaijan.py
@@ -287,10 +287,10 @@ class AzerbaijanStaticHolidays:
         2018: (APR, 11, presidential_elections),
         2019: (DEC, 27, municipal_elections),
         2020: (
-            (MAR, 27, MAR, 29),
-            (MAY, 27, MAY, 30),
             (JAN, 3, DEC, 28, 2019),
             (JAN, 6, DEC, 29, 2019),
+            (MAR, 27, MAR, 29),
+            (MAY, 27, MAY, 30),
         ),
         2021: (
             (MAY, 11, MAY, 8),
diff --git a/holidays/countries/belarus.py b/holidays/countries/belarus.py
index f6d78dba..78b70053 100644
--- a/holidays/countries/belarus.py
+++ b/holidays/countries/belarus.py
@@ -292,7 +292,7 @@ class BelarusStaticHolidays:
         ),
         2024: (
             (MAY, 13, MAY, 18),
-            (NOV, 16, NOV, 8),
+            (NOV, 8, NOV, 16),
         ),
         2025: (
             (JAN, 6, JAN, 11),
diff --git a/holidays/countries/kazakhstan.py b/holidays/countries/kazakhstan.py
index 1c0a631d..b896d6b1 100644
--- a/holidays/countries/kazakhstan.py
+++ b/holidays/countries/kazakhstan.py
@@ -278,7 +278,6 @@ class KazakhstanStaticHolidays:
         2019: (MAY, 10, MAY, 4),
         2020: (
             (JAN, 3, JAN, 5),
-            (MAY, 8, MAY, 11),
             (DEC, 18, DEC, 20),
         ),
         2021: (JUL, 5, JUL, 3),
@@ -293,5 +292,6 @@ class KazakhstanStaticHolidays:
     }
 
     special_public_holidays_observed = {
-        2020: (MAY, 8, MAY, 11),
+        # Victory Day.
+        2020: (MAY, 8, tr("Жеңіс күні")),
     }
diff --git a/snapshots/countries/BY_COMMON.json b/snapshots/countries/BY_COMMON.json
index 9a0ff234..45d94535 100644
--- a/snapshots/countries/BY_COMMON.json
+++ b/snapshots/countries/BY_COMMON.json
@@ -609,7 +609,7 @@
     "2024-09-17": "Day of People's Unity",
     "2024-11-02": "Dzyady (All Souls' Day)",
     "2024-11-07": "October Revolution Day",
-    "2024-11-16": "Day off (substituted from 11/08/2024)",
+    "2024-11-08": "Day off (substituted from 11/16/2024)",
     "2024-12-25": "Catholic Christmas Day",
     "2025-01-01": "New Year's Day",
     "2025-01-02": "New Year's Day",
diff --git a/snapshots/countries/KZ_COMMON.json b/snapshots/countries/KZ_COMMON.json
index cee56e14..df8c27f8 100644
--- a/snapshots/countries/KZ_COMMON.json
+++ b/snapshots/countries/KZ_COMMON.json
@@ -436,7 +436,7 @@
     "2020-03-25": "Nowruz holiday (observed)",
     "2020-05-01": "Kazakhstan's People Solidarity Holiday",
     "2020-05-07": "Defender of the Fatherland Day",
-    "2020-05-08": "Day off (substituted from 05/11/2020)",
+    "2020-05-08": "Victory Day (observed)",
     "2020-05-09": "Victory Day",
     "2020-07-06": "Capital Day",
     "2020-07-31": "Eid al-Adha",


Test patch:
diff --git a/tests/common.py b/tests/common.py
index 2be82262..ee71c0cf 100644
--- a/tests/common.py
+++ b/tests/common.py
@@ -419,3 +419,25 @@ class SundayHolidays(TestCase):
         ):
             self.assertNotEqual(parse(non_sunday).weekday(), SUN)
             self.assertNoHoliday(holidays, non_sunday)
+
+
+class WorkingDayTests(TestCase):
+    """Common class for testing entity holidays substituted from non-working days."""
+
+    # Workday.
+    def _assertWorkingDay(self, instance_name, *args):  # noqa: N802
+        """Helper: assert each date is a working day."""
+        holidays, dates = self._parse_arguments(args, instance_name=instance_name)
+        self._verify_type(holidays)
+
+        for dt in dates:
+            self.assertTrue(holidays._is_weekend(parse(dt)))
+            self.assertTrue(holidays.is_working_day(dt))
+
+    def assertWorkingDay(self, *args):  # noqa: N802
+        """Assert each date is a working day."""
+        self._assertWorkingDay("holidays", *args)
+
+    def assertNonObservedWorkingDay(self, *args):  # noqa: N802
+        """Assert each date is a non-observed working day."""
+        self._assertWorkingDay("holidays_non_observed", *args)
diff --git a/tests/countries/test_azerbaijan.py b/tests/countries/test_azerbaijan.py
index 69da6762..3464d9c8 100644
--- a/tests/countries/test_azerbaijan.py
+++ b/tests/countries/test_azerbaijan.py
@@ -14,10 +14,10 @@ from unittest import TestCase
 
 from holidays.constants import PUBLIC, WORKDAY
 from holidays.countries.azerbaijan import Azerbaijan, AZ, AZE
-from tests.common import CommonCountryTests
+from tests.common import CommonCountryTests, WorkingDayTests
 
 
-class TestAzerbaijan(CommonCountryTests, TestCase):
+class TestAzerbaijan(CommonCountryTests, WorkingDayTests, TestCase):
     @classmethod
     def setUpClass(cls):
         super().setUpClass(Azerbaijan, years=range(1990, 2050))
@@ -66,6 +66,34 @@ class TestAzerbaijan(CommonCountryTests, TestCase):
             "2025-01-03",
         )
 
+    def test_workdays(self):
+        self.assertWorkingDay(
+            "2011-08-27",
+            "2012-12-29",
+            "2012-12-30",
+            "2013-12-28",
+            "2013-12-29",
+            "2019-12-28",
+            "2019-12-29",
+            "2020-03-29",
+            "2020-05-30",
+            "2021-05-08",
+            "2021-05-16",
+            "2021-07-17",
+            "2022-03-05",
+            "2022-11-05",
+            "2023-06-24",
+            "2023-06-25",
+            "2023-11-04",
+            "2023-12-30",
+            "2024-01-07",
+            "2024-04-06",
+            "2024-11-16",
+            "2024-11-23",
+            "2024-12-28",
+            "2024-12-29",
+        )
+
         for year, dts in {
             2012: (
                 "2012-12-29",
@@ -82,9 +110,7 @@ class TestAzerbaijan(CommonCountryTests, TestCase):
             2023: ("2023-12-30",),
             2024: ("2024-12-29",),
         }.items():
-            az_holidays = Azerbaijan(years=year)
-            for dt in dts:
-                self.assertTrue(az_holidays.is_working_day(dt))
+            self.assertWorkingDay(Azerbaijan(years=year), dts)
 
     def test_new_years_day(self):
         name = "Yeni il bayramı"
diff --git a/tests/countries/test_belarus.py b/tests/countries/test_belarus.py
index efabbcc8..f149e8ba 100644
--- a/tests/countries/test_belarus.py
+++ b/tests/countries/test_belarus.py
@@ -14,10 +14,10 @@ from unittest import TestCase
 
 from holidays.constants import PUBLIC, WORKDAY
 from holidays.countries.belarus import Belarus, BY, BLR
-from tests.common import CommonCountryTests
+from tests.common import CommonCountryTests, WorkingDayTests
 
 
-class TestBelarus(CommonCountryTests, TestCase):
+class TestBelarus(CommonCountryTests, WorkingDayTests, TestCase):
     @classmethod
     def setUpClass(cls):
         years = range(1991, 2050)
@@ -225,18 +225,6 @@ class TestBelarus(CommonCountryTests, TestCase):
             "2030-05-07",
         )
 
-        for year, dts in {
-            2006: (
-                "2006-01-21",
-                "2006-05-06",
-                "2006-11-04",
-                "2006-12-30",
-            ),
-        }.items():
-            be_holidays = Belarus(years=year)
-            for dt in dts:
-                self.assertTrue(be_holidays.is_working_day(dt))
-
     def test_dzyady(self):
         name = "Дзень памяці"
 
@@ -333,13 +321,116 @@ class TestBelarus(CommonCountryTests, TestCase):
             "2023-05-08",
             "2023-11-06",
             "2024-05-13",
-            "2024-11-16",
+            "2024-11-08",
             "2025-01-06",
             "2025-04-28",
             "2025-07-04",
             "2025-12-26",
         )
 
+    def test_workdays(self):
+        self.assertWorkingDay(
+            "1998-01-10",
+            "1998-04-25",
+            "1999-01-16",
+            "1999-04-17",
+            "2000-05-13",
+            "2000-11-11",
+            "2001-01-20",
+            "2001-03-03",
+            "2001-04-21",
+            "2001-04-28",
+            "2001-07-07",
+            "2001-12-22",
+            "2001-12-29",
+            "2002-01-05",
+            "2002-05-18",
+            "2002-11-16",
+            "2003-01-04",
+            "2003-05-03",
+            "2004-01-10",
+            "2004-01-17",
+            "2004-01-31",
+            "2004-04-17",
+            "2005-03-12",
+            "2006-01-21",
+            "2006-05-06",
+            "2006-11-04",
+            "2006-12-30",
+            "2007-03-17",
+            "2007-04-14",
+            "2007-05-05",
+            "2007-07-07",
+            "2007-12-22",
+            "2007-12-29",
+            "2008-01-12",
+            "2008-05-03",
+            "2008-06-28",
+            "2008-12-20",
+            "2009-01-10",
+            "2009-04-25",
+            "2010-01-23",
+            "2010-04-17",
+            "2010-05-15",
+            "2011-03-12",
+            "2011-05-14",
+            "2012-03-11",
+            "2012-04-28",
+            "2012-06-30",
+            "2012-12-22",
+            "2012-12-29",
+            "2013-01-05",
+            "2013-05-18",
+            "2014-01-04",
+            "2014-01-11",
+            "2014-05-03",
+            "2014-07-12",
+            "2014-12-20",
+            "2015-01-10",
+            "2015-04-25",
+            "2016-01-16",
+            "2016-03-05",
+            "2017-01-21",
+            "2017-04-29",
+            "2017-05-06",
+            "2017-11-04",
+            "2018-01-20",
+            "2018-03-03",
+            "2018-04-14",
+            "2018-04-28",
+            "2018-07-07",
+            "2018-12-22",
+            "2018-12-29",
+            "2019-05-04",
+            "2019-05-11",
+            "2019-11-16",
+            "2020-01-04",
+            "2020-04-04",
+            "2021-01-16",
+            "2021-05-15",
+            "2022-03-12",
+            "2022-05-14",
+            "2023-04-29",
+            "2023-05-13",
+            "2023-11-11",
+            "2024-05-18",
+            "2024-11-16",
+            "2025-01-11",
+            "2025-04-26",
+            "2025-07-12",
+            "2025-12-20",
+        )
+
+        for year, dts in {
+            2006: (
+                "2006-01-21",
+                "2006-05-06",
+                "2006-11-04",
+                "2006-12-30",
+            ),
+        }.items():
+            self.assertWorkingDay(Belarus(years=year), dts)
+
     def test_l10n_default(self):
         self.assertLocalizedHolidays(
             ("2022-01-01", "Новы год"),
diff --git a/tests/countries/test_china.py b/tests/countries/test_china.py
index d24ba147..247d3cd7 100644
--- a/tests/countries/test_china.py
+++ b/tests/countries/test_china.py
@@ -14,10 +14,10 @@ from unittest import TestCase
 
 from holidays.constants import HALF_DAY, PUBLIC
 from holidays.countries.china import China, CN, CHN
-from tests.common import CommonCountryTests
+from tests.common import CommonCountryTests, WorkingDayTests
 
 
-class TestChina(CommonCountryTests, TestCase):
+class TestChina(CommonCountryTests, WorkingDayTests, TestCase):
     @classmethod
     def setUpClass(cls):
         super().setUpClass(China, years=range(1950, 2050), years_non_observed=range(2001, 2025))
@@ -30,6 +30,339 @@ class TestChina(CommonCountryTests, TestCase):
         self.assertNoHolidays(China(years=1949, categories=HALF_DAY))
 
     def test_substituted_holidays(self):
+        self.assertHoliday(
+            "2001-01-29",
+            "2001-01-30",
+            "2001-05-04",
+            "2001-05-07",
+            "2001-10-04",
+            "2001-10-05",
+            "2002-01-02",
+            "2002-01-03",
+            "2002-02-15",
+            "2002-02-18",
+            "2002-05-06",
+            "2002-05-07",
+            "2002-10-04",
+            "2002-10-07",
+            "2003-02-06",
+            "2003-02-07",
+            "2003-05-06",
+            "2003-05-07",
+            "2003-10-06",
+            "2003-10-07",
+            "2004-01-27",
+            "2004-01-28",
+            "2004-05-06",
+            "2004-05-07",
+            "2004-10-06",
+            "2004-10-07",
+            "2005-02-14",
+            "2005-02-15",
+            "2005-05-05",
+            "2005-05-06",
+            "2005-10-06",
+            "2005-10-07",
+            "2006-01-03",
+            "2006-02-02",
+            "2006-02-03",
+            "2006-05-04",
+            "2006-05-05",
+            "2006-10-05",
+            "2006-10-06",
+            "2007-01-02",
+            "2007-01-03",
+            "2007-02-22",
+            "2007-02-23",
+            "2007-05-04",
+            "2007-05-07",
+            "2007-10-04",
+            "2007-10-05",
+            "2007-12-31",
+            "2008-02-11",
+            "2008-02-12",
+            "2008-05-02",
+            "2008-09-29",
+            "2008-09-30",
+            "2009-01-02",
+            "2009-01-29",
+            "2009-01-30",
+            "2009-05-29",
+            "2009-10-07",
+            "2009-10-08",
+            "2010-02-18",
+            "2010-02-19",
+            "2010-06-14",
+            "2010-06-15",
+            "2010-09-23",
+            "2010-09-24",
+            "2010-10-06",
+            "2010-10-07",
+            "2011-02-07",
+            "2011-02-08",
+            "2011-04-04",
+            "2011-10-06",
+            "2011-10-07",
+            "2012-01-03",
+            "2012-01-26",
+            "2012-01-27",
+            "2012-04-02",
+            "2012-04-03",
+            "2012-04-30",
+            "2012-10-05",
+            "2013-01-02",
+            "2013-01-03",
+            "2013-02-14",
+            "2013-02-15",
+            "2013-04-05",
+            "2013-04-29",
+            "2013-04-30",
+            "2013-06-10",
+            "2013-06-11",
+            "2013-09-20",
+            "2013-10-04",
+            "2013-10-07",
+            "2014-02-05",
+            "2014-02-06",
+            "2014-05-02",
+            "2014-10-06",
+            "2014-10-07",
+            "2015-01-02",
+            "2015-02-18",
+            "2015-02-24",
+            "2015-09-04",
+            "2015-10-07",
+            "2016-02-11",
+            "2016-02-12",
+            "2016-06-10",
+            "2016-09-16",
+            "2016-10-06",
+            "2016-10-07",
+            "2017-01-27",
+            "2017-02-02",
+            "2017-04-03",
+            "2017-05-29",
+            "2017-10-06",
+            "2018-02-15",
+            "2018-02-21",
+            "2018-04-06",
+            "2018-04-30",
+            "2018-10-04",
+            "2018-10-05",
+            "2018-12-31",
+            "2019-02-04",
+            "2019-02-08",
+            "2019-10-04",
+            "2019-10-07",
+            "2020-01-24",
+            "2020-05-04",
+            "2020-05-05",
+            "2020-06-26",
+            "2020-10-07",
+            "2020-10-08",
+            "2021-02-11",
+            "2021-02-17",
+            "2021-05-04",
+            "2021-05-05",
+            "2021-09-20",
+            "2021-10-06",
+            "2021-10-07",
+            "2022-01-31",
+            "2022-02-04",
+            "2022-04-04",
+            "2022-05-03",
+            "2022-05-04",
+            "2022-10-06",
+            "2022-10-07",
+            "2023-01-26",
+            "2023-01-27",
+            "2023-05-02",
+            "2023-05-03",
+            "2023-06-23",
+            "2023-10-05",
+            "2023-10-06",
+            "2024-02-15",
+            "2024-02-16",
+            "2024-04-05",
+            "2024-05-02",
+            "2024-05-03",
+            "2024-09-16",
+            "2024-10-04",
+            "2024-10-07",
+            "2025-02-03",
+            "2025-02-04",
+            "2025-05-05",
+            "2025-10-07",
+            "2025-10-08",
+        )
+
+    def test_workdays(self):
+        self.assertWorkingDay(
+            "2001-01-20",
+            "2001-01-21",
+            "2001-04-28",
+            "2001-04-29",
+            "2001-09-29",
+            "2001-09-30",
+            "2001-12-29",
+            "2001-12-30",
+            "2002-02-09",
+            "2002-02-10",
+            "2002-04-27",
+            "2002-04-28",
+            "2002-09-28",
+            "2002-09-29",
+            "2003-02-08",
+            "2003-02-09",
+            "2003-04-26",
+            "2003-04-27",
+            "2003-09-27",
+            "2003-09-28",
+            "2004-01-17",
+            "2004-01-18",
+            "2004-05-08",
+            "2004-05-09",
+            "2004-10-09",
+            "2004-10-10",
+            "2005-02-05",
+            "2005-02-06",
+            "2005-04-30",
+            "2005-05-08",
+            "2005-10-08",
+            "2005-10-09",
+            "2005-12-31",
+            "2006-01-28",
+            "2006-02-05",
+            "2006-04-29",
+            "2006-04-30",
+            "2006-09-30",
+            "2006-10-08",
+            "2006-12-30",
+            "2006-12-31",
+            "2007-02-17",
+            "2007-02-25",
+            "2007-04-28",
+            "2007-04-29",
+            "2007-09-29",
+            "2007-09-30",
+            "2007-12-29",
+            "2008-02-02",
+            "2008-02-03",
+            "2008-05-04",
+            "2008-09-27",
+            "2008-09-28",
+            "2009-01-04",
+            "2009-01-24",
+            "2009-02-01",
+            "2009-05-31",
+            "2009-09-27",
+            "2009-10-10",
+            "2010-02-20",
+            "2010-02-21",
+            "2010-06-12",
+            "2010-06-13",
+            "2010-09-19",
+            "2010-09-25",
+            "2010-09-26",
+            "2010-10-09",
+            "2011-01-30",
+            "2011-02-12",
+            "2011-04-02",
+            "2011-10-08",
+            "2011-10-09",
+            "2011-12-31",
+            "2012-01-21",
+            "2012-01-29",
+            "2012-03-31",
+            "2012-04-01",
+            "2012-04-28",
+            "2012-09-29",
+            "2013-01-05",
+            "2013-01-06",
+            "2013-02-16",
+            "2013-02-17",
+            "2013-04-07",
+            "2013-04-27",
+            "2013-04-28",
+            "2013-06-08",
+            "2013-06-09",
+            "2013-09-22",
+            "2013-09-29",
+            "2013-10-12",
+            "2014-01-26",
+            "2014-02-08",
+            "2014-05-04",
+            "2014-09-28",
+            "2014-10-11",
+            "2015-01-04",
+            "2015-02-15",
+            "2015-02-28",
+            "2015-09-06",
+            "2015-10-10",
+            "2016-02-06",
+            "2016-02-14",
+            "2016-06-12",
+            "2016-09-18",
+            "2016-10-08",
+            "2016-10-09",
+            "2017-01-22",
+            "2017-02-04",
+            "2017-04-01",
+            "2017-05-27",
+            "2017-09-30",
+            "2018-02-11",
+            "2018-02-24",
+            "2018-04-08",
+            "2018-04-28",
+            "2018-09-29",
+            "2018-09-30",
+            "2018-12-29",
+            "2019-02-02",
+            "2019-02-03",
+            "2019-09-29",
+            "2019-10-12",
+            "2020-01-19",
+            "2020-04-26",
+            "2020-05-09",
+            "2020-06-28",
+            "2020-09-27",
+            "2020-10-10",
+            "2021-02-07",
+            "2021-02-20",
+            "2021-04-25",
+            "2021-05-08",
+            "2021-09-18",
+            "2021-09-26",
+            "2021-10-09",
+            "2022-01-29",
+            "2022-01-30",
+            "2022-04-02",
+            "2022-04-24",
+            "2022-05-07",
+            "2022-10-08",
+            "2022-10-09",
+            "2023-01-28",
+            "2023-01-29",
+            "2023-04-23",
+            "2023-05-06",
+            "2023-06-25",
+            "2023-10-07",
+            "2023-10-08",
+            "2024-02-04",
+            "2024-02-18",
+            "2024-04-07",
+            "2024-04-28",
+            "2024-05-11",
+            "2024-09-14",
+            "2024-09-29",
+            "2024-10-12",
+            "2025-01-26",
+            "2025-02-08",
+            "2025-04-27",
+            "2025-09-28",
+            "2025-10-11",
+        )
+
         for year, dts in {
             2001: (
                 "2001-01-20",
@@ -69,9 +402,7 @@ class TestChina(CommonCountryTests, TestCase):
                 "2011-12-31",
             ),
         }.items():
-            cn_holidays = China(years=year)
-            for dt in dts:
-                self.assertTrue(cn_holidays.is_working_day(dt))
+            self.assertWorkingDay(China(years=year), dts)
 
     def test_new_years_day(self):
         self.assertHolidayName("元旦", (f"{year}-01-01" for year in range(1950, 2050)))
@@ -140,6 +471,7 @@ class TestChina(CommonCountryTests, TestCase):
             "2018-02-20",
             "2020-01-28",
             "2020-01-29",
+            "2020-01-30",
             "2021-02-15",
             "2021-02-16",
             "2023-01-25",
diff --git a/tests/countries/test_kazakhstan.py b/tests/countries/test_kazakhstan.py
index 4b54ab1b..8d5dc50f 100644
--- a/tests/countries/test_kazakhstan.py
+++ b/tests/countries/test_kazakhstan.py
@@ -13,10 +13,10 @@
 from unittest import TestCase
 
 from holidays.countries.kazakhstan import Kazakhstan, KZ, KAZ
-from tests.common import CommonCountryTests
+from tests.common import CommonCountryTests, WorkingDayTests
 
 
-class TestKazakhstan(CommonCountryTests, TestCase):
+class TestKazakhstan(CommonCountryTests, WorkingDayTests, TestCase):
     @classmethod
     def setUpClass(cls):
         super().setUpClass(Kazakhstan, years=range(1991, 2050))
@@ -163,6 +163,7 @@ class TestKazakhstan(CommonCountryTests, TestCase):
             "2020-03-09",
             "2020-03-24",
             "2020-03-25",
+            "2020-05-08",
             "2020-08-31",
             "2021-01-04",
             "2021-03-24",
@@ -231,7 +232,6 @@ class TestKazakhstan(CommonCountryTests, TestCase):
             "2018-12-31",
             "2019-05-10",
             "2020-01-03",
-            "2020-05-08",
             "2020-12-18",
             "2021-07-05",
             "2022-03-07",
@@ -242,6 +242,61 @@ class TestKazakhstan(CommonCountryTests, TestCase):
             "2025-01-03",
         )
 
+    def test_workdays(self):
+        self.assertWorkingDay(
+            "2000-05-06",
+            "2001-03-11",
+            "2001-03-25",
+            "2001-04-28",
+            "2001-12-29",
+            "2002-05-12",
+            "2003-05-04",
+            "2003-12-13",
+            "2005-03-05",
+            "2005-03-19",
+            "2005-08-27",
+            "2005-10-22",
+            "2006-01-14",
+            "2006-05-06",
+            "2007-03-11",
+            "2007-03-25",
+            "2007-09-02",
+            "2007-10-28",
+            "2007-12-29",
+            "2008-05-04",
+            "2009-12-20",
+            "2010-01-10",
+            "2010-07-03",
+            "2011-03-05",
+            "2011-08-27",
+            "2012-03-11",
+            "2012-04-28",
+            "2012-12-29",
+            "2013-05-04",
+            "2013-10-12",
+            "2013-12-28",
+            "2014-05-04",
+            "2014-05-11",
+            "2016-03-05",
+            "2017-03-18",
+            "2017-07-01",
+            "2018-03-03",
+            "2018-04-28",
+            "2018-05-05",
+            "2018-08-25",
+            "2018-12-29",
+            "2019-05-04",
+            "2020-01-05",
+            "2020-12-20",
+            "2021-07-03",
+            "2022-03-05",
+            "2022-08-27",
+            "2022-10-22",
+            "2023-07-01",
+            "2024-05-04",
+            "2025-01-05",
+        )
+
         for year, dts in {
             2013: (
                 "2013-05-04",
@@ -249,9 +304,7 @@ class TestKazakhstan(CommonCountryTests, TestCase):
                 "2013-12-28",
             ),
         }.items():
-            kz_holidays = Kazakhstan(years=year)
-            for dt in dts:
-                self.assertTrue(kz_holidays.is_working_day(dt))
+            self.assertWorkingDay(Kazakhstan(years=year), dts)
 
     def test2022(self):
         self.assertHolidays(
diff --git a/tests/countries/test_taiwan.py b/tests/countries/test_taiwan.py
index 72ba7709..fbd51a53 100644
--- a/tests/countries/test_taiwan.py
+++ b/tests/countries/test_taiwan.py
@@ -13,10 +13,10 @@
 from unittest import TestCase
 
 from holidays.countries.taiwan import Taiwan, TW, TWN
-from tests.common import CommonCountryTests
+from tests.common import CommonCountryTests, WorkingDayTests
 
 
-class TestTaiwan(CommonCountryTests, TestCase):
+class TestTaiwan(CommonCountryTests, WorkingDayTests, TestCase):
     @classmethod
     def setUpClass(cls):
         years = range(1990, 2030)
@@ -29,12 +29,81 @@ class TestTaiwan(CommonCountryTests, TestCase):
         self.assertNoHolidays(Taiwan(years=1911))
 
     def test_substituted_holidays(self):
+        self.assertHoliday(
+            "2010-02-19",
+            "2012-01-27",
+            "2012-02-27",
+            "2012-12-31",
+            "2013-02-15",
+            "2013-09-20",
+            "2015-01-02",
+            "2016-02-12",
+            "2016-06-10",
+            "2016-09-16",
+            "2017-02-27",
+            "2017-05-29",
+            "2017-10-09",
+            "2018-04-06",
+            "2018-12-31",
+            "2019-02-08",
+            "2019-03-01",
+            "2019-10-11",
+            "2020-01-23",
+            "2020-06-26",
+            "2020-10-02",
+            "2021-02-10",
+            "2021-09-20",
+            "2022-02-04",
+            "2023-01-20",
+            "2023-01-27",
+            "2023-02-27",
+            "2023-04-03",
+            "2023-06-23",
+            "2023-10-09",
+            "2024-02-08",
+            "2025-01-27",
+        )
+
+    def test_workdays(self):
+        self.assertWorkingDay(
+            "2010-02-06",
+            "2012-02-04",
+            "2012-03-03",
+            "2012-12-22",
+            "2013-02-23",
+            "2013-09-14",
+            "2014-12-27",
+            "2016-01-30",
+            "2016-06-04",
+            "2016-09-10",
+            "2017-02-18",
+            "2017-06-03",
+            "2017-09-30",
+            "2018-03-31",
+            "2018-12-22",
+            "2019-01-19",
+            "2019-02-23",
+            "2019-10-05",
+            "2020-02-15",
+            "2020-06-20",
+            "2020-09-26",
+            "2021-02-20",
+            "2021-09-11",
+            "2022-01-22",
+            "2023-01-07",
+            "2023-02-04",
+            "2023-02-18",
+            "2023-03-25",
+            "2023-06-17",
+            "2023-09-23",
+            "2024-02-17",
+            "2025-02-08",
+        )
+
         for year, dts in {
             2014: ("2014-12-27",),
         }.items():
-            tw_holidays = Taiwan(years=year)
-            for dt in dts:
-                self.assertTrue(tw_holidays.is_working_day(dt))
+            self.assertWorkingDay(Taiwan(years=year), dts)
 
     def test_new_years_day(self):
         name = "中華民國開國紀念日"
diff --git a/tests/countries/test_ukraine.py b/tests/countries/test_ukraine.py
index 0cf08561..d82592bc 100644
--- a/tests/countries/test_ukraine.py
+++ b/tests/countries/test_ukraine.py
@@ -14,10 +14,10 @@ from unittest import TestCase
 
 from holidays.constants import WORKDAY
 from holidays.countries.ukraine import Ukraine, UA, UKR
-from tests.common import CommonCountryTests
+from tests.common import CommonCountryTests, WorkingDayTests
 
 
-class TestUkraine(CommonCountryTests, TestCase):
+class TestUkraine(CommonCountryTests, WorkingDayTests, TestCase):
     @classmethod
     def setUpClass(cls):
         super().setUpClass(Ukraine, years=range(1991, 2023), years_non_observed=range(1991, 2023))
@@ -34,6 +34,213 @@ class TestUkraine(CommonCountryTests, TestCase):
         self.assertHoliday("1995-01-09")
 
     def test_substituted_holidays(self):
+        self.assertHoliday(
+            "1991-05-03",
+            "1991-05-10",
+            "1991-07-15",
+            "1992-01-06",
+            "1992-04-27",
+            "1993-01-08",
+            "1993-08-23",
+            "1994-03-07",
+            "1995-05-08",
+            "1995-08-25",
+            "1995-11-06",
+            "1996-05-03",
+            "1996-05-10",
+            "1997-01-02",
+            "1997-01-06",
+            "1997-01-08",
+            "1997-04-29",
+            "1997-04-30",
+            "1998-01-02",
+            "1999-01-08",
+            "1999-04-12",
+            "1999-08-23",
+            "2000-05-08",
+            "2000-08-25",
+            "2001-03-09",
+            "2001-04-30",
+            "2001-05-10",
+            "2001-05-11",
+            "2001-06-29",
+            "2001-12-31",
+            "2002-05-03",
+            "2002-12-30",
+            "2002-12-31",
+            "2003-01-06",
+            "2004-01-02",
+            "2004-01-05",
+            "2004-01-06",
+            "2004-08-23",
+            "2005-03-07",
+            "2005-05-10",
+            "2005-06-27",
+            "2006-01-03",
+            "2006-01-04",
+            "2006-01-05",
+            "2006-01-06",
+            "2006-05-08",
+            "2006-08-25",
+            "2007-01-02",
+            "2007-01-03",
+            "2007-01-04",
+            "2007-01-05",
+            "2007-03-09",
+            "2007-04-30",
+            "2007-06-29",
+            "2007-12-31",
+            "2008-01-02",
+            "2008-01-03",
+            "2008-01-04",
+            "2008-04-29",
+            "2008-04-30",
+            "2009-01-02",
+            "2009-01-05",
+            "2009-01-06",
+            "2010-01-04",
+            "2010-01-05",
+            "2010-01-06",
+            "2010-01-08",
+            "2010-08-23",
+            "2011-03-07",
+            "2011-06-27",
+            "2012-03-09",
+            "2012-04-30",
+            "2012-06-29",
+            "2012-12-31",
+            "2013-05-03",
+            "2013-05-10",
+            "2014-01-02",
+            "2014-01-03",
+            "2014-01-06",
+            "2015-01-02",
+            "2015-01-08",
+            "2015-01-09",
+            "2016-01-08",
+            "2016-03-07",
+            "2016-06-27",
+            "2017-05-08",
+            "2017-08-25",
+            "2018-03-09",
+            "2018-04-30",
+            "2018-06-29",
+            "2018-12-24",
+            "2018-12-31",
+            "2019-04-30",
+            "2019-12-30",
+            "2019-12-31",
+            "2020-01-06",
+            "2021-01-08",
+            "2021-08-23",
+            "2021-10-15",
+            "2022-03-07",
+        )
+
+    def test_workdays(self):
+        self.assertWorkingDay(
+            "1991-05-05",
+            "1991-05-12",
+            "1991-07-13",
+            "1992-01-04",
+            "1992-05-16",
+            "1993-01-10",
+            "1993-08-21",
+            "1994-03-05",
+            "1995-05-06",
+            "1995-08-27",
+            "1995-11-04",
+            "1996-05-05",
+            "1996-05-12",
+            "1996-12-28",
+            "1997-01-04",
+            "1997-01-11",
+            "1997-04-19",
+            "1997-05-17",
+            "1998-01-04",
+            "1999-01-10",
+            "1999-04-24",
+            "1999-08-21",
+            "2000-05-06",
+            "2000-08-27",
+            "2001-03-11",
+            "2001-04-28",
+            "2001-05-05",
+            "2001-05-06",
+            "2001-06-23",
+            "2001-12-29",
+            "2002-05-11",
+            "2002-12-28",
+            "2002-12-29",
+            "2003-01-04",
+            "2004-01-10",
+            "2004-01-17",
+            "2004-01-31",
+            "2004-08-21",
+            "2005-03-05",
+            "2005-05-14",
+            "2005-06-25",
+            "2006-01-21",
+            "2006-02-04",
+            "2006-02-18",
+            "2006-03-11",
+            "2006-05-06",
+            "2006-09-09",
+            "2007-01-20",
+            "2007-01-27",
+            "2007-02-10",
+            "2007-02-24",
+            "2007-03-03",
+            "2007-04-28",
+            "2007-06-16",
+            "2007-12-29",
+            "2008-01-12",
+            "2008-01-26",
+            "2008-02-09",
+            "2008-05-17",
+            "2008-05-31",
+            "2009-01-10",
+            "2009-01-24",
+            "2009-02-07",
+            "2010-01-30",
+            "2010-02-13",
+            "2010-02-27",
+            "2010-03-13",
+            "2010-08-21",
+            "2011-03-12",
+            "2011-06-25",
+            "2012-03-03",
+            "2012-04-28",
+            "2012-07-07",
+            "2012-12-29",
+            "2013-05-18",
+            "2013-06-01",
+            "2014-01-11",
+            "2014-01-25",
+            "2014-02-08",
+            "2015-01-17",
+            "2015-01-31",
+            "2015-02-14",
+            "2016-01-16",
+            "2016-03-12",
+            "2016-07-02",
+            "2017-05-13",
+            "2017-08-19",
+            "2018-03-03",
+            "2018-05-05",
+            "2018-06-23",
+            "2018-12-22",
+            "2018-12-29",
+            "2019-05-11",
+            "2019-12-21",
+            "2019-12-28",
+            "2020-01-11",
+            "2021-01-16",
+            "2021-08-28",
+            "2021-10-23",
+            "2022-03-12",
+        )
+
         for year, dts in {
             1996: (
                 "1996-05-05",
@@ -41,9 +248,7 @@ class TestUkraine(CommonCountryTests, TestCase):
                 "1996-12-28",
             ),
         }.items():
-            ua_holidays = Ukraine(years=year)
-            for dt in dts:
-                self.assertTrue(ua_holidays.is_working_day(dt))
+            self.assertWorkingDay(Ukraine(years=year), dts)
 
     def test_new_year_day(self):
         self.assertHoliday(f"{year}-01-01" for year in range(1991, 2023))
@@ -251,110 +456,6 @@ class TestUkraine(CommonCountryTests, TestCase):
         self.assertHoliday(dt)
         self.assertNoNonObservedHoliday(dt)
 
-    def test_substituted(self):
-        self.assertHoliday(
-            "1991-05-03",
-            "1991-05-10",
-            "1991-07-15",
-            "1992-01-06",
-            "1992-04-27",
-            "1993-01-08",
-            "1993-08-23",
-            "1994-03-07",
-            "1995-05-08",
-            "1995-08-25",
-            "1995-11-06",
-            "1996-05-03",
-            "1996-05-10",
-            "1997-01-02",
-            "1997-01-06",
-            "1997-01-08",
-            "1997-04-29",
-            "1997-04-30",
-            "1998-01-02",
-            "1999-01-08",
-            "1999-04-12",
-            "1999-08-23",
-            "2000-05-08",
-            "2000-08-25",
-            "2001-03-09",
-            "2001-04-30",
-            "2001-05-10",
-            "2001-05-11",
-            "2001-06-29",
-            "2001-12-31",
-            "2002-05-03",
-            "2002-12-30",
-            "2002-12-31",
-            "2003-01-06",
-            "2004-01-02",
-            "2004-01-05",
-            "2004-01-06",
-            "2004-08-23",
-            "2005-03-07",
-            "2005-05-10",
-            "2005-06-27",
-            "2006-01-03",
-            "2006-01-04",
-            "2006-01-05",
-            "2006-01-06",
-            "2006-05-08",
-            "2006-08-25",
-            "2007-01-02",
-            "2007-01-03",
-            "2007-01-04",
-            "2007-01-05",
-            "2007-03-09",
-            "2007-04-30",
-            "2007-06-29",
-            "2007-12-31",
-            "2008-01-02",
-            "2008-01-03",
-            "2008-01-04",
-            "2008-04-29",
-            "2008-04-30",
-            "2009-01-02",
-            "2009-01-05",
-            "2009-01-06",
-            "2010-01-04",
-            "2010-01-05",
-            "2010-01-06",
-            "2010-01-08",
-            "2010-08-23",
-            "2011-03-07",
-            "2011-06-27",
-            "2012-03-09",
-            "2012-04-30",
-            "2012-06-29",
-            "2012-12-31",
-            "2013-05-03",
-            "2013-05-10",
-            "2014-01-02",
-            "2014-01-03",
-            "2014-01-06",
-            "2015-01-02",
-            "2015-01-08",
-            "2015-01-09",
-            "2016-01-08",
-            "2016-03-07",
-            "2016-06-27",
-            "2017-05-08",
-            "2017-08-25",
-            "2018-03-09",
-            "2018-04-30",
-            "2018-06-29",
-            "2018-12-24",
-            "2018-12-31",
-            "2019-04-30",
-            "2019-12-30",
-            "2019-12-31",
-            "2020-01-06",
-            "2021-01-08",
-            "2021-08-23",
-            "2021-10-15",
-            "2022-03-07",
-        )
-
     def test_2018(self):
         # https://www.buhoblik.org.ua/kadry-zarplata/vremya/3678-3678-normi-trivalosti-robochogo-chasu.html
         self.assertHolidayDates(
diff --git a/tests/countries/test_vietnam.py b/tests/countries/test_vietnam.py
index 00c420fc..4b93e01f 100644
--- a/tests/countries/test_vietnam.py
+++ b/tests/countries/test_vietnam.py
@@ -15,10 +15,10 @@ from unittest import TestCase
 
 from holidays.calendars.gregorian import _timedelta
 from holidays.countries.vietnam import Vietnam, VN, VNM
-from tests.common import CommonCountryTests
+from tests.common import CommonCountryTests, WorkingDayTests
 
 
-class TestVietnam(CommonCountryTests, TestCase):
+class TestVietnam(CommonCountryTests, WorkingDayTests, TestCase):
     @classmethod
     def setUpClass(cls):
         super().setUpClass(Vietnam, years=range(1979, 2050))
@@ -174,6 +174,21 @@ class TestVietnam(CommonCountryTests, TestCase):
             "2024-04-29",
         )
 
+    def test_workdays(self):
+        self.assertWorkingDay(
+            "2010-02-27",
+            "2012-02-04",
+            "2013-05-04",
+            "2014-04-26",
+            "2014-09-06",
+            "2014-12-27",
+            "2015-02-14",
+            "2015-04-25",
+            "2019-01-05",
+            "2019-05-04",
+            "2024-05-04",
+        )
+
         for year, dts in {
             2014: (
                 "2014-04-26",
@@ -182,9 +197,7 @@ class TestVietnam(CommonCountryTests, TestCase):
             ),
             2019: ("2019-01-05",),
         }.items():
-            vn_holidays = Vietnam(years=year)
-            for dt in dts:
-                self.assertTrue(vn_holidays.is_working_day(dt))
+            self.assertWorkingDay(Vietnam(years=year), dts)
 
     def test_l10n_default(self):
         self.assertLocalizedHolidays(