package de.epages.ws.crossselling;
import static de.epages.ws.common.AssertNoError.assertNoError;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertTrue;
import java.math.BigInteger;
import org.junit.Before;
import org.junit.Test;
import de.epages.ws.ShopWebServiceTestConfiguration;
import de.epages.ws.crossselling.model.TDeleteCrossSelling_Input;
import de.epages.ws.crossselling.model.TDeleteCrossSelling_Return;
import de.epages.ws.crossselling.model.TExistsCrossSelling_Input;
import de.epages.ws.crossselling.model.TExistsCrossSelling_Return;
import de.epages.ws.crossselling.model.TGetCrossSelling_Input;
import de.epages.ws.crossselling.model.TGetCrossSelling_Return;
import de.epages.ws.crossselling.model.TInsertCrossSelling_Input;
import de.epages.ws.crossselling.model.TInsertCrossSelling_Return;
public class CrossSellingServiceTest {
private static final CrossSellingServiceClientImpl crossSellingService = new CrossSellingServiceClientImpl(
new ShopWebServiceTestConfiguration());
private final String product = "Products/de_3203104010";
private final String target_product = "Products/de_3206199010";
/**
* Sets all the required prerequisites for the tests. Will be called before
* the test are run.
*/
@Before
public void setUp() {
// remove all assigned cross selling products
TDeleteCrossSelling_Input CrossSelling_in = new TDeleteCrossSelling_Input();
CrossSelling_in.setProduct(product);
CrossSelling_in.setTargetProduct("*");
CrossSelling_in.setType("CrossSelling");
TDeleteCrossSelling_Input[] CrossSellings = new TDeleteCrossSelling_Input[] { CrossSelling_in };
TDeleteCrossSelling_Return[] CrossSellings_out = crossSellingService.delete(CrossSellings);
for (TDeleteCrossSelling_Return result : CrossSellings_out) {
assertNoError(result.getError());
}
CrossSelling_in = new TDeleteCrossSelling_Input();
CrossSelling_in.setProduct(product);
CrossSelling_in.setTargetProduct("*");
CrossSelling_in.setType("Accessory");
CrossSellings = new TDeleteCrossSelling_Input[] { CrossSelling_in };
CrossSellings_out = crossSellingService.delete(CrossSellings);
for (TDeleteCrossSelling_Return result : CrossSellings_out) {
assertNoError(result.getError());
}
CrossSelling_in = new TDeleteCrossSelling_Input();
CrossSelling_in.setProduct(product);
CrossSelling_in.setTargetProduct("*");
CrossSelling_in.setType("ProductComparison");
CrossSellings = new TDeleteCrossSelling_Input[] { CrossSelling_in };
CrossSellings_out = crossSellingService.delete(CrossSellings);
for (TDeleteCrossSelling_Return result : CrossSellings_out) {
assertNoError(result.getError());
}
}
/**
* insert a cross selling and check if the creation was successful
*/
public void testInsert() {
// insert a CrossSelling, a ProductComparison and an Accessory product
TInsertCrossSelling_Input crossSelling = new TInsertCrossSelling_Input();
crossSelling.setProduct(product);
crossSelling.setTargetProduct(target_product);
crossSelling.setType("CrossSelling");
crossSelling.setPosition(new BigInteger("10"));
TInsertCrossSelling_Input productComparison = new TInsertCrossSelling_Input();
productComparison.setProduct(product);
productComparison.setTargetProduct(target_product);
productComparison.setType("ProductComparison");
productComparison.setPosition(new BigInteger("10"));
TInsertCrossSelling_Input accessory = new TInsertCrossSelling_Input();
accessory.setProduct(product);
accessory.setTargetProduct(target_product);
accessory.setType("Accessory");
accessory.setPosition(new BigInteger("10"));
TInsertCrossSelling_Input[] CrossSellings = new TInsertCrossSelling_Input[] { crossSelling, productComparison, accessory, };
TInsertCrossSelling_Return[] CrossSellings_out = crossSellingService.insert(CrossSellings);
// test if creation was successful
TInsertCrossSelling_Return CrossSelling_out = CrossSellings_out[0];
assertEquals("insert result count", 3, CrossSellings_out.length);
assertNoError(CrossSelling_out.getError());
assertNoError("insert: no error", CrossSelling_out.getError());
assertTrue("assigned?", CrossSelling_out.getInserted());
assertEquals("Product path", product, CrossSelling_out.getProduct());
assertEquals("CrossSelling type", "CrossSelling", CrossSelling_out.getType());
}
/**
* delete a cross selling and check if the deletion was successful
*/
public void testDelete() {
TDeleteCrossSelling_Input crossSelling = new TDeleteCrossSelling_Input();
crossSelling.setProduct(product);
crossSelling.setTargetProduct(target_product);
crossSelling.setType("CrossSelling");
TDeleteCrossSelling_Input productComparison = new TDeleteCrossSelling_Input();
productComparison.setProduct(product);
productComparison.setTargetProduct(target_product);
productComparison.setType("ProductComparison");
TDeleteCrossSelling_Input accessory = new TDeleteCrossSelling_Input();
accessory.setProduct(product);
accessory.setTargetProduct(target_product);
accessory.setType("Accessory");
TDeleteCrossSelling_Input[] CrossSellings = new TDeleteCrossSelling_Input[] { crossSelling, productComparison, accessory, };
TDeleteCrossSelling_Return[] CrossSellings_out = crossSellingService.delete(CrossSellings);
// test if deletion was successful
assertEquals("delete result count", 3, CrossSellings_out.length);
TDeleteCrossSelling_Return CrossSelling_out = CrossSellings_out[0];
assertNoError(CrossSelling_out.getError());
assertNoError("delete: no error", CrossSelling_out.getError());
assertEquals("Product path", product, CrossSelling_out.getProduct());
assertTrue("deleted?", CrossSelling_out.getDeleted());
}
/**
* test exists method
*
* @param expected
* if false, test is successful if the CrossSelling does NOT
* exists
*/
public void testExists(boolean expected) {
// all cross selling types (Type=null)
TExistsCrossSelling_Input CrossSelling_in = new TExistsCrossSelling_Input();
CrossSelling_in.setProduct(product);
CrossSelling_in.setTargetProduct(target_product);
TExistsCrossSelling_Input[] CrossSellings = new TExistsCrossSelling_Input[] { CrossSelling_in };
TExistsCrossSelling_Return[] CrossSellings_out = crossSellingService.exists(CrossSellings);
// test if exists check was successful
assertEquals("exists result count (only CrossSelling)", 1, CrossSellings_out.length);
TExistsCrossSelling_Return CrossSelling_out = CrossSellings_out[0];
assertNoError(CrossSelling_out.getError());
assertNoError("exists: no error", CrossSelling_out.getError());
assertEquals("Product path", product, CrossSelling_out.getProduct());
assertEquals("Target product", target_product, CrossSelling_out.getTargetProduct());
assertEquals("exists?", expected, CrossSelling_out.getExists());
// only Accessories
CrossSelling_in = new TExistsCrossSelling_Input();
CrossSelling_in.setProduct(product);
CrossSelling_in.setTargetProduct(target_product);
CrossSelling_in.setType("Accessory");
CrossSellings = new TExistsCrossSelling_Input[] { CrossSelling_in };
CrossSellings_out = crossSellingService.exists(CrossSellings);
assertEquals("exists result count (only Accessories)", 1, CrossSellings_out.length);
assertNoError(CrossSelling_out.getError());
assertNoError("exists: no error", CrossSelling_out.getError());
assertEquals("Product path", product, CrossSelling_out.getProduct());
assertEquals("Target product", target_product, CrossSelling_out.getTargetProduct());
assertEquals("exists?", expected, CrossSelling_out.getExists());
}
/**
* test get method
*/
public void testGet() {
TGetCrossSelling_Input CrossSelling_in = new TGetCrossSelling_Input();
CrossSelling_in.setProduct(product);
CrossSelling_in.setType("CrossSelling");
TGetCrossSelling_Input[] CrossSellings = new TGetCrossSelling_Input[] { CrossSelling_in };
TGetCrossSelling_Return[] CrossSellings_out = crossSellingService.get(CrossSellings);
// test if exists check was successful
assertEquals("get result count", 1, CrossSellings_out.length);
TGetCrossSelling_Return CrossSelling_out = CrossSellings_out[0];
assertNoError(CrossSelling_out.getError());
assertNoError("get: no error", CrossSelling_out.getError());
assertEquals("Product path", product, CrossSelling_out.getProduct());
assertEquals("Target product path", target_product, CrossSelling_out.getTargetProduct());
assertEquals("Position", new BigInteger("10"), CrossSelling_out.getPosition());
assertEquals("Type", "CrossSelling", CrossSelling_out.getType());
// Type: ProductComparison
CrossSelling_in.setType("ProductComparison");
CrossSellings_out = crossSellingService.get(CrossSellings);
assertEquals("get result count", 1, CrossSellings_out.length);
CrossSelling_out = CrossSellings_out[0];
assertNoError(CrossSelling_out.getError());
assertNoError("get: no error", CrossSelling_out.getError());
assertEquals("Product path", product, CrossSelling_out.getProduct());
assertEquals("Target product path", target_product, CrossSelling_out.getTargetProduct());
assertEquals("Position", new BigInteger("10"), CrossSelling_out.getPosition());
assertEquals("Type", "ProductComparison", CrossSelling_out.getType());
}
/**
* runs all tests
*/
@Test
public void testAll() {
testInsert();
testExists(true);
testGet();
testDelete();
testExists(false);
}
}