def testGetCheapestShipmentsOneOrderMultipleShipments(self):
     orders = {'apple': 10}
     warehouses = [{
         'name': 'owd',
         'inventory': {
             'apple': 5
         }
     }, {
         'name': 'dm',
         'inventory': {
             'apple': 5
         }
     }]
     inventoryAllocator = InventoryAllocator()
     cheapestShipment = \
         inventoryAllocator.getCheapestShipments(orders, warehouses)
     self.assertEqual(cheapestShipment, [{
         'dm': {
             'apple': 5
         }
     }, {
         'owd': {
             'apple': 5
         }
     }])
 def testGetCheapestShipmentsNotFound(self):
     orders = {'apple': 1}
     warehouses = [{'name': 'owd', 'inventory': {'apple': 0}}]
     inventoryAllocator = InventoryAllocator()
     cheapestShipment = \
         inventoryAllocator.getCheapestShipments(orders, warehouses)
     self.assertEqual(cheapestShipment, [])
 def testGetCheapestShipmentsMultipleOrderMultipleShipment(self):
     orders = {
         'apple': 5,
         'orange': 5,
         'banana': 5,
         'grape': 5,
     }
     warehouses = [{
         'name': 'owd',
         'inventory': {
             'apple': 5
         }
     }, {
         'name': 'dm',
         'inventory': {
             'orange': 5
         }
     }, {
         'name': 'bb',
         'inventory': {
             'banana': 5
         }
     }, {
         'name': 'gg',
         'inventory': {
             'grape': 5
         }
     }, {
         'name': 'all',
         'inventory': {
             'apple': 10,
             'orange': 10,
             'banana': 10,
             'grape': 10,
         }
     }]
     inventoryAllocator = InventoryAllocator()
     cheapestShipment = \
         inventoryAllocator.getCheapestShipments(orders, warehouses)
     self.assertEqual(cheapestShipment, [{
         'gg': {
             'grape': 5
         }
     }, {
         'bb': {
             'banana': 5
         }
     }, {
         'dm': {
             'orange': 5
         }
     }, {
         'owd': {
             'apple': 5
         }
     }])