package de.epages.ws.order2; 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.order2.model.TCreate_Input; import de.epages.ws.order2.model.TCreate_Return; import de.epages.ws.order2.model.TDelete_Return; import de.epages.ws.order2.model.TExists_Return; import de.epages.ws.order2.model.TGetInfo_Return; import de.epages.ws.order2.model.TLineItemContainerIn; import de.epages.ws.order2.model.TProductLineItemIn; import de.epages.ws.order2.model.TUpdate_Input; import de.epages.ws.order2.model.TUpdate_Return; import de.epages.ws.order2.stub.TFind_Input; import de.epages.ws.shop2.model.TAddress; /** * A JUnit TestSuite to test epages Order WebServices. */ public class OrderServiceTest { private static final OrderServiceClientImpl serviceClient = new OrderServiceClientImpl(new ShopWebServiceTestConfiguration()); private final TCreate_Input Order_in = new TCreate_Input(); private final TUpdate_Input Order_update = new TUpdate_Input(); String path = "Customers/1001/Orders/"; String alias = "java_test-1"; /** * Sets all the required prerequisites for the tests. Will be called before * the test are run. */ @Before public void setUp() { // create test Orders that can be used with the create and update // methods Order_in.setAlias(alias); Order_in.setCreationDate(new GregorianCalendar(2006, 0, 1, 11, 11)); Order_in.setCustomer("Customers/1001"); TProductLineItemIn productLineItem = new TProductLineItemIn("Products/ho_1112105010", (float) 10); 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[] { productLineItem }); Order_in.setLineItemContainer(lineItemContainer); Order_in.setViewedOn(new GregorianCalendar(2006, 0, 2, 12, 00)); TAddress bill = new TAddress(); bill.setFirstName("Klaus"); bill.setLastName("Klaussen"); bill.setStreet("Musterstraße 2"); bill.setStreet2("Ortsteil Niederfingeln"); bill.setEMail("java_test-1@epages.de"); bill.setBirthday(new GregorianCalendar(1976, 9, 25, 11, 33)); Order_in.setBillingAddress(bill); TAttribute attr1 = new TAttribute(); attr1.setName("Comment"); attr1.setValue("my Order comment"); Order_in.setAttributes(new TAttribute[] { attr1 }); Order_update.setPath(path + alias); Order_update.setCreationDate(new GregorianCalendar(2008, 0, 1, 11, 33)); Order_update.setViewedOn(new GregorianCalendar(2008, 0, 2, 12, 30)); TAddress bill_update = new TAddress(); bill_update.setFirstName("Hans"); bill_update.setLastName("Hanssen"); bill_update.setStreet("Musterstraße 2b"); bill_update.setStreet2("Ortsteil Oberfingeln"); Order_update.setBillingAddress(bill_update); TAttribute attr_update = new TAttribute(); attr_update.setName("Comment"); attr_update.setValue("my updated Order comment"); Order_update.setAttributes(new TAttribute[] { attr_update }); // delete the test order if it exists TExists_Return[] Orders_exists_out = serviceClient.exists(new String[] { path + alias }); if (Orders_exists_out[0].getExists()) { serviceClient.delete(new String[] { path + alias }); } } /** * Create a Order and check if the creation was successful */ public void testCreate() { TCreate_Input[] Orders_create_in = { Order_in }; TCreate_Return[] Orders_create_out = serviceClient.create(Orders_create_in); // test if creation was successful 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_Input[] Orders_update_in = { Order_update }; TUpdate_Return[] Orders_update_out = serviceClient.update(Orders_update_in); // test if update was successful 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 = serviceClient.getInfo(new String[] { path + alias }, new String[] { "Comment" }); // test if getinfo was successful and if all data are equal to input assertEquals("getinfo result set", 1, Orders_info_out.length); TGetInfo_Return Order_info_out = Orders_info_out[0]; assertEquals("alias", alias, Order_info_out.getAlias()); if (isAlreadyUpdated) { assertEquals("FirstName", Order_update.getBillingAddress().getFirstName(), Order_info_out.getBillingAddress().getFirstName()); assertEquals("LastName", Order_update.getBillingAddress().getLastName(), Order_info_out.getBillingAddress().getLastName()); assertEquals("Street", Order_update.getBillingAddress().getStreet(), Order_info_out.getBillingAddress().getStreet()); assertEquals("Street2", Order_update.getBillingAddress().getStreet2(), Order_info_out.getBillingAddress().getStreet2()); assertEquals("Comment", Order_update.getAttributes()[0].getValue(), Order_info_out.getAttributes()[0].getValue()); assertEquals("ViewedOn", Order_update.getViewedOn().getTime(), Order_info_out.getViewedOn().getTime()); assertEquals("CreationDate", Order_update.getCreationDate().getTime(), Order_info_out.getCreationDate().getTime()); } else { assertEquals("FirstName", Order_in.getBillingAddress().getFirstName(), Order_info_out.getBillingAddress().getFirstName()); assertEquals("LastName", Order_in.getBillingAddress().getLastName(), Order_info_out.getBillingAddress().getLastName()); assertEquals("Street", Order_in.getBillingAddress().getStreet(), Order_info_out.getBillingAddress().getStreet()); assertEquals("Street2", Order_in.getBillingAddress().getStreet2(), Order_info_out.getBillingAddress().getStreet2()); assertEquals("Comment", Order_in.getAttributes()[0].getValue(), Order_info_out.getAttributes()[0].getValue()); assertEquals("ViewedOn", Order_in.getViewedOn().getTime(), Order_info_out.getViewedOn().getTime()); assertEquals("CreationDate", Order_in.getCreationDate().getTime(), Order_info_out.getCreationDate().getTime()); } assertThat(Order_info_out.getCustomer(), endsWith(Order_in.getCustomer())); 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 = serviceClient.delete(new String[] { path + alias }); // test if deletion was successful assertEquals("delete result set", 1, Orders_delete_out.length); assertEquals("deleted?", true, Orders_delete_out[0].getDeleted()); } /** * Test if a Order exists or not * * @param expected * if false the Test will be successful if the Order does NOT * exist */ public void testExists(boolean expected) { TExists_Return[] Orders_exists_out = serviceClient.exists(new String[] { path + alias }); // test if exists check was successful assertEquals("exists result set", 1, Orders_exists_out.length); assertEquals("exists?", expected, Orders_exists_out[0].getExists()); } /** * Test if a Order is found by EMail */ public void testFind() { TFind_Input parameters = new TFind_Input(); parameters.setAlias(alias); parameters.setIsViewed(true); String[] Orders_find_out = serviceClient.find(parameters); // test if find was successful assertEquals("find result set", 1, Orders_find_out.length); assertThat(Orders_find_out[0], endsWith(path + alias)); } /** * Runs all tests: * <ol> * <li>create a Order</li> * <li>test if this Order exists afterwards</li> * <li>test if Order is found by search</li> * <li>retrieve info about this Order, and check if the data equals to the * input data of create</li> * <li>updates the Order</li> * <li>again retrieve data, and check if the data are equal to the update * input data</li> * <li>delete the Order</li> * <li>check if the Order still exists</li> * </ol> */ @Test public void testAll() { testCreate(); testExists(true); testFind(); testGetInfo(false); testUpdate(); testGetInfo(true); testDelete(); testExists(false); } }