Enhance code coverage

This commit is contained in:
Lucidiot 2019-07-10 21:28:59 +02:00
parent df2664283c
commit 0134ed4641
No known key found for this signature in database
GPG Key ID: AE3F7205692FA205
4 changed files with 38 additions and 2 deletions

View File

@ -2,6 +2,7 @@ from unittest import TestCase
from unittest.mock import patch, call from unittest.mock import patch, call
from datetime import datetime from datetime import datetime
from urbantz import Delivery from urbantz import Delivery
from urbantz.delivery import Location
from urbantz.exceptions import APIError from urbantz.exceptions import APIError
@ -81,3 +82,14 @@ class TestDelivery(TestCase):
excinfo.exception, excinfo.exception,
APIError({'message': 'API returned an empty payload'}), APIError({'message': 'API returned an empty payload'}),
) )
def test_empty_eta(self):
self.delivery.eta_margin = None
self.delivery.eta_rounding = None
self.delivery.arrival_time = None
self.assertIsNone(self.delivery.eta)
def test_empty_location(self):
loc = Location()
with self.assertRaises(AttributeError):
loc.coordinates

View File

@ -19,7 +19,8 @@ class TestFull(TestCase):
def setUpClass(cls): def setUpClass(cls):
super().setUpClass() super().setUpClass()
with open(os.path.join(FOLDER, 'test_payload.json')) as f: with open(os.path.join(FOLDER, 'test_payload.json')) as f:
cls.delivery = Delivery.fromJSON(json.load(f)) cls.payload = json.load(f)
cls.delivery = Delivery.fromJSON(cls.payload)
def test_types(self): def test_types(self):
self.assertIsNone(self.delivery.tracking_code) self.assertIsNone(self.delivery.tracking_code)
@ -144,6 +145,8 @@ class TestFull(TestCase):
]) ])
self.assertEqual(len(self.delivery.items), 1) self.assertEqual(len(self.delivery.items), 1)
item = self.delivery.items[0] item = self.delivery.items[0]
self.assertEqual(repr(item), '<Item cafe1>')
self.assertEqual(item.toJSON(), self.payload['items'][0])
self.assertFalse(item.damage_confirmed) self.assertFalse(item.damage_confirmed)
self.assertListEqual(item.damage_pictures, []) self.assertListEqual(item.damage_pictures, [])
self.assertEqual(item.status, "DELIVERED") self.assertEqual(item.status, "DELIVERED")
@ -200,3 +203,4 @@ class TestFull(TestCase):
datetime(2019, 2, 3, 7, 56, 47, 814000), datetime(2019, 2, 3, 7, 56, 47, 814000),
] ]
) )
self.assertEqual(self.delivery.toJSON(), self.payload)

View File

@ -80,3 +80,23 @@ class TestUtils(TestCase):
self.assertIn('last_name', d) self.assertIn('last_name', d)
del d.last_name del d.last_name
self.assertNotIn('lastName', d) self.assertNotIn('lastName', d)
with self.assertRaises(AttributeError):
del d.last_name
with self.assertRaises(KeyError):
del d['lastName']
def test_dictobject_edge_case(self):
d = DictObject(self.test_data)
def errored_delitem(*args, **kwargs):
raise KeyError
d.__delitem__ = errored_delitem
del d.lastName
self.assertEqual(d.lastName, 'Norris')
def test_dictobject_reverse(self):
self.assertEqual(
DictObject(self.test_data).toJSON(),
self.test_data,
)

View File

@ -50,7 +50,7 @@ class DictObject(JSONSerializable, dict):
return return
except KeyError: except KeyError:
pass pass
super().__delattr__(self, name) super().__delattr__(name)
def __delitem__(self, name): def __delitem__(self, name):
try: try: