def test_delete_OK(self): with mock.patch('D365BCAPI.D365BCv1API.requests') as mocked_req: mocked_req.get.return_value.status_code = 200 mocked_req.delete.return_value.status_code = 204 mocked_req.delete.return_value.reason = 'OK' dele = Connect('http://test.lt/test(123456789abcd)', auth={'a': 'a'}, headers={'some headers'}) respo = dele.delete() mocked_req.delete.assert_called_with('http://test.lt/test(123456789abcd)', auth={'a': 'a'}, headers={'some headers'}) self.assertEqual(respo, [204, 'OK'], 'delete: no error - returns [204, OK]')
def test_delete_FAIL(self): with mock.patch('D365BCAPI.D365BCv1API.requests') as mocked_req: mocked_req.get.return_value.status_code = 200 mocked_req.delete.return_value.status_code = 400 mocked_req.delete.return_value.reason = 'Any error reason' # error message dele = Connect('http://test.lt/test(123456789abcd)', auth={'a': 'a'}, headers={'some headers'}) respo = dele.delete() mocked_req.delete.assert_called_with('http://test.lt/test(123456789abcd)', auth={'a': 'a'}, headers={'some headers'}) self.assertEqual(respo, [], 'delete: on error returns blank') self.assertEqual(dele.except_error, [400, 'Any error reason'], 'delete: on error variable except_error ' 'must to include error code and reason')
# in API v1.0 we need to find sales line id and identify it by id # we looking for line with sequence 37500 sol.url = f"http://bs17:7048/BC/api/v1.0/salesOrders({so_id})/salesOrderLines" sol.filter_text = f"sequence eq {line_no}" # add filter ?$filter=sequence eq 37500 response_list = sol.read() # get line with filtered sequence 37500 if (len(response_list) > 0) and sol.except_error is None: line_id = response_list[0].get('id') print(f"Line 3750 id is {line_id}") else: raise Exception(sol.except_error) sol.url = f"http://bs17:7048/BC/api/v1.0/salesOrderLines('{line_id}')" # adding line_id to URL sol.filter_text = '' # remove any filters response_list = sol.delete() # update line in parameters new info dic if (len(response_list) > 0) and sol.except_error is None: print("Deleted fake line 37500", response_list) else: raise Exception(sol.except_error) # count lines sol.url = f"http://bs17:7048/BC/api/v1.0/salesOrders({so_id})/salesOrderLines" response_list = sol.read() # read all lines just for fun print(f"SO has {len(response_list)} lines after deleted one" ) # number of lines in the document # execute action - order ship and invoice # http://bs17:7048/BC/api/v1.0/salesOrders({so_id})/Microsoft.NAV.shipAndInvoice if len( so_id