def test_get_distribution_centers_success(self): """With correct values, are valid distribution centers returned?""" # Get distribution centers distribution_centers = distribution_center_service.get_distribution_centers( self.loopback_token) # TODO: Update to use assertIsInstance(a,b) # Check all expected object values are present distribution_centers_json = loads(distribution_centers) # Check that the distribution centers are valid for distribution_center_json in distribution_centers_json: self.assertTrue(distribution_center_json.get('id')) # Check that distribution center address is valid, if present if distribution_center_json.get('address'): self.assertTrue( distribution_center_json.get('address').get('city')) self.assertTrue( distribution_center_json.get('address').get('state')) self.assertTrue( distribution_center_json.get('address').get('country')) self.assertTrue( distribution_center_json.get('address').get('latitude')) self.assertTrue( distribution_center_json.get('address').get('longitude')) # Check that distribution center contact is valid, if present if distribution_center_json.get('contact'): self.assertTrue( distribution_center_json.get('contact').get('name'))
def test_create_shipment_success(self): """With correct values, is a valid shipment created?""" # Get retailers and distribution centers retailers = retailer_service.get_retailers(self.loopback_token) distribution_centers = distribution_center_service.get_distribution_centers( self.loopback_token) # Create shipment shipment = dict() shipment['fromId'] = loads(distribution_centers)[0].get('id') shipment['toId'] = loads(retailers)[0].get('id') shipment['estimatedTimeOfArrival'] = "2016-07-14" created_shipment = shipment_service.create_shipment( self.loopback_token, shipment) # TODO: Update to use assertIsInstance(a,b) # Check all expected object values are present shipment_json = loads(created_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('fromId')) self.assertTrue(shipment_json.get('toId'))
def test_get_distribution_center_inventory_invalid_token(self): """With an invalid token, are correct errors thrown?""" # Get distribution centers distribution_centers = distribution_center_service.get_distribution_centers(self.loopback_token) dc_id = loads(distribution_centers)[0].get('id') # Attempt to get retailer inventory with invalid token self.assertRaises(AuthenticationException, distribution_center_service.get_distribution_center_inventory, utils.get_bad_token(), dc_id)
def get_distribution_centers(): """ Get all distribution center objects. :return: [{ "id": "D2", "address": {Address}, "contact": {Contact} }, {...}] """ distribution_centers = distribution_center_service.get_distribution_centers(token=g.auth['loopback_token']) return Response(distribution_centers, status=200, mimetype='application/json')
def test_get_shipments_distribution_center_id_filter_success(self): """Are correct distribution center's shipments returned?""" # Get shipments intended for specific distribution center distribution_centers = distribution_center_service.get_distribution_centers( self.loopback_token) dc_id_filter = loads(distribution_centers)[0].get('id') shipments = shipment_service.get_shipments(self.loopback_token, dc_id=dc_id_filter) # TODO: Update to use assertIsInstance(a,b) # Check all expected object values are present shipments_json = loads(shipments) # Check that the shipments have correct retailer ID (toId) for shipment_json in shipments_json: self.assertTrue(shipment_json.get('fromId') == dc_id_filter)
def test_get_distribution_center_inventory_success(self): """With correct values, is valid inventory returned?""" # Get distribution center distribution_centers = distribution_center_service.get_distribution_centers(self.loopback_token) dc_id = loads(distribution_centers)[0].get('id') inventory = distribution_center_service.get_distribution_center_inventory(self.loopback_token, dc_id) # TODO: Update to use assertIsInstance(a,b) # Check all expected object values are present inventories_json = loads(inventory) for inventory_json in inventories_json: self.assertTrue(inventory_json.get('id')) self.assertIsInstance(inventory_json.get('quantity'), IntType) self.assertTrue(inventory_json.get('productId')) self.assertTrue(inventory_json.get('locationId')) self.assertTrue(inventory_json.get('locationType'))
def test_create_shipment_invalid_token(self): """With an invalid token, are correct errors thrown?""" # Get retailers and distribution centers retailers = retailer_service.get_retailers(self.loopback_token) distribution_centers = distribution_center_service.get_distribution_centers( self.loopback_token) # Create shipment shipment = dict() shipment['fromId'] = loads(distribution_centers)[0].get('id') shipment['toId'] = loads(retailers)[0].get('id') shipment['estimatedTimeOfArrival'] = "2016-07-14" created_shipment = shipment_service.create_shipment( self.loopback_token, shipment) # Attempt to create a shipment with invalid token self.assertRaises(AuthenticationException, shipment_service.create_shipment, utils.get_bad_token(), shipment)
def test_create_shipment_invalid_ids(self): """With an invalid retailer/distribution center IDs, are correct errors thrown?""" # Get retailers and distribution centers retailers = retailer_service.get_retailers(self.loopback_token) distribution_centers = distribution_center_service.get_distribution_centers( self.loopback_token) # Create invalid shipments shipment_invalid_retailer = dict() shipment_invalid_retailer['fromId'] = loads( distribution_centers)[0].get('id') shipment_invalid_retailer['toId'] = "123321" shipment_invalid_dist = dict() shipment_invalid_dist['fromId'] = "123321" shipment_invalid_dist['toId'] = loads(retailers)[0].get('id') # Attempt to create a shipment with invalid IDs self.assertRaises(UnprocessableEntityException, shipment_service.create_shipment, self.loopback_token, shipment_invalid_retailer) self.assertRaises(UnprocessableEntityException, shipment_service.create_shipment, self.loopback_token, shipment_invalid_dist)