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/' )
31-
32- requests = FulfillmentResource (config ).list ()
33- request_obj = FulfillmentResource (config ).get (pk = 'PR-000-000-000' )
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 ]
3440
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,62 @@ 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+ assert isinstance (request_obj .asset .external_id , int )
79+
80+
81+ @patch ('requests.get' , MagicMock (return_value = _get_response2_ok ()))
82+ def test_fulfillment_items ():
83+ # Get request
84+ requests = FulfillmentResource ().list ()
85+ assert len (requests ) == 1
86+ request = requests [0 ]
87+ assert isinstance (request , Fulfillment )
88+
89+ # Test new items
90+ new_items = request .new_items
91+ assert isinstance (new_items , list )
92+ assert len (new_items ) == 2
93+ for item in new_items :
94+ assert isinstance (item , Item )
95+
96+ # Test changed items
97+ changed_items = request .changed_items
98+ assert isinstance (new_items , list )
99+ assert len (changed_items ) == 2
100+ for item in changed_items :
101+ assert isinstance (item , Item )
102+
103+ # Test removed items
104+ removed_items = request .removed_items
105+ assert isinstance (removed_items , list )
106+ assert len (removed_items ) == 1
107+ for item in removed_items :
108+ assert isinstance (item , Item )
109+
110+
111+ @patch ('requests.get' , MagicMock (return_value = _get_response2_ok ()))
112+ def test_asset_methods ():
113+ # Get asset
114+ requests = FulfillmentResource ().list ()
115+ assert len (requests ) == 1
116+ assert isinstance (requests [0 ], Fulfillment )
117+ asset = requests [0 ].asset
118+ assert isinstance (asset , Asset )
119+
120+ # Get param by id
121+ assert isinstance (asset .get_param_by_id ('howyoufeel' ), Param )
122+ assert asset .get_param_by_id ('howyoufeel' ).id == 'howyoufeel'
123+ assert not asset .get_param_by_id ('invalid-id' )
124+
125+ # Get item by id
126+ assert isinstance (asset .get_item_by_id ('TEAM_ST3L2T1Y' ), Item )
127+ assert asset .get_item_by_id ('TEAM_ST3L2T1Y' ).id == 'TEAM_ST3L2T1Y'
128+ assert not asset .get_item_by_id ('invalid-id' )
0 commit comments