package eu.ggnet.dwoss.stock.entity; import java.util.Date; import java.util.HashSet; import javax.validation.ConstraintViolation; import javax.validation.Validation; import javax.validation.Validator; import org.apache.commons.lang3.time.DateUtils; import org.junit.Test; import eu.ggnet.dwoss.util.validation.ConstraintViolationFormater; import static org.junit.Assert.*; public class StockTransactionTest { private final Validator V = Validation.buildDefaultValidatorFactory().getValidator(); @Test public void testTransferValid() throws InterruptedException { StockTransaction tr1 = new StockTransaction(StockTransactionType.TRANSFER); addStatus(tr1, StockTransactionStatusType.PREPARED); valid(tr1); addStatus(tr1, StockTransactionStatusType.COMMISSIONED); valid(tr1); addStatus(tr1, StockTransactionStatusType.IN_TRANSFER); valid(tr1); addStatus(tr1, StockTransactionStatusType.RECEIVED); valid(tr1); addStatus(tr1, StockTransactionStatusType.COMPLETED); valid(tr1); } @Test public void testTransferInvalid() throws InterruptedException { StockTransaction tr1 = new StockTransaction(StockTransactionType.TRANSFER); addStatus(tr1, StockTransactionStatusType.PREPARED); valid(tr1); addStatus(tr1, StockTransactionStatusType.IN_TRANSFER); invalid(tr1); } @Test public void testTransferInvalid2() throws InterruptedException { StockTransaction tr1 = new StockTransaction(StockTransactionType.TRANSFER); addStatus(tr1, StockTransactionStatusType.PREPARED); valid(tr1); addStatus(tr1, StockTransactionStatusType.PREPARED); invalid(tr1); } private void addStatus(StockTransaction st, StockTransactionStatusType type) throws InterruptedException { Date date = new Date(); if ( st.getStatus() != null ) date = DateUtils.addSeconds(st.getStatus().getOccurence(), 1); st.addStatus(date, type, StockTransactionParticipationType.ARRANGER, "Test"); } private void valid(StockTransaction tr1) { assertTrue("StockTransaction should be valid, but: " + ConstraintViolationFormater.toMultiLine(new HashSet<ConstraintViolation<?>>(V.validate(tr1)), true), V.validate(tr1).isEmpty()); } private void invalid(StockTransaction tr1) { assertFalse("StockTransaction should be invalid, but is valid: " + tr1, V.validate(tr1).isEmpty()); } }