Skip to content
This repository has been archived by the owner on Apr 23, 2024. It is now read-only.

Commit

Permalink
Merge branch 'feature/replace-docker-with-vcr-for-tests' into develop
Browse files Browse the repository at this point in the history
  • Loading branch information
SebRut committed Feb 13, 2021
2 parents 0889b4b + 378867b commit 4aa3eaa
Show file tree
Hide file tree
Showing 36 changed files with 2,597 additions and 227 deletions.
10 changes: 0 additions & 10 deletions .travis.yml
Expand Up @@ -5,7 +5,6 @@ env:
global:
# Doctr deploy key for SebRut/pygrocy
- secure: "YoHepp7ZFuwmdlghnhwT7aczFamnuwTrAuOyXuhxV9bX9eqziurL5K39R04OD5hdPcbNXoVos1YbE4hBGFQpAk6ReiBqqhh+3qDw/HeEpZxRX9dISw+74Nu9kAYXNR8Ab5Zcov85IV3xvTqpawMeBpiXBuJFTbdvZbWhN1jglpR4D9VG//LaNjR/FbCH/41xzpuK3L1mSCQM3jJSSxPU7ZfkWzNvsGj1X///m3la3gR7DL1M4QC9hnzKF6KRNl0kVUuNnK8GhT66ZBGaCVDTqQeDQGTrjsCGuCsQnoydVV2XFwljZ3B6qE27ZqhehlloK2s8/go18zAuj9HpdkTx0RzeUOkxIDp9hAnAys4iGz7Ltk+sx0jGbNsv2Z8oHBgDhv6mu/0UMwD1dL83ZL3L0qWDJfDY3NZSlV0oW9ZPz5ZG8ObnnKKh4vHfp7HUpp/ElYEio7JzQit4FI7gnZRDFEAeH/NvwX8+t0SGXITyyn2U2X5Hz7TUe3laNaDe6Bq59+jebnRdTttuhyoXcMHtjm9HerqRussV+2jyTUf+ktWOFZFjavqUSj6k3iV9yKrgYwfW2+tsaOBZqEHwkRkd5DbNFLvkd0+NEBRfsJV4v51z9QdES3FlPpY/nPqORVkPCLxriCWLf+lTtYi6rtjixvvc4poFFz6WTNILwuOLqrs="
- GROCY_MODE=demo

addons:
apt:
Expand All @@ -18,16 +17,7 @@ addons:
- python3-wheel
- tox

services:
- docker

before_install:
- git clone --branch v3.0.1-8 https://github.com/grocy/grocy-docker.git
- cd grocy-docker
- docker-compose pull
- docker-compose up -d
- curl http://localhost
- cd ..
- pip3 install virtualenv==20.0.23 --force-reinstall

install:
Expand Down
1 change: 1 addition & 0 deletions pygrocy/data_models/product.py
Expand Up @@ -51,6 +51,7 @@ def _init_from_MissingProductResponse(self, response: MissingProductResponse):

def _init_from_ProductDetailsResponse(self, response: ProductDetailsResponse):
self._id = response.product.id
self._product_group_id = response.product.product_group_id
self._available_amount = response.stock_amount
self._best_before_date = response.next_best_before_date
self._name = response.product.name
Expand Down
14 changes: 10 additions & 4 deletions pygrocy/grocy_api_client.py
Expand Up @@ -7,7 +7,13 @@

import requests

from pygrocy.utils import localize_datetime, parse_date, parse_float, parse_int
from pygrocy.utils import (
localize_datetime,
parse_bool_int,
parse_date,
parse_float,
parse_int,
)

DEFAULT_PORT_NUMBER = 9192

