package de.epages.ws.pricelistassignment; import static de.epages.ws.common.AssertNoError.assertNoError; import static org.hamcrest.core.StringEndsWith.endsWith; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertThat; import static org.junit.Assert.assertTrue; import org.junit.Before; import org.junit.Test; import de.epages.ws.ShopWebServiceTestConfiguration; import de.epages.ws.pricelistassignment.model.TGetQuantityDiscounts_Return; import de.epages.ws.pricelistassignment.model.TGetScalePrices_Return; import de.epages.ws.pricelistassignment.model.TGetValueDiscounts_Return; import de.epages.ws.pricelistassignment.model.TPriceListQuantityDiscount; import de.epages.ws.pricelistassignment.model.TPriceListScalePrice; import de.epages.ws.pricelistassignment.model.TPriceListValueDiscount; import de.epages.ws.pricelistassignment.model.TQuantityDiscount; import de.epages.ws.pricelistassignment.model.TScalePrice; import de.epages.ws.pricelistassignment.model.TSetQuantityDiscounts_Input; import de.epages.ws.pricelistassignment.model.TSetQuantityDiscounts_Return; import de.epages.ws.pricelistassignment.model.TSetScalePrices_Input; import de.epages.ws.pricelistassignment.model.TSetScalePrices_Return; import de.epages.ws.pricelistassignment.model.TSetValueDiscounts_Input; import de.epages.ws.pricelistassignment.model.TSetValueDiscounts_Return; import de.epages.ws.pricelistassignment.model.TValueDiscount; public class PriceListAssignmentServiceTest { private static final PriceListAssignmentServiceClientImpl serviceClient = new PriceListAssignmentServiceClientImpl( new ShopWebServiceTestConfiguration()); private final String product = "Products/ho_1112105010"; private final String pricelist = "PriceLists/RegularCustomer_EUR"; private TQuantityDiscount[] quantityDiscounts; private TValueDiscount[] valueDiscounts; private TScalePrice[] scalePrices; /** * Sets all the required prerequisites for the tests. Will be called before * the test are run. */ @Before public void setUp() { // create test PriceListAssignments that can be used with the create and // update methods quantityDiscounts = new TQuantityDiscount[] { new TQuantityDiscount(100, 10), new TQuantityDiscount(200, 20), }; valueDiscounts = new TValueDiscount[] { new TValueDiscount(100, 10), new TValueDiscount(200, 20), }; scalePrices = new TScalePrice[] { new TScalePrice(10, 100), new TScalePrice(20, 200), }; } /** * set up a QuantityDiscount */ public void testSetQuantityDiscount() { TSetQuantityDiscounts_Input[] PriceListAssignments_in = { new TSetQuantityDiscounts_Input(product, pricelist, quantityDiscounts) }; TSetQuantityDiscounts_Return[] PriceListAssignments_out = serviceClient.setQuantityDiscounts(PriceListAssignments_in); // test if creation was successful assertEquals("create result set", 1, PriceListAssignments_out.length); assertTrue(PriceListAssignments_out[0].getUpdated()); } /** * Get info for a QuantityDiscount */ public void testGetQuantityDiscount() { TGetQuantityDiscounts_Return[] PriceListAssignments_out = serviceClient.getQuantityDiscounts(new String[] { product }, new String[] { pricelist }); assertEquals("product result set", 1, PriceListAssignments_out.length); assertThat(PriceListAssignments_out[0].getProduct(), endsWith(product)); TPriceListQuantityDiscount[] priceLists = PriceListAssignments_out[0].getPriceLists(); assertEquals("pricelist result set", 1, priceLists.length); assertThat(priceLists[0].getPriceList(), endsWith(pricelist)); assertEquals("quantityDiscounts Quantity", quantityDiscounts[0].getQuantity(), priceLists[0].getQuantityDiscounts()[0].getQuantity(), 0.0f); assertEquals("quantityDiscounts Discount", quantityDiscounts[0].getDiscount(), priceLists[0].getQuantityDiscounts()[0].getDiscount(), 0.0f); assertEquals("quantityDiscounts Quantity", quantityDiscounts[1].getQuantity(), priceLists[0].getQuantityDiscounts()[1].getQuantity(), 0.0f); assertEquals("quantityDiscounts Discount", quantityDiscounts[1].getDiscount(), priceLists[0].getQuantityDiscounts()[1].getDiscount(), 0.0f); } /** * set up a ValueDiscount */ public void testSetValueDiscounts() { TSetValueDiscounts_Input[] PriceListAssignments_in = { new TSetValueDiscounts_Input(product, pricelist, valueDiscounts) }; TSetValueDiscounts_Return[] PriceListAssignments_out = serviceClient.setValueDiscounts(PriceListAssignments_in); // test if creation was successful assertEquals("create result set", 1, PriceListAssignments_out.length); assertTrue(PriceListAssignments_out[0].getUpdated()); } /** * Get info for a ValueDiscount */ public void testGetValueDiscount() { TGetValueDiscounts_Return[] PriceListAssignments_out = serviceClient.getValueDiscounts(new String[] { product }, new String[] { pricelist }); assertEquals("product result set", 1, PriceListAssignments_out.length); assertThat(PriceListAssignments_out[0].getProduct(), endsWith(product)); TPriceListValueDiscount[] priceLists = PriceListAssignments_out[0].getPriceLists(); assertEquals("pricelist result set", 1, priceLists.length); assertThat(priceLists[0].getPriceList(), endsWith(pricelist)); assertEquals("valueDiscounts Value", valueDiscounts[0].getValue(), priceLists[0].getValueDiscounts()[0].getValue(), 0.0f); assertEquals("valueDiscounts Discount", valueDiscounts[0].getDiscount(), priceLists[0].getValueDiscounts()[0].getDiscount(), 0.0f); assertEquals("valueDiscounts Value", valueDiscounts[1].getValue(), priceLists[0].getValueDiscounts()[1].getValue(), 0.0f); assertEquals("valueDiscounts Discount", valueDiscounts[1].getDiscount(), priceLists[0].getValueDiscounts()[1].getDiscount(), 0.0f); } /** * set up a ValueDiscount */ public void testSetScalePrices() { TSetScalePrices_Input[] PriceListAssignments_in = { new TSetScalePrices_Input(product, pricelist, scalePrices) }; TSetScalePrices_Return[] PriceListAssignments_out = serviceClient.setScalePrices(PriceListAssignments_in); // test if creation was successful assertEquals("create result set", 1, PriceListAssignments_out.length); assertNoError(PriceListAssignments_out[0].getError()); assertTrue(PriceListAssignments_out[0].getUpdated()); } /** * Get info for a ValueDiscount */ public void testGetScalePrices() { TGetScalePrices_Return[] PriceListAssignments_out = serviceClient.getScalePrices(new String[] { product }, new String[] { pricelist }); assertEquals("product result set", 1, PriceListAssignments_out.length); assertThat(PriceListAssignments_out[0].getProduct(), endsWith(product)); TPriceListScalePrice[] priceLists = PriceListAssignments_out[0].getPriceLists(); assertEquals("pricelist result set", 1, priceLists.length); assertThat(priceLists[0].getPriceList(), endsWith(pricelist)); assertEquals("scalePrices Quantity", scalePrices[0].getQuantity(), priceLists[0].getScalePrices()[0].getQuantity(), 0.0f); assertEquals("scalePrices Price", scalePrices[0].getPrice(), priceLists[0].getScalePrices()[0].getPrice(), 0.0f); assertEquals("scalePrices Quantity", scalePrices[1].getQuantity(), priceLists[0].getScalePrices()[1].getQuantity(), 0.0f); assertEquals("scalePrices price", scalePrices[1].getPrice(), priceLists[0].getScalePrices()[1].getPrice(), 0.0f); } /** * Runs all tests: * <ol> * <li>creates a quantity discount</li> * <li>verifies the quantity discount</li> * <li>creates a value discount</li> * <li>verifies the value discount</li> * <li>creates a scale price</li> * <li>verifies a scale price</li> * </ol> */ @Test public void testAll() { testSetQuantityDiscount(); testGetQuantityDiscount(); testSetValueDiscounts(); testGetValueDiscount(); testSetScalePrices(); testGetScalePrices(); } }