1111
1212from mock import MagicMock , patch
1313
14- from connect .config import Config
14+ from connect .models import Param
15+ from connect .models .asset import Asset
16+ from connect .models .fulfillment import Fulfillment
17+ from connect .models .product import Item
1518from connect .resource import FulfillmentResource
1619
17- response = namedtuple ('Response' , ('ok' , 'content' ))
20+ Response = namedtuple ('Response' , ('ok' , 'content' ))
1821
1922
2023def _get_response_ok ():
21- response .ok = True
22- with open ( os . path . join ( os . path . dirname ( __file__ ), 'response.json' )) as file :
23- response . content = file . read ( )
24+ with open ( os . path . join ( os . path . dirname ( __file__ ), ' response.json' )) as file_handle :
25+ content = file_handle . read ()
26+ return Response ( ok = True , content = content )
2427
25- return response
28+
29+ def _get_response2_ok ():
30+ with open (os .path .join (os .path .dirname (__file__ ), 'response2.json' )) as file_handle :
31+ content = file_handle .read ()
32+ return Response (ok = True , content = content )
2633
2734
2835@patch ('requests.get' , MagicMock (return_value = _get_response_ok ()))
2936def test_create_model_from_response ():
30- config = Config (api_key = 'ApiKey XXXX:YYYYY' , api_url = 'http://localhost:8080/api/public/v1/' )
37+ # Parse JSON data from response file
38+ with open (os .path .join (os .path .dirname (__file__ ), 'response.json' )) as file_handle :
39+ content = json .loads (file_handle .read ())[0 ]
3140
32- requests = FulfillmentResource (config ).list ()
33- request_obj = FulfillmentResource (config ).get (pk = 'PR-000-000-000' )
34-
35- assert requests [0 ].id == request_obj .id
36- content = json .loads (response .content )[0 ]
37- assert request_obj .id == content ['id' ]
38- assert request_obj .contract .id == content ['contract' ]['id' ]
39- assert request_obj .marketplace .id == content ['marketplace' ]['id' ]
40- assert request_obj .asset .id == content ['asset' ]['id' ]
41- assert request_obj .asset .product .id == content ['asset' ]['product' ]['id' ]
41+ # Get requests from response
42+ resource = FulfillmentResource ()
43+ requests = resource .list ()
44+ request_obj = resource .get (pk = 'PR-000-000-000' )
4245
46+ # Assert that all properties exist
4347 try :
4448 (
4549 request_obj .contract ,
@@ -63,3 +67,67 @@ def test_create_model_from_response():
6367 )
6468 except AttributeError :
6569 assert False , 'Incorrectly initialized model '
70+
71+ # Assert that returned data matches the one in the file
72+ assert requests [0 ].id == request_obj .id
73+ assert request_obj .id == content ['id' ]
74+ assert request_obj .contract .id == content ['contract' ]['id' ]
75+ assert request_obj .marketplace .id == content ['marketplace' ]['id' ]
76+ assert request_obj .asset .id == content ['asset' ]['id' ]
77+ assert request_obj .asset .product .id == content ['asset' ]['product' ]['id' ]
78+ try :
79+ # Python 2
80+ assert isinstance (request_obj .asset .external_id , basestring )
81+ except NameError :
82+ # Python 3
83+ assert isinstance (request_obj .asset .external_id , str )
84+
85+
86+ @patch ('requests.get' , MagicMock (return_value = _get_response2_ok ()))
87+ def test_fulfillment_items ():
88+ # Get request
89+ requests = FulfillmentResource ().list ()
90+ assert len (requests ) == 1
91+ request = requests [0 ]
92+ assert isinstance (request , Fulfillment )
93+
94+ # Test new items
95+ new_items = request .new_items
96+ assert isinstance (new_items , list )
97+ assert len (new_items ) == 2
98+ for item in new_items :
99+ assert isinstance (item , Item )
100+
101+ # Test changed items
102+ changed_items = request .changed_items
103+ assert isinstance (new_items , list )
104+ assert len (changed_items ) == 2
105+ for item in changed_items :
106+ assert isinstance (item , Item )
107+
108+ # Test removed items
109+ removed_items = request .removed_items
110+ assert isinstance (removed_items , list )
111+ assert len (removed_items ) == 1
112+ for item in removed_items :
113+ assert isinstance (item , Item )
114+
115+
116+ @patch ('requests.get' , MagicMock (return_value = _get_response2_ok ()))
117+ def test_asset_methods ():
118+ # Get asset
119+ requests = FulfillmentResource ().list ()
120+ assert len (requests ) == 1
121+ assert isinstance (requests [0 ], Fulfillment )
122+ asset = requests [0 ].asset
123+ assert isinstance (asset , Asset )
124+
125+ # Get param by id
126+ assert isinstance (asset .get_param_by_id ('howyoufeel' ), Param )
127+ assert asset .get_param_by_id ('howyoufeel' ).id == 'howyoufeel'
128+ assert not asset .get_param_by_id ('invalid-id' )
129+
130+ # Get item by id
131+ assert isinstance (asset .get_item_by_mpn ('TEAM-ST3L2T1Y' ), Item )
132+ assert asset .get_item_by_mpn ('TEAM-ST3L2T1Y' ).mpn == 'TEAM-ST3L2T1Y'
133+ assert not asset .get_item_by_mpn ('invalid-mpn' )
0 commit comments