package de.epages.ws.order6; import static org.hamcrest.core.StringEndsWith.endsWith; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertThat; import java.util.GregorianCalendar; import org.junit.Before; import org.junit.Test; import de.epages.ws.ShopWebServiceTestConfiguration; import de.epages.ws.common.model.TAttribute; import de.epages.ws.order6.model.TCreate_Input; import de.epages.ws.order6.model.TCreate_Return; import de.epages.ws.order6.model.TDelete_Return; import de.epages.ws.order6.model.TExists_Return; import de.epages.ws.order6.model.TGetInfo_Return; import de.epages.ws.order6.model.TLineItemContainerIn; import de.epages.ws.order6.model.TProductLineItemIn; import de.epages.ws.order6.model.TUpdate_Input; import de.epages.ws.order6.model.TUpdate_Return; import de.epages.ws.order6.stub.TFind_Input; import de.epages.ws.shop2.model.TAddressNamed; public class OrderServiceTest { private static final OrderServiceClientImpl orderService = new OrderServiceClientImpl(new ShopWebServiceTestConfiguration()); private final TCreate_Input Order_in = new TCreate_Input(); private final TUpdate_Input Order_up = new TUpdate_Input(); private final TAttribute OrderAttr_in = new TAttribute("Comment", "my customer commment", null, null); private final TAttribute OrderAttr_up = new TAttribute("Comment", "my updated customer comment", null, null); private final TAddressNamed Address_in = new TAddressNamed(); private final TAddressNamed Address_up = new TAddressNamed(); private final String Alias = "java_test-1"; private final String Customer = "Customers/1001"; /* mmustermann */ private final String OrderPath = Customer + "/Orders/" + Alias; private final String[] Orders = new String[] { OrderPath }; private final String[] OrderAttributes = new String[] { "Comment" }; private final String[] AddressAttributes = new String[] { "JobTitle" /* ,"Salutation" */}; String[] ItemAttributes = new String[]{"Name"}; /** * Sets all the required prerequisites for the tests. Will be called before * the test are run. */ @Before public void setUp() { // init input address data Address_in.setEMail("java_test-1@epages.de"); Address_in.setFirstName("Klaus"); Address_in.setLastName("Klaussen"); Address_in.setStreet("Musterstraße 2"); Address_in.setStreet2("Ortsteil Niederfingeln"); Address_in.setAttributes(new TAttribute[] { new TAttribute("JobTitle", "best Job", null, null), new TAttribute("Salutation", "Dr.", null, null), }); Address_up.setFirstName("Hans"); Address_up.setLastName("Hanssen"); Address_up.setStreet("Musterstraße 2b"); Address_up.setStreet2("Ortsteil Oberfingeln"); // init order input data Order_in.setAlias(Alias); Order_in.setCustomer(Customer); Order_in.setBillingAddress(Address_in); Order_in.setCreationDate(new GregorianCalendar(2008, 0, 1, 11, 11)); Order_in.setViewedOn(new GregorianCalendar(2008, 0, 2, 12, 00)); Order_in.setAttributes(new TAttribute[] { OrderAttr_in }); TLineItemContainerIn lineItemContainer = new TLineItemContainerIn(); lineItemContainer.setCurrencyID("EUR"); lineItemContainer.setPaymentMethod("PaymentMethods/Invoice"); lineItemContainer.setShippingMethod("ShippingMethods/Express"); lineItemContainer.setTaxArea("/TaxMatrixGermany/EU"); lineItemContainer.setTaxModel("gross"); lineItemContainer.setProductLineItems(new TProductLineItemIn[] { new TProductLineItemIn("Products/ho_1112105010", (float) 10), // new TProductLineItemIn("Products/de_3203104010", // (float)10), }); Order_in.setLineItemContainer(lineItemContainer); // init order update data Order_up.setPath(OrderPath); Order_up.setBillingAddress(Address_up); Order_up.setCreationDate(new GregorianCalendar(2008, 0, 1, 11, 11)); Order_up.setInProcessOn(new GregorianCalendar(2008, 0, 3, 12, 00)); Order_up.setAttributes(new TAttribute[] { OrderAttr_up }); // delete the test order if it exists TExists_Return[] Orders_exists_out = orderService.exists(new String[] { OrderPath }); if (Orders_exists_out[0].getExists()) { TDelete_Return[] Orders_delete_out = orderService.delete(new String[] { OrderPath }); assertEquals("delete result set", 1, Orders_delete_out.length); } } /** * Create a Order and check if the creation was successful */ public void testCreate() { TCreate_Return[] Orders_create_out = orderService.create(new TCreate_Input[] { Order_in }); assertEquals("create result set", 1, Orders_create_out.length); assertEquals("created?", true, Orders_create_out[0].getCreated()); } /** * Update a Order and check if the update was successful */ public void testUpdate() { TUpdate_Return[] Orders_update_out = orderService.update(new TUpdate_Input[] { Order_up }); assertEquals("update result set", 1, Orders_update_out.length); assertEquals("updated?", true, Orders_update_out[0].getUpdated()); } /** * Retrieve information about an Order. Check if the returned data are equal * to the data of create or update call * * @param isAlreadyUpdated * if true check against update data, else against create data */ public void testGetInfo(boolean isAlreadyUpdated) { TGetInfo_Return[] Orders_info_out = orderService.getInfo(Orders, OrderAttributes, AddressAttributes, ItemAttributes, null); assertEquals("exists result set", 1, Orders_info_out.length); TGetInfo_Return Order_info_out = Orders_info_out[0]; assertEquals("Alias", Alias, Order_info_out.getAlias()); assertThat(Order_info_out.getCustomer(), endsWith(Order_in.getCustomer())); TAddressNamed Address_out = Order_info_out.getBillingAddress(); assertEquals("EMail", Address_in.getEMail(), Address_out.getEMail()); if (isAlreadyUpdated) { // check updated order data assertEquals("InProcessOn", Order_up.getInProcessOn().getTime(), Order_info_out.getInProcessOn().getTime()); assertEquals("Comment", Order_up.getAttributes()[0].getValue(), Order_info_out.getAttributes()[0].getValue()); // check updated address assertEquals("FirstName", Address_up.getFirstName(), Address_out.getFirstName()); assertEquals("LastName", Address_up.getLastName(), Address_out.getLastName()); assertEquals("Street", Address_up.getStreet(), Address_out.getStreet()); assertEquals("Street2", Address_up.getStreet2(), Address_out.getStreet2()); } else { // check order data created without update assertEquals("ViewedOn", Order_in.getViewedOn().getTime(), Order_info_out.getViewedOn().getTime()); assertEquals("CreationDate", Order_in.getCreationDate().getTime(), Order_info_out.getCreationDate().getTime()); assertEquals("Comment", Order_in.getAttributes()[0].getValue(), Order_info_out.getAttributes()[0].getValue()); // check created address assertEquals("FirstName", Address_in.getFirstName(), Address_out.getFirstName()); assertEquals("LastName", Address_in.getLastName(), Address_out.getLastName()); assertEquals("Street", Address_in.getStreet(), Address_out.getStreet()); assertEquals("Street2", Address_in.getStreet2(), Address_out.getStreet2()); } assertEquals("TaxArea", Order_in.getLineItemContainer().getTaxArea(), Order_info_out.getLineItemContainer().getTaxArea()); assertEquals("TaxModel", Order_in.getLineItemContainer().getTaxModel(), Order_info_out.getLineItemContainer().getTaxModel()); assertEquals("CurrencyID", Order_in.getLineItemContainer().getCurrencyID(), Order_info_out.getLineItemContainer().getCurrencyID()); } /** * Delete a Order and check if no error occured. */ public void testDelete() { TDelete_Return[] Orders_delete_out = orderService.delete(new String[] { OrderPath }); assertEquals("delete result set", 1, Orders_delete_out.length); } /** * test exists method * * @param expected * if false, test is successful if the Order does NOT exists */ public void testExists(boolean expected) { TExists_Return[] Orders_exists_out = orderService.exists(new String[] { OrderPath }); assertEquals("exists result set", 1, Orders_exists_out.length); assertEquals("exists?", expected, Orders_exists_out[0].getExists()); } /** * Test if a Order is found by Alias */ public void testFind() { TFind_Input searchParameters = new TFind_Input(); searchParameters.setAlias(Alias); searchParameters.setIsViewed(true); String[] Orders_find_out = orderService.find(searchParameters); assertEquals("find result set", 1, Orders_find_out.length); assertThat(Orders_find_out[0], endsWith(OrderPath)); } /** * runs all tests */ @Test public void testAll() { testCreate(); testExists(true); testFind(); testGetInfo(false); testUpdate(); testGetInfo(true); testDelete(); testExists(false); } }