From 8e5d2f5b5316f5235d47601966d0f4d9a59b4203 Mon Sep 17 00:00:00 2001 From: teo_sarca Date: Fri, 1 Feb 2008 21:50:43 +0000 Subject: [PATCH] BF [ 1564496 ] Inventory Move should warn if insufficient stock on han * Added MStorageTest JUnit Test case --- .../test/functional/FunctionalTestSuite.java | 1 + extend/src/test/functional/MStorageTest.java | 67 +++++++++++++++++++ 2 files changed, 68 insertions(+) create mode 100644 extend/src/test/functional/MStorageTest.java diff --git a/extend/src/test/functional/FunctionalTestSuite.java b/extend/src/test/functional/FunctionalTestSuite.java index fc9ffbff61..07d91d99c3 100644 --- a/extend/src/test/functional/FunctionalTestSuite.java +++ b/extend/src/test/functional/FunctionalTestSuite.java @@ -15,6 +15,7 @@ public class FunctionalTestSuite { suite.addTestSuite(MBPGroupTest.class); suite.addTestSuite(MLocationTest.class); suite.addTestSuite(POTest.class); + suite.addTestSuite(MStorageTest.class); //$JUnit-END$ return suite; } diff --git a/extend/src/test/functional/MStorageTest.java b/extend/src/test/functional/MStorageTest.java new file mode 100644 index 0000000000..86c1d229d4 --- /dev/null +++ b/extend/src/test/functional/MStorageTest.java @@ -0,0 +1,67 @@ +/** + * + */ +package test.functional; + +import java.math.BigDecimal; +import java.math.RoundingMode; + +import org.compiere.model.MLocator; +import org.compiere.model.MStorage; +import org.compiere.model.MWarehouse; +import org.compiere.util.Env; + +import test.AdempiereTestCase; + +/** + * Test MStorage class + * @author Teo Sarca, SC ARHIPAC SERVICE SRL + */ +public class MStorageTest extends AdempiereTestCase { + int product_id = 122; // standard + int location_id = 114; + + protected void setUp() throws Exception { + super.setUp(); + assertEquals("Client is not GardenWorld", 11, Env.getAD_Client_ID(getCtx())); + } + + private MLocator createLocator(MWarehouse wh, String locatorValue, double qtyOnHand) { + MLocator loc = new MLocator(wh, wh.getValue()+"-"+locatorValue); + loc.setXYZ("X"+locatorValue, "Y"+locatorValue, "Z"+locatorValue); + loc.save(); + // + BigDecimal targetQty = BigDecimal.valueOf(qtyOnHand); + MStorage s1 = MStorage.getCreate(getCtx(), loc.get_ID(), product_id, 0, getTrxName()); + s1.setQtyOnHand(targetQty); + s1.save(); + // + BigDecimal qty = MStorage.getQtyAvailable(wh.get_ID(), loc.get_ID(), product_id, 0, getTrxName()); + assertEquals("Error on locator "+locatorValue, targetQty, qty); + // + return loc; + } + private void assertWarehouseQty(MWarehouse wh, BigDecimal targetQty) { + BigDecimal qty = MStorage.getQtyAvailable(wh.get_ID(), 0, product_id, 0, getTrxName()); + qty = qty.setScale(12, RoundingMode.HALF_UP); + targetQty = targetQty.setScale(12, RoundingMode.HALF_UP); + assertEquals(targetQty, qty); + } + + public void testGetQtyAvailable() throws Exception { + BigDecimal whQty = Env.ZERO; + MWarehouse wh = new MWarehouse(getCtx(), 0, getTrxName()); + wh.setValue("test-wh"); + wh.setName("test-wh"); + wh.setC_Location_ID(location_id); + wh.save(); + assertWarehouseQty(wh, whQty); + // + for (int i = 1; i <= 10; i++) { + createLocator(wh, ""+i, i); + whQty = whQty.add(BigDecimal.valueOf(i)); + assertWarehouseQty(wh, whQty); + } + } + +}