Ejemplo n.º 1
0
    def test_item_in_multiple_warehouse(self):
        """
        A test case where whole order cannot be fulfilled from single warehouse
        """

        order = {"apple": 10}
        warehouses = [{
            "name": "owd",
            "inventory": {
                "apple": 5
            }
        }, {
            "name": "dm",
            "inventory": {
                "apple": 5
            }
        }]
        inventoryallocator = inventory_allocator.InventoryAllocator(
            order, warehouses)
        fulfilled_order, pending_order = inventoryallocator.order_shipment()
        self.assertEqual(fulfilled_order, [{
            'owd': {
                'apple': 5
            }
        }, {
            'dm': {
                'apple': 5
            }
        }])
        self.assertEqual(pending_order, {})
Ejemplo n.º 2
0
    def test_multiple_warehouse(self):
        """
        A test case with multiple order items being in multiple warehouses
        """

        order = {"apple": 5, "banana": 5, "orange": 5}
        warehouses = [{
            "name": "owd",
            "inventory": {
                "apple": 5,
                "orange": 10
            }
        }, {
            "name": "dm",
            "inventory": {
                "banana": 5,
                "orange": 10
            }
        }]
        inventoryallocator = inventory_allocator.InventoryAllocator(
            order, warehouses)
        fulfilled_order, pending_order = inventoryallocator.order_shipment()
        self.assertEqual(fulfilled_order, [{
            'owd': {
                'apple': 5,
                'orange': 5
            }
        }, {
            'dm': {
                'banana': 5
            }
        }])
        self.assertEqual(pending_order, {})
Ejemplo n.º 3
0
    def test_jumbled_item_inventory(self):
        """
        A test case where item can be in multiple warehouses and 
        partial order can be fulfilled
        """

        order = {"apple": 10, "grapes": 10, "banana": 4, "orange": 6}
        warehouses = [{
            "name": "owd",
            "inventory": {
                "apple": 5
            }
        }, {
            "name": "dm",
            "inventory": {
                "apple": 5,
                "banana": 10
            }
        }, {
            "name": "abc",
            "inventory": {
                "apple": 5,
                "banana": 2,
                "orange": 5
            }
        }, {
            "name": "xyz",
            "inventory": {
                "grapes": 5,
                "orange": 2
            }
        }]
        inventoryallocator = inventory_allocator.InventoryAllocator(
            order, warehouses)
        fulfilled_order, pending_order = inventoryallocator.order_shipment()
        self.assertEqual(fulfilled_order, [{
            'owd': {
                'apple': 5
            }
        }, {
            'dm': {
                'apple': 5,
                'banana': 4
            }
        }, {
            'abc': {
                'orange': 5
            }
        }, {
            'xyz': {
                'grapes': 5,
                'orange': 1
            }
        }])
        self.assertEqual(pending_order, {'grapes': 5})
Ejemplo n.º 4
0
    def test_no_inventory(self):
        """
        A test case where inventory is zero
        """

        order = {"apple": 10}
        warehouses = [{"name": "owd", "inventory": {"apple": 0}}]
        inventoryallocator = inventory_allocator.InventoryAllocator(
            order, warehouses)
        fulfilled_order, pending_order = inventoryallocator.order_shipment()
        self.assertEqual(fulfilled_order, [])
        self.assertEqual(pending_order, {'apple': 10})
Ejemplo n.º 5
0
    def test_simple_case(self):
        """
        A simple test case
        """

        order = {"apple": 10}
        warehouses = [{"name": "owd", "inventory": {"apple": 10}}]
        inventoryallocator = inventory_allocator.InventoryAllocator(
            order, warehouses)
        fulfilled_order, pending_order = inventoryallocator.order_shipment()
        self.assertEqual(fulfilled_order, [{"owd": {"apple": 10}}])
        self.assertEqual(pending_order, {})
Ejemplo n.º 6
0
    def test_not_enough_inventory(self):
        """
        A test case where order can only be partially fulfilled 
        """

        order = {"apple": 10}
        warehouses = [{
            "name": "owd",
            "inventory": {
                "apple": 0
            }
        }, {
            "name": "abc",
            "inventory": {
                "apple": 5,
                "orange": 2
            }
        }]
        inventoryallocator = inventory_allocator.InventoryAllocator(
            order, warehouses)
        fulfilled_order, pending_order = inventoryallocator.order_shipment()
        self.assertEqual(fulfilled_order, [{'abc': {'apple': 5}}])
        self.assertEqual(pending_order, {'apple': 5})
Ejemplo n.º 7
0
    def test_no_order(self):
        """
        A test case for empty order
        """

        order = {}
        warehouses = [{
            "name": "owd",
            "inventory": {
                "apple": 5
            }
        }, {
            "name": "dm",
            "inventory": {
                "apple": 5,
                "banana": 10
            }
        }]
        inventoryallocator = inventory_allocator.InventoryAllocator(
            order, warehouses)
        fulfilled_order, pending_order = inventoryallocator.order_shipment()
        self.assertEqual(fulfilled_order, [])
        self.assertEqual(pending_order, {})