From 95ad6006fe526a6067a52a6a2c2cb9e1513f362a Mon Sep 17 00:00:00 2001 From: CPlaiz Date: Sat, 13 Dec 2025 18:18:23 +0100 Subject: [PATCH] Add Shop test --- src/test/java/ShopTest.java | 97 +++++++++++++++++++++++++++++++++++++ 1 file changed, 97 insertions(+) create mode 100644 src/test/java/ShopTest.java diff --git a/src/test/java/ShopTest.java b/src/test/java/ShopTest.java new file mode 100644 index 0000000..afc9209 --- /dev/null +++ b/src/test/java/ShopTest.java @@ -0,0 +1,97 @@ +import org.example.Constants; +import org.example.Order; +import org.example.Product; +import org.example.Shop; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; + +import java.util.HashMap; +import java.util.List; + +import static org.junit.jupiter.api.Assertions.*; + +class ShopTest { + + private Shop shop; + private Product productA; + private Product productB; + + @BeforeEach + void setUp() { + productA = new Product(1, "Product 1", 0.5f, 50f, Constants.lowVat); + productB = new Product(2, "Product 2", 1.0f, 500f, Constants.highVat); + + HashMap stock = new HashMap<>(); + stock.put(productA, 2); + stock.put(productB, 5); + + shop = new Shop(stock); + } + + @Test + void addProductToCart() { + shop.addProductToCart(productA); + shop.addProductToCart(productA); + shop.addProductToCart(productA); // exceeds stock + + assertEquals(2, shop.getCart().get(productA)); + } + + @Test + void removeProductFromCart() { + shop.addProductToCart(productA); + shop.addProductToCart(productA); + + shop.removeProductFromCart(productA); + + assertEquals(1, shop.getCart().get(productA)); + } + + @Test + void setProductQuantityInCart() { + shop.setProductQuantityInCart(productA, 2); + shop.setProductQuantityInCart(productA, 5); + + assertEquals(2, shop.getCart().get(productA)); + } + + @Test + void getStock() { + assertEquals(2, shop.getStock(productA)); + assertEquals(5, shop.getStock(productB)); + } + + @Test + void getProductById() { + Product result = shop.getProductById(1); + + assertNotNull(result); + assertEquals(productA, result); + } + + @Test + void getProductByIdNotFound() { + assertNull(shop.getProductById(999)); + } + + @Test + void getProductList() { + List products = shop.getProductList(); + + assertEquals(2, products.size()); + assertTrue(products.contains(productA)); + assertTrue(products.contains(productB)); + } + + @Test + void checkout() { + shop.addProductToCart(productA); + shop.addProductToCart(productB); + shop.addProductToCart(productB); + + Order order = shop.checkout(); + + assertNotNull(order); + assertTrue(shop.getCart().isEmpty()); + } +}