package eu.ggnet.dwoss.customer; import eu.ggnet.dwoss.rules.CustomerFlag; import eu.ggnet.dwoss.rules.ShippingCondition; import eu.ggnet.dwoss.rules.SalesChannel; import eu.ggnet.dwoss.rules.PaymentCondition; import eu.ggnet.dwoss.rules.PaymentMethod; import java.util.*; import javax.ejb.Stateless; import javax.ejb.embeddable.EJBContainer; import javax.enterprise.inject.Produces; import javax.inject.Inject; import javax.naming.NamingException; import javax.persistence.*; import org.junit.*; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import eu.ggnet.dwoss.configuration.SystemConfig; import eu.ggnet.dwoss.mandator.api.value.DefaultCustomerSalesdata; import eu.ggnet.dwoss.mandator.api.value.Mandator; import eu.ggnet.dwoss.mandator.api.value.DeleteCustomers; import eu.ggnet.dwoss.customer.assist.CustomerPu; import eu.ggnet.dwoss.customer.assist.Customers; import eu.ggnet.dwoss.customer.eao.CustomerEao; import eu.ggnet.dwoss.customer.entity.Customer; import eu.ggnet.dwoss.customer.priv.OldCustomer; import static eu.ggnet.dwoss.customer.priv.ConverterUtil.mergeFromOld; import static org.junit.Assert.assertTrue; /** * * @author Bastian Venz */ public class CustomerSearchIT { private EJBContainer container; @Inject private CustomerSearchITHelper helper; @Produces private DeleteCustomers dc = new DeleteCustomers(new HashMap<>()); @Before public void setUp() throws NamingException { Map<String, Object> c = new HashMap<>(); c.putAll(CustomerPu.CMP_IN_MEMORY); c.putAll(SystemConfig.OPENEJB_EJB_XML_DISCOVER); c.putAll(SystemConfig.OPENEJB_LOG_TESTING); container = EJBContainer.createEJBContainer(c); container.getContext().bind("inject", this); } @After public void tearDown() { container.close(); } @Test public void testLucenceSearch() throws InterruptedException { OldCustomer c1 = new OldCustomer("Die Firma", "Herr", "Max", "Mustermann", "Keine Bemerkungen", null, "Helle Strasse 22", "12345", "Musterhausen"); OldCustomer c2 = new OldCustomer(null, "Frau", "Marria", "Mustermann", "Grosse Tüten", null, "Dunkle Allee 7", "12345", "Musterhausen", "Der Abnehmer", "Dünne Gasse 2", "22222", "Wolfsstaaad"); c2.setPaymentMethod(PaymentMethod.DIRECT_DEBIT); c2.addFlag(CustomerFlag.CONFIRMS_DOSSIER); c1.setPaymentCondition(PaymentCondition.CUSTOMER); //by pp OldCustomer c3 = new OldCustomer("Schlagstock Ltd.", "Herr", "Michael", "Wankelmeier", "Bloß freundlich sein !!!", "John \"Die Rechte\" Jefferson", "Adamsweg 3", "00666", "Eisenhüttenstadt", null, null, null, null); c3.addFlag(CustomerFlag.CONFIRMS_DOSSIER); c3.addFlag(CustomerFlag.CONFIRMED_CASH_ON_DELIVERY); c3.setPaymentMethod(PaymentMethod.CASH_ON_DELIVERY); c3.setAllowedSalesChannels(EnumSet.of(SalesChannel.CUSTOMER, SalesChannel.RETAILER)); c3.setPaymentCondition(PaymentCondition.DEALER_3_PERCENT_DISCOUNT); c3.setShippingCondition(ShippingCondition.DEALER_ONE); OldCustomer c4 = new OldCustomer(null, "Frau", "Lisa", "Lüstling", null, null, "Freie Straße 2", "98745", "Heimwehrhausen", "GanzSchnell GmbH", "Dünne Gasse 2", "22222", "Heimwehrhausen"); c4.addFlag(CustomerFlag.CONFIRMS_DOSSIER); c4.setAllowedSalesChannels(EnumSet.of(SalesChannel.CUSTOMER)); c4.setPaymentCondition(PaymentCondition.EMPLOYEE); c4.setShippingCondition(ShippingCondition.DEALER_ONE); c4.setPaymentMethod(PaymentMethod.INVOICE); helper.persist(c1); helper.persist(c2); helper.persist(c3); helper.persist(c4); List<Customer> find = helper.testLucenceSearch("schlag*"); assertTrue("Only One element should be here: " + find, find.size() == 1); find = helper.testLucenceSearch("schlag"); assertTrue("No element should be here: " + find, find.size() == 0); find = helper.testLucenceSearch("schlagstock ltd"); assertTrue("No element should be here: " + find, find.size() == 1); } @Stateless public static class CustomerSearchITHelper { @Inject @Customers private EntityManager em; @Inject private Mandator mandator; @Inject private CustomerEao eao; @Inject private DefaultCustomerSalesdata salesData; private static final Logger LOG = LoggerFactory.getLogger(CustomerSearchITHelper.class); public void persist(OldCustomer old) { Customer customer = new Customer(); mergeFromOld(old, customer, mandator.getMatchCode(), salesData); em.persist(customer); } public List<Customer> testLucenceSearch(String s) throws InterruptedException { List<Customer> find = eao.find(s); for (Customer customer : find) { customer.toMultiLine(); } return find; } } }