/** Sets all the required prerequisites for the tests. Will be called before the test are run. */
  @Before
  public void setUp() {
    Basket_in = new TCreate_Input();
    Basket_up = new TUpdate_Input();
    BasketAttr_in = new TAttribute("IsAddressOK", "1", null, null);
    BasketAttr_up = new TAttribute("IsAddressOK", "0", null, null);
    Address_in = new TAddressNamed();

    // init input address data
    Address_in.setEMail("*****@*****.**");
    Address_in.setFirstName("Klaus");
    Address_in.setLastName("Klaussen");
    Address_in.setCity("Klausdorf");
    Address_in.setZipcode("08151");
    Address_in.setCountryID(BigInteger.valueOf(276));
    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 = Address_in;
    // just update some fields
    Address_up.setFirstName("Hans");
    Address_up.setLastName("Hanssen");
    Address_up.setStreet("Musterstraße 2b");
    Address_up.setStreet2("Ortsteil Oberfingeln");

    Basket_in.setBillingAddress(Address_in);

    Basket_in.setAttributes(new TAttribute[] {BasketAttr_in});
    TLineItemContainerIn lineItemContainer = new TLineItemContainerIn();
    lineItemContainer.setCurrencyID("EUR");
    lineItemContainer.setPaymentMethod("PaymentMethods/Invoice");
    lineItemContainer.setShippingMethod("ShippingMethods/Express");
    lineItemContainer.setTaxArea("/TaxMatrixGermany/EU");
    lineItemContainer.setTaxModel("gross");
    String productGuid =
        productService.getInfo(new String[] {"Products/ho_1112105010"}, new String[] {"GUID"})[0]
            .getAttributes()[0].getValue();
    assertNotNull(productGuid);
    lineItemContainer.setProductLineItems(
        new TProductLineItemIn[] {new TProductLineItemIn(productGuid, (float) 10)});
    Basket_in.setLineItemContainer(lineItemContainer);

    // init order update data
    Basket_up.setBillingAddress(Address_up);
    Basket_up.setAttributes(new TAttribute[] {BasketAttr_up});

    // delete the test order if it exists
    TExists_Return[] Baskets_exists_out = basketService.exists(new String[] {BasketPath});
    if (Baskets_exists_out[0].getExists()) {
      TDelete_Return[] Baskets_delete_out = basketService.delete(new String[] {BasketPath});
      assertNoError(Baskets_delete_out[0].getError());
    }
  }
 public void testUpdateLineItem() {
   TGetInfo_Return[] Baskets_info_out =
       basketService.getInfo(Baskets, BasketAttributes, AddressAttributes, ItemAttributes, null);
   assertNoError(Baskets_info_out[0].getError());
   String lineitemAlias =
       Baskets_info_out[0].getLineItemContainer().getProductLineItems()[0].getAlias();
   TUpdateLineItem_Input lineItem = new TUpdateLineItem_Input(lineitemAlias, 20f);
   TUpdateLineItem_Return[] updateLineItem =
       basketService.updateLineItem(BasketPath, new TUpdateLineItem_Input[] {lineItem});
   assertEquals("updateLineItem resultset", updateLineItem.length, 1);
   assertNoError(updateLineItem[0].getError());
   assertTrue("updated?", updateLineItem[0].getUpdated());
 }
 /** Update a Basket and check if the update was successful */
 public void testUpdate() {
   Basket_up.setPath(BasketPath);
   TUpdate_Return[] Baskets_update_out = basketService.update(new TUpdate_Input[] {Basket_up});
   assertNoError(Baskets_update_out[0].getError());
   assertNull("No FormErrors", Baskets_update_out[0].getFormErrors());
   assertTrue("updated?", Baskets_update_out[0].getUpdated());
 }
 /** Create a Basket without passing optional fields, and check if the creation was successful */
 public void testCreateWithDefaults() {
   TCreate_Input basket_in = new TCreate_Input();
   TCreate_Return[] Baskets_create_out = basketService.create(new TCreate_Input[] {basket_in});
   assertNoError(Baskets_create_out[0].getError());
   assertNull("No FormErrors", Baskets_create_out[0].getFormErrors());
   assertEquals("created?", true, Baskets_create_out[0].getCreated());
   assertNotNull("Path not null", Baskets_create_out[0].getPath());
 }
 /**
  * test exists method
  *
  * @param expected if false, test is successful if the Order does NOT exists
  */
 public void testExists(boolean expected) {
   TExists_Return[] Baskets_exists_out = basketService.exists(new String[] {BasketPath});
   assertNoError(Baskets_exists_out[0].getError());
   assertEquals("exists?", expected, Baskets_exists_out[0].getExists());
 }
 /** Delete a Basket and check if no error occured. */
 public void testDelete() {
   TDelete_Return[] Basket_delete_out = basketService.delete(new String[] {BasketPath});
   assertNoError(Basket_delete_out[0].getError());
 }
  /**
   * 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) {
    Baskets = new String[] {BasketPath};
    TGetInfo_Return[] Baskets_info_out =
        basketService.getInfo(Baskets, BasketAttributes, AddressAttributes, ItemAttributes, null);
    assertEquals("exists result set", 1, Baskets_info_out.length);

    TGetInfo_Return Basket_info_out = Baskets_info_out[0];
    assertNoError(Basket_info_out.getError());
    assertNotNull(Basket_info_out.getAlias());

    TAddressNamed Address_out = Basket_info_out.getBillingAddress();
    assertEquals("EMail", Address_in.getEMail(), Address_out.getEMail());
    TProductLineItemOut productLineItem =
        Basket_info_out.getLineItemContainer().getProductLineItems()[0];
    assertEquals("/Units/piece", productLineItem.getOrderUnit());

    if (isAlreadyUpdated) {
      // check updated order data
      assertEquals(
          "IsAcceptCreditCheckOK",
          Basket_up.getAttributes()[0].getValue(),
          Basket_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());
      assertEquals("Quantity", 20f, productLineItem.getQuantity(), 0.0);
    } else {
      // check order data created without update
      assertEquals(
          "IsAcceptCreditCheckOK",
          Basket_in.getAttributes()[0].getValue(),
          Basket_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("Quantity", 10f, productLineItem.getQuantity(), 0.0);
    }

    assertEquals(
        "TaxArea",
        Basket_in.getLineItemContainer().getTaxArea(),
        Basket_info_out.getLineItemContainer().getTaxArea());
    assertEquals(
        "TaxModel",
        Basket_in.getLineItemContainer().getTaxModel(),
        Basket_info_out.getLineItemContainer().getTaxModel());
    assertEquals(
        "CurrencyID",
        Basket_in.getLineItemContainer().getCurrencyID(),
        Basket_info_out.getLineItemContainer().getCurrencyID());
    // "IsAddressOK", "WebUrl", "PickupToken"
    assertNotNull("IsAddressOK", Basket_info_out.getAttributes()[0].getValue());
    assertNotNull("WebUrl", Basket_info_out.getAttributes()[1].getValue());
    assertNotNull("PickupToken", Basket_info_out.getAttributes()[2].getValue());

    assertNotNull("Alias", productLineItem.getAlias());
    assertNotNull("Name", productLineItem.getName());
    assertNotNull("Product", productLineItem.getProduct());
    assertNotNull("TaxClass", productLineItem.getTaxClass());
    assertTrue("BasePrice", productLineItem.getBasePrice() > 0);
    assertTrue("LineItemPrice", productLineItem.getLineItemPrice() > 0);
    assertEquals("SKU", "ho_1112105010", productLineItem.getSKU());
  }
 /** Update a Basket with a billing address and check if the update was successful */
 public void testUpdateWithFormError() {
   Basket_up.setPath(BasketPath);
   TUpdate_Return[] Baskets_update_out = basketService.update(new TUpdate_Input[] {Basket_up});
   Baskets_update_out[0].setFormErrors(new TFormError[] {new TFormError()});
   assertEquals("updateWithFormError resultset", Baskets_update_out[0].getFormErrors().length, 1);
 }