Debug School

rakesh kumar
rakesh kumar

Posted on

Integration testing for shopping cart

To perform integration testing for the process of adding items to a shopping cart and deducting stock from the inventory, you can use a testing framework like PHPUnit for PHP applications. Below is an example of how you might structure an integration test for this scenario:

Assuming you have classes representing the shopping cart (ShoppingCart) and inventory management (InventoryManager), and these classes interact with each other:

// app/ShoppingCart.php

namespace App;

class ShoppingCart
{
    protected $items = [];

    public function addItem($productId, $quantity)
    {
        // Logic to add an item to the shopping cart
        // ...
    }

    public function getItems()
    {
        return $this->items;
    }
}
Enter fullscreen mode Exit fullscreen mode
namespace App;

class InventoryManager
{
    protected $inventory = [];

    public function deductStock($productId, $quantity)
    {
        // Logic to deduct stock from the inventory
        // ...
    }

    public function getStock($productId)
    {
        return $this->inventory[$productId] ?? 0;
    }
}
Enter fullscreen mode Exit fullscreen mode

Now, let's create an integration test to verify the interaction between the shopping cart and the inventory manager:

namespace Tests\Feature;

use App\ShoppingCart;
use App\InventoryManager;
use Illuminate\Foundation\Testing\RefreshDatabase;
use Tests\TestCase;

class ShoppingCartIntegrationTest extends TestCase
{
    use RefreshDatabase;

    public function testAddingItemToCartDeductsStockFromInventory()
    {
        // Set up initial inventory
        $initialStock = 10;
        $productId = 1;

        $inventoryManager = new InventoryManager();
        $inventoryManager->deductStock($productId, $initialStock);

        // Create a shopping cart
        $shoppingCart = new ShoppingCart();

        // Add an item to the cart
        $quantityToAdd = 3;
        $shoppingCart->addItem($productId, $quantityToAdd);

        // Assert that the item is added to the cart
        $cartItems = $shoppingCart->getItems();
        $this->assertCount(1, $cartItems);
        $this->assertEquals($quantityToAdd, $cartItems[$productId]['quantity']);

        // Assert that the stock is deducted from the inventory
        $updatedStock = $inventoryManager->getStock($productId);
        $this->assertEquals($initialStock - $quantityToAdd, $updatedStock);
    }
}
Enter fullscreen mode Exit fullscreen mode

In this example:

We set up an initial inventory and deduct some stock from it using the InventoryManager.
We then create a ShoppingCart and add an item to it.
Finally, we assert that the item is added to the cart, and the stock is correctly deducted from the inventory.
Make sure to adapt this code according to your actual implementation and requirements. To run the test, you can use the following command:

php artisan test
Enter fullscreen mode Exit fullscreen mode

This will execute the integration test and verify that adding items to the shopping cart correctly deducts stock from the inventory.

Top comments (0)