def test_multiple_orders(self):
        """testing for multiple order across the inventories
        """

        order = {'apple': 20, 'dragonfruit': 7, 'peach': 68}
        inventory = [{
            'name': 'owd',
            'inventory': {
                'apple': 15,
                'dragonfruit': 12
            }
        }, {
            'name': 'dm',
            'inventory': {
                'apple': 25
            }
        }]
        output = [{
            'owd': {
                'apple': 15,
                'dragonfruit': 7
            }
        }, {
            'dm': {
                'apple': 5
            }
        }]

        inven = InvertoryAllocation().shipment(order, inventory)
        self.assertEqual(output, inven)
    def test_happy_case(self) -> None:
        """testing a simple/happy case
        """

        order = {'apple': 1}
        inventory = [{'name': 'owd', 'inventory': {'apple': 1}}]
        output = [{'owd': {'apple': 1}}]

        inven = InvertoryAllocation().shipment(order, inventory)
        self.assertEqual(output, inven)
    def test_no_inventory(self) -> None:
        """testing for No inventory
        """

        order = {'apple': 3}
        inventory = []
        output = []

        inven = InvertoryAllocation().shipment(order, inventory)
        self.assertEqual(output, inven)
    def test_no_order(self) -> None:
        """testing for no order
        """

        order = {}
        inventory = [{'name': 'owd', 'inventory': {'apple': 1}}]
        output = []

        inven = InvertoryAllocation().shipment(order, inventory)
        self.assertEqual(output, inven)
    def test_not_enough_inventory(self) -> None:
        """testing for Not enough inventory
        """

        order = {'apple': 1}
        inventory = [{'name': 'owd', 'inventory': {'apple': 0}}]
        output = []

        inven = InvertoryAllocation().shipment(order, inventory)
        self.assertEqual(output, inven)
    def test_new_item(self) -> None:
        """testing an item which is not present in inventory
        """

        order = {'apple': 10, 'orange': 5}
        inventory = [{
            'name': 'owd',
            'inventory': {
                'apple': 5
            }
        }, {
            'name': 'dm',
            'inventory': {
                'apple': 5
            }
        }]
        output = [{'owd': {'apple': 5}}, {'dm': {'apple': 5}}]

        inven = InvertoryAllocation().shipment(order, inventory)
        self.assertEqual(output, inven)
    def test_split(self) -> None:
        """testing for spliting an item order across warehouses 
           if that is the only way to completely ship an item
        """

        order = {'apple': 10}
        inventory = [{
            'name': 'owd',
            'inventory': {
                'apple': 5
            }
        }, {
            'name': 'dm',
            'inventory': {
                'apple': 5
            }
        }]
        output = [{'owd': {'apple': 5}}, {'dm': {'apple': 5}}]

        inven = InvertoryAllocation().shipment(order, inventory)
        self.assertEqual(output, inven)
    def test_zero_order_value(self):
        """testing for an order with value zero
        """

        order = {'apple': 0, 'dragonfruit': 7, 'peach': 68}
        inventory = [{
            'name': 'owd',
            'inventory': {
                'apple': 15,
                'dragonfruit': 12
            }
        }, {
            'name': 'dm',
            'inventory': {
                'apple': 25
            }
        }]
        output = [{'owd': {'dragonfruit': 7}}]

        inven = InvertoryAllocation().shipment(order, inventory)
        self.assertEqual(output, inven)