Add Shop test

main
CPlaiz 2025-12-13 18:18:23 +01:00
parent c4335b5792
commit 95ad6006fe
1 changed files with 97 additions and 0 deletions

View File

@ -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<Product, Integer> 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<Product> 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());
}
}