Skip to content

Commit

Permalink
Merge pull request #70 from xalien10/stage
Browse files Browse the repository at this point in the history
Stage
  • Loading branch information
xalien10 authored Aug 20, 2021
2 parents a0392b6 + 5892cb9 commit 7c5fe29
Show file tree
Hide file tree
Showing 8 changed files with 100 additions and 8 deletions.
11 changes: 8 additions & 3 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -245,19 +245,24 @@ https://developer.fortnox.se/documentation/

Tests
-----
First you need to set these environment variables:

$ export FORTNOX_ACCESS_TOKEN='YOUR-FORTNOX-ACCESS-TOKEN'
$ export FORTNOX_CLIENT_SECRET='YOUR-FORTNOX-CLIENT-SECRET'


To run all test suites:

$ python setup.py test
$ pytest tests

And to run a single suite:

$ python setup.py test -s fortnox.test.test_associated_project_service.ProjectServiceTests
$ pytest tests/services/employee_services

Thanks
------

I would like to give huge thanks to my wife, fellow colleagues, mentors and friends for
I would like to give huge thanks to my wife, colleagues, mentors and friends for
their continuous inspiration and supports to contribute to this package.
``pyfortnox`` was named from ``pythonic fortnox`` and I was lucky to publish wrapper under **pyfortnox** name.

Expand Down
1 change: 0 additions & 1 deletion fortnox/http_client.py
Original file line number Diff line number Diff line change
Expand Up @@ -171,7 +171,6 @@ def request(self, method, url, params=None, body=None, **kwargs):
headers=headers,
timeout=float(self.config.timeout),
)

if not (200 <= resp.status_code < 300):
self.handle_error_response(resp)

Expand Down
7 changes: 7 additions & 0 deletions requirements.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
munch>=2.5.0
requests>=2.21.0
urllib3>=1.24.3
requests-toolbelt>= 0.9.1
pytest>=6.2.2
pytest-order>=0.10.0
wheel>=0.36.2
18 changes: 15 additions & 3 deletions setup.py
Original file line number Diff line number Diff line change
@@ -1,8 +1,16 @@
import pkg_resources
import setuptools

with open("README.md", "r") as fh:
long_description = fh.read()

with open('requirements.txt', 'r') as requirement:
install_requires = [
str(requirement)
for requirement
in pkg_resources.parse_requirements(requirement)
]

setuptools.setup(
name="pyfortnox",
version="1.2.0",
Expand All @@ -12,11 +20,15 @@
long_description=long_description,
long_description_content_type="text/markdown",
url="https://github.com/xalien10/pyfortnox",
packages=setuptools.find_packages(),
packages=setuptools.find_packages(
exclude=[
'tests', 'tests.*',
]
),
include_package_data=True,
install_requires=["munch>=2.5.0", "requests>=2.21.0", "urllib3>=1.24.3", "requests-toolbelt>= 0.9.1",
"pytest>=6.2.2"],
install_requires=install_requires,
zip_safe=False,
platforms='any',
classifiers=[
"Programming Language :: Python :: 3",
"License :: OSI Approved :: MIT License",
Expand Down
1 change: 0 additions & 1 deletion tests/http_client_test.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,3 @@
import collections
import json
import unittest
from unittest.mock import patch
Expand Down
Empty file added tests/services/__init__.py
Empty file.
16 changes: 16 additions & 0 deletions tests/services/commons.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
import os


def get_credentials():
"""
Checks and returns if dependencies for running tests resolved or not
:return: tuple(str,str)
"""
access_token = os.getenv('FORTNOX_ACCESS_TOKEN')
client_secret = os.getenv('FORTNOX_CLIENT_SECRET')
if not access_token:
raise ValueError("You must set `FORTNOX_ACCESS_TOKEN` environment variables")
if not client_secret:
raise ValueError("You must set `FORTNOX_CLIENT_SECRET` environment variables")
return access_token, client_secret
54 changes: 54 additions & 0 deletions tests/services/employee_service_test.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,54 @@
import unittest

import pytest

import fortnox
from tests.services.commons import get_credentials


class EmployeeServiceTest(unittest.TestCase):

def setUp(self):
token, secret = get_credentials()
self.client = fortnox.Client(access_token=token, client_secret=secret)
self.valid_data = {
'EmployeeId': '007',
'FirstName': 'John',
'LastName': 'Doe',
'HourlyPay': '500',
}

@pytest.mark.order(0)
def test_employee_create(self):
try:
employee = self.client.employees.create(**self.valid_data)
except Exception as e:
pass
else:
self.assertTrue(employee)
self.assertEqual(employee.FirstName, self.valid_data['FirstName'])
self.assertEqual(employee.LastName, self.valid_data['LastName'])
self.assertEqual(employee.HourlyPay, self.valid_data['HourlyPay'])

@pytest.mark.order(1)
def test_employee_retrieve(self):
employee = self.client.employees.retrieve(id='007')
self.assertTrue(employee)
self.assertEqual(employee.FirstName, self.valid_data['FirstName'])
self.assertEqual(employee.LastName, self.valid_data['LastName'])
self.assertEqual(str(employee.HourlyPay), self.valid_data['HourlyPay'])

@pytest.mark.order(2)
def test_employee_update(self):
data = self.valid_data
data.update({'id': '007'})
employee = self.client.employees.update(**data)
self.assertTrue(employee)
self.assertEqual(employee.FirstName, self.valid_data['FirstName'])
self.assertEqual(employee.LastName, self.valid_data['LastName'])
self.assertEqual(employee.HourlyPay, self.valid_data['HourlyPay'])

@pytest.mark.order(3)
def test_employee_list(self):
employees = self.client.employees.list()
self.assertTrue(employees)

0 comments on commit 7c5fe29

Please sign in to comment.