Skip to content

Commit e2afbfb

Browse files
committed
Add some tests to outline general project intent
1 parent 00bc577 commit e2afbfb

5 files changed

Lines changed: 112 additions & 0 deletions

File tree

tests/adapters.py

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
# -*- coding: utf-8 -*-
2+
3+
from __future__ import unicode_literals
4+
from __future__ import absolute_import
5+
6+
import adapter
7+
from tests import outputs
8+
9+
10+
class NaturalPersonAdapter(adapter.Adapter):
11+
first_name = adapter.CharField()
12+
last_name = adapter.CharField()
13+
14+
15+
class AddressAdapter(adapter.Adapter):
16+
class Meta(object):
17+
model = outputs.Address
18+
19+
line1 = adapter.CharField(source='address_street.0')
20+
line2 = adapter.CharField(source='address_street.1', default='')
21+
postal_code = adapter.CharField(source='address_zipcode', default='')
22+
city = adapter.CharField(source='address_city')
23+
region = adapter.CharField(source='address_state')
24+
country = adapter.CharField(source='address_country')
25+
26+
27+
class CustomerAdapter(NaturalPersonAdapter):
28+
class Meta(object):
29+
model = outputs.Customer
30+
31+
address = AddressAdapter(source='*')

tests/inputs.py

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
# -*- coding: utf-8 -*-
2+
3+
from __future__ import unicode_literals
4+
from __future__ import absolute_import
5+
6+
from tests.utils import Thing
7+
8+
9+
class Customer(Thing):
10+
pass

tests/outputs.py

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
# -*- coding: utf-8 -*-
2+
3+
from __future__ import unicode_literals
4+
from __future__ import absolute_import
5+
6+
from tests.utils import Thing
7+
8+
9+
class Customer(Thing):
10+
pass
11+
12+
13+
class Address(Thing):
14+
pass

tests/test_adapter.py

Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
# -*- coding: utf-8 -*-
2+
3+
from __future__ import unicode_literals
4+
from __future__ import absolute_import
5+
6+
import unittest
7+
8+
import adapters
9+
import inputs
10+
import outputs
11+
12+
13+
class AdapterTest(unittest.TestCase):
14+
def test_list(self):
15+
pass
16+
17+
def test_tuple(self):
18+
pass
19+
20+
def test_dict(self):
21+
pass
22+
23+
def test_object(self):
24+
data = inputs.Customer({
25+
'first_name': 'Betty',
26+
'last_name': 'Gowin',
27+
'address_street': ['3385 Gerald L. Bates Drive'],
28+
'address_zip_code': '02143',
29+
'address_city': 'Somerville',
30+
'address_state': 'US-MA',
31+
'address_country': 'US',
32+
})
33+
actual = adapters.CustomerAdapter(data).adapt()
34+
expected = outputs.Customer({
35+
'first_name': 'Betty',
36+
'last_name': 'Gowin',
37+
'address': outputs.Address({
38+
'line1': '3385 Gerald L. Bates Drive',
39+
'line2': '',
40+
'postal_code': '02143',
41+
'city': 'Somerville',
42+
'region': 'US-MA',
43+
'country': 'US',
44+
})
45+
})
46+
self.assertEqual(actual, expected)

tests/utils.py

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
# -*- coding: utf-8 -*-
2+
3+
from __future__ import unicode_literals
4+
5+
6+
class Thing(object):
7+
def __init__(self, **data):
8+
self.__dict__.update(data)
9+
10+
def __eq__(self, other):
11+
return self.__dict__ == other.__dict__

0 commit comments

Comments
 (0)