def get_shipment(shipment_id): """ Retrieve a single shipment object. :param shipment_id: The shipment's id :return: { "id": "123", "status": "SHIPPED", "createdAt": "2015-11-05T22:00:51.692765", "updatedAt": "2015-11-08T22:00:51.692765", "deliveredAt": "2015-11-08T22:00:51.692765", "estimatedTimeOfArrival": "2015-11-07T22:00:51.692765", "currentLocation": {Address}, "fromId": "123", "toId:": "123", "items": [{LineItem}] } """ include_items = request.args.get('include_items') check_null_input((shipment_id, 'shipment to retrieve')) shipment = shipment_service.get_shipment(token=g.auth['loopback_token'], shipment_id=shipment_id, include_items=include_items) return Response(shipment, status=200, mimetype='application/json')
def test_get_shipment_no_items_filter_success(self): """With filter set to not include items, are they not returned?""" # Get a shipment shipments = shipment_service.get_shipments(self.loopback_token) shipment_id = loads(shipments)[0].get('id') shipment = shipment_service.get_shipment(self.loopback_token, shipment_id, include_items="0") # Make sure items are not returned self.assertFalse(loads(shipment).get('items'))
def test_get_shipment_success(self): """With correct values, is a valid shipment returned?""" # Get a shipment shipments = shipment_service.get_shipments(self.loopback_token) shipment_id = loads(shipments)[0].get('id') shipment = shipment_service.get_shipment(self.loopback_token, shipment_id) # TODO: Update to use assertIsInstance(a,b) # Check all expected object values are present shipment_json = loads(shipment) # Check that the shipment is valid self.assertTrue(shipment_json.get('id')) self.assertTrue(shipment_json.get('status')) self.assertTrue(shipment_json.get('createdAt')) self.assertTrue(shipment_json.get('estimatedTimeOfArrival')) self.assertTrue(shipment_json.get('fromId')) self.assertTrue(shipment_json.get('toId')) # Check that shipment address is valid, if present if shipment_json.get('currentLocation'): self.assertTrue(shipment_json.get('currentLocation').get('city')) self.assertTrue(shipment_json.get('currentLocation').get('state')) self.assertTrue( shipment_json.get('currentLocation').get('country')) self.assertTrue( shipment_json.get('currentLocation').get('latitude')) self.assertTrue( shipment_json.get('currentLocation').get('longitude')) # Check that the shipment's items are valid for item_json in shipment_json.get('items'): # Check that the item is valid self.assertTrue(item_json.get('id')) self.assertTrue(item_json.get('shipmentId')) self.assertTrue(item_json.get('productId')) self.assertTrue(item_json.get('quantity'))