package eu.ggnet.dwoss.stock.entity; import org.junit.Test; import static org.junit.Assert.*; public class BidirectionalTest { @Test public void testUnitToStockAndTransaction() { Stock s0 = new Stock(0); Stock s1 = new Stock(1); StockUnit su0 = new StockUnit(0); StockUnit su1 = new StockUnit(1); s0.addUnit(su0); assertEquals(1, s0.getUnits().size()); assertTrue(su0.isInStock()); assertFalse(su0.isInTransaction()); assertEquals(s0, su0.getStock()); su0.setStock(s1); assertTrue(s0.getUnits().isEmpty()); assertEquals(1, s1.getUnits().size()); assertTrue(su0.isInStock()); assertFalse(su0.isInTransaction()); assertEquals(s1, su0.getStock()); StockTransaction t1 = new StockTransaction(); t1.addPosition(new StockTransactionPosition(su0)); t1.addPosition(new StockTransactionPosition(su1)); // su0 should be invalid du to sock and transaction assertNotNull(su0.getValidationViolations()); assertNull(su1.getValidationViolations()); s1.removeUnit(su0); assertTrue(s0.getUnits().isEmpty()); assertTrue(s1.getUnits().isEmpty()); assertEquals(2, t1.getPositions().size()); assertFalse(su0.isInStock()); assertTrue(su0.isInTransaction()); } @Test public void testStockAndLocation() { Stock s0 = new Stock(0); StockLocation s0l0 = new StockLocation("Bla Bla"); StockLocation s0l1 = new StockLocation("Bla Bla"); s0.addStockLocation(s0l0); s0.addStockLocation(s0l1); assertEquals(2, s0.getStockLocations().size()); s0l1.setStock(null); assertEquals(1, s0.getStockLocations().size()); s0l1.setStock(s0); StockUnit su = new StockUnit(0); su.setStockLocation(s0l0); assertEquals(s0l1, su.getStockLocation()); assertEquals(s0, su.getStock()); su.setStock(null); assertNull(su.getStockLocation()); assertNull(su.getStock()); } @Test public void testStockAndPosition() { } }