64 lines
2.1 KiB
Python
64 lines
2.1 KiB
Python
|
from unittest import TestCase
|
||
|
from unittest.mock import patch, call
|
||
|
from datetime import datetime
|
||
|
from urbantz import Delivery
|
||
|
from urbantz.exceptions import APIError
|
||
|
|
||
|
|
||
|
class TestDelivery(TestCase):
|
||
|
|
||
|
@classmethod
|
||
|
def setUpClass(cls):
|
||
|
cls.delivery = Delivery('123456')
|
||
|
|
||
|
def test_repr(self):
|
||
|
self.assertEqual(repr(self.delivery), "Delivery('123456')")
|
||
|
|
||
|
def test_api_url(self):
|
||
|
self.assertEqual(
|
||
|
self.delivery.api_url,
|
||
|
'https://backend.urbantz.com/public/task/tracking/123456',
|
||
|
)
|
||
|
|
||
|
@patch('urbantz.delivery.Delivery.use')
|
||
|
@patch('urbantz.delivery.requests')
|
||
|
def test_update(self, requests_mock, use_mock):
|
||
|
requests_mock.get.return_value.json.return_value = {'some': 'payload'}
|
||
|
|
||
|
self.assertIsNone(self.delivery.last_updated)
|
||
|
self.delivery.update()
|
||
|
|
||
|
self.assertEqual(requests_mock.get.call_count, 1)
|
||
|
self.assertEqual(
|
||
|
requests_mock.get.call_args,
|
||
|
call(self.delivery.api_url),
|
||
|
)
|
||
|
self.assertEqual(requests_mock.get().raise_for_status.call_count, 1)
|
||
|
self.assertEqual(requests_mock.get().json.call_count, 1)
|
||
|
self.assertEqual(use_mock.call_count, 1)
|
||
|
self.assertEqual(use_mock.call_args, call({'some': 'payload'}))
|
||
|
self.assertIsInstance(self.delivery.last_updated, datetime)
|
||
|
|
||
|
@patch('urbantz.delivery.requests')
|
||
|
def test_update_error(self, requests_mock):
|
||
|
requests_mock.get.return_value.json.return_value = {
|
||
|
'error': {
|
||
|
'code': 42,
|
||
|
'message': 'Oh snap!',
|
||
|
}
|
||
|
}
|
||
|
with self.assertRaises(APIError) as excinfo:
|
||
|
self.delivery.update()
|
||
|
|
||
|
self.assertEqual(requests_mock.get.call_count, 1)
|
||
|
self.assertEqual(
|
||
|
requests_mock.get.call_args,
|
||
|
call(self.delivery.api_url),
|
||
|
)
|
||
|
self.assertEqual(requests_mock.get().raise_for_status.call_count, 1)
|
||
|
self.assertEqual(requests_mock.get().json.call_count, 1)
|
||
|
self.assertEqual(
|
||
|
excinfo.exception,
|
||
|
APIError({'code': 42, 'message': 'Oh snap!'}),
|
||
|
)
|