diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml new file mode 100644 index 0000000..c0d2e38 --- /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 -r 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..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: "1/1/2022"}) - assert 1641024000.0 == keg.date + keg = PlaatoKeg({pins.DATE: "10/1/2022"}) + assert 1664578800.0 == keg.date @mock.patch("pyplaato.models.device.datetime") @@ -17,3 +23,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