Add InventoryManagementSystem app
This commit is contained in:
@@ -0,0 +1,142 @@
|
||||
package inventory;
|
||||
|
||||
import org.junit.jupiter.api.BeforeEach;
|
||||
import org.junit.jupiter.api.Test;
|
||||
import static org.junit.jupiter.api.Assertions.*;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* Unit tests for InventoryManager class.
|
||||
*/
|
||||
class InventoryManagerTest {
|
||||
|
||||
private InventoryManager manager;
|
||||
|
||||
/**
|
||||
* Set up fresh instance before each test
|
||||
*/
|
||||
@BeforeEach
|
||||
void setUp() {
|
||||
manager = new InventoryManager();
|
||||
}
|
||||
|
||||
/**
|
||||
* Test adding products to inventory
|
||||
*/
|
||||
@Test
|
||||
void testAddProduct() {
|
||||
boolean succeeded = manager.addProduct("TEST1", "Test Book", "BOOK", 10.0, 1);
|
||||
assertTrue(succeeded);
|
||||
assertTrue(manager.productExists("TEST1"));
|
||||
assertEquals(10.00, manager.getInventoryValue());
|
||||
}
|
||||
|
||||
/**
|
||||
* Test adding product with invalid parameters
|
||||
*/
|
||||
@Test
|
||||
void testAddInvalidProduct() {
|
||||
boolean succeeded = manager.addProduct("TEST1", "Test Book", "BOOK", 0, 1);
|
||||
assertFalse(succeeded);
|
||||
assertEquals(0, manager.getInventoryValue());
|
||||
}
|
||||
|
||||
/**
|
||||
* Test selling products
|
||||
*/
|
||||
@Test
|
||||
void testSellProduct() {
|
||||
manager.addProduct("TEST1", "Test Book", "BOOK", 10.0, 10);
|
||||
assertEquals(100.00, manager.getInventoryValue());
|
||||
|
||||
manager.sellProduct("TEST1", 2, "NONE");
|
||||
assertEquals(80.00, manager.getInventoryValue());
|
||||
|
||||
manager.sellProduct("TEST1", 6, "BULK");
|
||||
assertEquals(20.00, manager.getInventoryValue());
|
||||
|
||||
manager.sellProduct("TEST1", 2, "STUDENT");
|
||||
assertEquals(0, manager.getInventoryValue());
|
||||
}
|
||||
|
||||
/**
|
||||
* Test selling more than available stock
|
||||
*/
|
||||
@Test
|
||||
void testSellInsufficientStock() {
|
||||
manager.addProduct("TEST1", "Test Book", "BOOK", 10.0, 10);
|
||||
assertEquals(100.00, manager.getInventoryValue());
|
||||
|
||||
manager.sellProduct("TEST1", 12, "NONE");
|
||||
assertEquals(100.00, manager.getInventoryValue());
|
||||
}
|
||||
|
||||
/**
|
||||
* Test adding stock to existing product
|
||||
*/
|
||||
@Test
|
||||
void testAddStock() {
|
||||
manager.addProduct("TEST1", "Test Book", "BOOK", 10.0, 1);
|
||||
assertEquals(10.00, manager.getInventoryValue());
|
||||
|
||||
manager.addStock("TEST1", 1);
|
||||
assertEquals(20.00, manager.getInventoryValue());
|
||||
}
|
||||
|
||||
/**
|
||||
* Test inventory value calculation
|
||||
*/
|
||||
@Test
|
||||
void testInventoryValue() {
|
||||
manager.addProduct("TEST1", "Test Book", "BOOK", 10.0, 2);
|
||||
manager.addProduct("TEST2", "Test Book", "BOOK", 50.0, 1);
|
||||
assertEquals(2 * 10.00 + 1 * 50.00, manager.getInventoryValue());
|
||||
}
|
||||
|
||||
/**
|
||||
* Test low stock detection
|
||||
*/
|
||||
@Test
|
||||
void testLowStockProducts() {
|
||||
manager.addProduct("TEST1", "Test Book", "BOOK", 10.0, 1);
|
||||
manager.addProduct("TEST2", "Test Book", "BOOK", 10.0, 2);
|
||||
manager.addProduct("TEST5", "Test Book", "BOOK", 10.0, 5);
|
||||
manager.addProduct("TEST10", "Test Book", "BOOK", 10.0, 10);
|
||||
|
||||
List<Product> lowStockUnder5 = manager.getLowStockProducts(5);
|
||||
assertEquals(2, lowStockUnder5.size());
|
||||
assertTrue(lowStockUnder5.stream().anyMatch(p -> p.getId().equals("TEST1")));
|
||||
assertTrue(lowStockUnder5.stream().anyMatch(p -> p.getId().equals("TEST2")));
|
||||
}
|
||||
|
||||
/**
|
||||
* Test operations on non-existent products
|
||||
*/
|
||||
@Test
|
||||
void testNonExistentProduct() {
|
||||
boolean sellSucceeded = manager.sellProduct("NONE", 1, "BOOK");
|
||||
assertFalse(sellSucceeded);
|
||||
|
||||
boolean addStockSucceeded = manager.addStock("NONE", 1);
|
||||
assertFalse(addStockSucceeded);
|
||||
}
|
||||
|
||||
/**
|
||||
* Test complete workflow
|
||||
*/
|
||||
@Test
|
||||
void testCompleteWorkflow() {
|
||||
|
||||
boolean addSucceeded = manager.addProduct("TEST1", "Test Book", "BOOK", 10.0, 10);
|
||||
assertTrue(addSucceeded);
|
||||
assertEquals(100.00, manager.getInventoryValue());
|
||||
|
||||
boolean addStockSucceeded = manager.addStock("TEST1", 10);
|
||||
assertTrue(addStockSucceeded);
|
||||
assertEquals(200.00, manager.getInventoryValue());
|
||||
|
||||
boolean sellSucceeded = manager.sellProduct("TEST1", 18, "NONE");
|
||||
assertTrue(sellSucceeded);
|
||||
assertEquals(20.00, manager.getInventoryValue());
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user