Expand Down Expand Up @@ -194,12 +200,12 @@ def __init__(self, parsed_json):
self.period_type = parsed_json.get("period_type")
self.period_config = parsed_json.get("period_config")
self.period_days = parse_int(parsed_json.get("period_days"))
self.track_date_only = parsed_json.get("track_date_only")
self.rollover = parsed_json.get("rollover")
self.track_date_only = parse_bool_int(parsed_json.get("track_date_only"))
self.rollover = parse_bool_int(parsed_json.get("rollover"))
self.assignment_type = parsed_json.get("assignment_type")
self.assignment_config = parsed_json.get("assignment_config")
self.next_execution_assigned_to_user_id = parse_int(
"next_execution_assigned_to_user_id"
parsed_json.get("next_execution_assigned_to_user_id")
)
self.userfields = parsed_json.get("userfields")

Expand Down
15 changes: 13 additions & 2 deletions pygrocy/utils.py
@@ -1,11 +1,12 @@
from datetime import datetime

import iso8601
import pytz
from tzlocal import get_localzone
from datetime import datetime


def parse_date(input_value):
if input_value is "" or input_value is None:
if input_value == "" or input_value is None:
return None
return iso8601.parse_date(input_value)

Expand All @@ -28,6 +29,16 @@ def parse_float(input_value, default_value=None):
return default_value


def parse_bool_int(input_value):
if input_value is None:
return False
try:
num = int(input_value)
return bool(num)
except ValueError:
return False


def localize_datetime(timestamp: datetime) -> datetime:
if timestamp.tzinfo is not None:
return timestamp
Expand Down
5 changes: 4 additions & 1 deletion requirements-dev.txt
Expand Up @@ -7,4 +7,7 @@ iso8601~=0.1.14
pre-commit
isort
pytest
pytest-cov
pytest-cov
vcrpy
pytest-recording
pytest-mock
50 changes: 50 additions & 0 deletions test/cassettes/test_chores/TestChores.test_get_chore_details.yaml
@@ -0,0 +1,50 @@
interactions:
- request:
body: null
headers:
Accept-Encoding:
- gzip, deflate
Connection:
- keep-alive
User-Agent:
- python-requests/2.25.1
accept:
- application/json
method: GET
uri: https://localhost/api/chores/3
response:
body:
string: !!binary |
H4sIAAAAAAAEA71Su27DMAz8FUOzDfiRJoHnjl07C6rEOEL1MPRIYgT591K2nKRAC3TqKB7vyOPp
SvjROiD9lUhBetKRkhimsUDe2NkU2p5BFNIU4QjFwJwAgx0CPHdyDNIa0puoVElGcNIKGqYxccWE
IpJXDoaomENKxgWbPOJtgyVnz5Q7YAGQJzX4wPSYwLqtq3pfNdui3vabrn/ZPQS4NQc5rFODY/yT
CpSg1qgJyfUsrJQ9gctP5r0cjAYT1vUcM8Jq7HyCVmHSlG3ZlRtEDVwChQvwmJzSpTkta2n04Oh8
sRYbkeujBjo6KyIPuMuDlpdYocTJF8vNTNtowr263FGaAO7EFLLTqRgP8pQO25BbSRTzaCVZh5TZ
cq9d1dXrvfZIyTjli3qTacIaoB94qRx4Uk9mcuivoG3xjm8sH6TDOQuwrDwPfi78PcItCgrpR8Wm
LEmeZ42Sh+iAHqSCp5FodgnB4weZP8ojjvRl7u73VfvN/W/RJat37ym6n7wXCfg39/O03/zfvgDM
fl2XoQMAAA==
headers:
Access-Control-Allow-Headers:
- '*'
Access-Control-Allow-Methods:
- GET, POST, PUT, DELETE, OPTIONS
Access-Control-Allow-Origin:
- '*'
Connection:
- keep-alive
Content-Encoding:
- gzip
Content-Type:
- application/json
Date:
- Thu, 11 Feb 2021 05:45:41 GMT
Server:
- nginx/1.18.0
Transfer-Encoding:
- chunked
X-Powered-By:
- PHP/7.4.14
status:
code: 200
message: OK
version: 1

0 comments on commit 4aa3eaa

Please sign in to comment.