From d0af03de6c52bc703c9c2bb0691573a303a38f69 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Johan=20Nenz=C3=A9n?= Date: Thu, 21 Apr 2022 23:02:53 +0200 Subject: [PATCH 1/3] Fixes parse error when date is only spaces --- .github/workflows/test.yml | 23 +++++++++++++++++++++++ pyplaato/models/keg.py | 2 +- requirements.txt | 2 +- requirements_test.txt | 2 +- setup.py | 2 +- tests/models/test_keg.py | 21 +++++++++++++++++++-- 6 files changed, 46 insertions(+), 6 deletions(-) create mode 100644 .github/workflows/test.yml diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml new file mode 100644 index 0000000..6012a05 --- /dev/null +++ b/.github/workflows/test.yml @@ -0,0 +1,23 @@ +name: Unit Testing + +on: + pull_request: + branches: + - master + +jobs: + unti_test: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v2 + - name: Set up Python + uses: actions/setup-python@v1 + with: + python-version: '3.x' + - name: Install dependencies + run: | + python -m pip install --upgrade pip + pip install -r requirements_test.txt requirements.txt + pip install -e . + - name: Run unit tests + run: python -m pytest --import-mode=append tests/ diff --git a/pyplaato/models/keg.py b/pyplaato/models/keg.py index 643f382..3d5835b 100644 --- a/pyplaato/models/keg.py +++ b/pyplaato/models/keg.py @@ -42,7 +42,7 @@ def __repr__(self): @property def date(self) -> float: - if self.__date is not None and self.__date: + if self.__date is not None and self.__date and not self.__date.isspace(): date = dateutil.parser.parse(self.__date) return date.timestamp() return super().date diff --git a/requirements.txt b/requirements.txt index 3f214f8..ea6343e 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,2 +1,2 @@ -aiohttp==3.7.4 +aiohttp==3.8.1 python-dateutil==2.8.1 \ No newline at end of file diff --git a/requirements_test.txt b/requirements_test.txt index c2845bf..76593bb 100644 --- a/requirements_test.txt +++ b/requirements_test.txt @@ -1 +1 @@ -pytest==7.0.1 +pytest==7.0.1 \ No newline at end of file diff --git a/setup.py b/setup.py index 8c6dd05..f501084 100644 --- a/setup.py +++ b/setup.py @@ -12,7 +12,7 @@ long_description=long_description, long_description_content_type="text/markdown", url="https://github.com/JohNan/pyplaato", - packages=setuptools.find_packages(exclude=["tests","tests.*"]), + packages=setuptools.find_packages(exclude=["tests", "tests.*"]), classifiers=[ "Framework :: AsyncIO", "Programming Language :: Python :: 3", diff --git a/tests/models/test_keg.py b/tests/models/test_keg.py index 038745d..bd00f34 100644 --- a/tests/models/test_keg.py +++ b/tests/models/test_keg.py @@ -6,8 +6,8 @@ def test_date_prop_with_value_returns_its_timestamp(): pins = PlaatoKeg.Pins - keg = PlaatoKeg({pins.DATE: "1/1/2022"}) - assert 1641024000.0 == keg.date + keg = PlaatoKeg({pins.DATE: "10/1/2022"}) + assert 1664575200.0 == keg.date @mock.patch("pyplaato.models.device.datetime") @@ -17,3 +17,20 @@ def test_date_prop_with_no_value_returns_current_timestamp(m_datetime): keg = PlaatoKeg({}) assert now.timestamp() == keg.date + +@mock.patch("pyplaato.models.device.datetime") +def test_date_prop_with_empty_string(m_datetime): + now = datetime(2022, 10, 1) + m_datetime.now.return_value = now + pins = PlaatoKeg.Pins + keg = PlaatoKeg({pins.DATE: ""}) + assert now.timestamp() == keg.date + + +@mock.patch("pyplaato.models.device.datetime") +def test_date_prop_with_space_string(m_datetime): + now = datetime(2022, 10, 1) + m_datetime.now.return_value = now + pins = PlaatoKeg.Pins + keg = PlaatoKeg({pins.DATE: " "}) + assert now.timestamp() == keg.date From fd459508783c19ec47e1c2868f9bd77f9e462f63 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Johan=20Nenz=C3=A9n?= Date: Thu, 21 Apr 2022 23:09:46 +0200 Subject: [PATCH 2/3] Test action fix --- .github/workflows/test.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 6012a05..c0d2e38 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -17,7 +17,7 @@ jobs: - name: Install dependencies run: | python -m pip install --upgrade pip - pip install -r requirements_test.txt requirements.txt + pip install -r requirements_test.txt -r requirements.txt pip install -e . - name: Run unit tests run: python -m pytest --import-mode=append tests/ From 86c8f1ac62657585e1310fa0955d8174b47f2662 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Johan=20Nenz=C3=A9n?= Date: Thu, 21 Apr 2022 23:22:33 +0200 Subject: [PATCH 3/3] Set timezone in test --- tests/models/test_keg.py | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/tests/models/test_keg.py b/tests/models/test_keg.py index bd00f34..ac736a8 100644 --- a/tests/models/test_keg.py +++ b/tests/models/test_keg.py @@ -1,13 +1,19 @@ +import os, time from datetime import datetime from unittest import mock from pyplaato.models.keg import PlaatoKeg +def setup_module(module): + os.environ['TZ'] = 'Europe/London' + time.tzset() + + def test_date_prop_with_value_returns_its_timestamp(): pins = PlaatoKeg.Pins keg = PlaatoKeg({pins.DATE: "10/1/2022"}) - assert 1664575200.0 == keg.date + assert 1664578800.0 == keg.date @mock.patch("pyplaato.models.device.datetime")