DeliveryTest.java :  » ERP-CRM-Financial » OpenXava-3.0 » org » openxava » test » tests » Java Open Source

Java Open Source » ERP CRM Financial » OpenXava 3.0 
OpenXava 3.0 » org » openxava » test » tests » DeliveryTest.java
package org.openxava.test.tests;

import java.text.*;
import java.util.*;

import javax.persistence.*;

import org.openxava.jpa.*;
import org.openxava.test.model.*;
import org.openxava.tests.*;
import org.openxava.util.*;

/**
 * @author Javier Paniza
 */

public class DeliveryTest extends ModuleTestBase {
  
  private String [] listActions = {
    "Print.generatePdf",
    "Print.generateExcel",
    "CRUD.new",
    "CRUD.deleteSelected",
    "Remarks.hideRemarks",
    "Mode.detailAndFirst",
    "List.filter",
    "List.customize",
    "List.orderBy",
    "List.viewDetail",
    "List.hideRows"
  };
    
  public DeliveryTest(String testName) {
    super(testName, "Delivery");    
  }
  
  public void testMinimunInCollection_overrideCollectionActions() throws Exception {
    // minimunCollection
    execute("CRUD.new");
    setValue("invoice.year", "2004");
    setValue("invoice.number", "2");
    setValue("type.number", "1");
    setValue("number", "666");
    execute("CRUD.search");
    assertNoErrors();
    assertValue("description", "DELIVERY JUNIT 666");
    
    execute("Sections.change", "activeSection=2");
    assertCollectionRowCount("details", 3);
    
    execute("DeliveryDetail.new", "viewObject=xava_view_section2_details_details");
    setValue("details.number", "14");
    setValue("details.description", "JUNIT DETAIL 14");
    execute("DeliveryDetail.save", "viewObject=xava_view_section2_details_details");
    
    assertError("More than 3 items in Details of Delivery are not allowed");
    assertCollectionRowCount("details", 3);
    
    execute("DeliveryDetail.hideDetail", "viewObject=xava_view_section2_details_details");
    checkRowCollection("details", 2);
    execute("DeliveryDetail.removeSelected", "viewObject=xava_view_section2_details_details");
    assertNoErrors();
    assertMessage("DeliveryDetail deleted from database");
    assertMessage("Delivery detail 13 deleted successfully"); // This message is by the override action for removeSelected    
    assertCollectionRowCount("details", 2);
    
    execute("DeliveryDetail.new", "viewObject=xava_view_section2_details_details");
    setValue("details.number", "13");
    setValue("details.description", "DETAIL 13");
    execute("DeliveryDetail.save", "viewObject=xava_view_section2_details_details");
    assertNoErrors();
    assertMessage("The action Save for delivery detail executed");
    assertCollectionRowCount("details", 3);
    
    execute("Collection.edit", "row=2,viewObject=xava_view_section2_details_details");
    execute("DeliveryDetail.save", "viewObject=xava_view_section2_details_details");
    assertNoErrors();
    
    // checkboxNotInCollectionWhenNotEditable, this test only work in a HTML UI
    /* Since v2.1.4 the check box is always present in all collections (because is implemented uses a Tab)
    assertTrue("Check box must be present", getHtml().indexOf("xava.Delivery.details.__SELECTED__") >= 0);
    execute("EditableOnOff.setOff");
    assertTrue("Check box must not be present", getHtml().indexOf("xava.Delivery.details.__SELECTED__") < 0);
    */
  }
  
  public void testFocusWhenSectionsAndGroupsInHeader() throws Exception {
    execute("CRUD.new");
    assertFocusOn("invoice.year");
    setValue("shortcut", "DY");
    assertValue("remarks", "Delayed");
    assertFocusOn("remarks");
  }
  
  public void testNonExistentReferenceUsedAsKey() throws Exception {
    createDeliveryType(0, "JUNIT DELIVERY TYPE 0");
    execute("CRUD.new");
    setValue("invoice.year", "2002");
    setValue("invoice.number", "1");
    assertValue("invoice.date", "1/1/02");            
    setValue("type.number", "0");
    setValue("number", "66");
    setValue("description", "JUNIT");    
    execute("CRUD.save");
    assertNoErrors();
    
    setValue("invoice.year", "2002");
    setValue("invoice.number", "1");              
    setValue("type.number", "0");
    setValue("number", "66");
    execute("CRUD.search");
    assertNoErrors();
    assertValue("description", "JUNIT");
    
    execute("CRUD.search");
    assertNoErrors();
    assertValue("description", "JUNIT");

    deleteDeliveryType(0);
    execute("CRUD.search");
    assertNoErrors();
    assertValue("description", "JUNIT");

    execute("CRUD.delete");
    assertMessage("Delivery deleted successfully");
  }

  private void createDeliveryType(int number, String description) {
    DeliveryType type = new DeliveryType();
    type.setNumber(number);
    type.setDescription(description);    
    XPersistence.getManager().persist(type);
    XPersistence.commit();
  }
  
  private void deleteDeliveryType(int number) {
    DeliveryType type = XPersistence.getManager().find(DeliveryType.class, number);        
    XPersistence.getManager().remove(type);
    XPersistence.commit();
  }
  
  public void testSearchingByAnyProperty() throws Exception {
    // One result
    execute("CRUD.new");
    assertValue("number", "");
    assertValue("description", "");
    setValue("description", "%SEARCHING");
    execute("CRUD.search");
    assertNoErrors();
    assertValue("number", "777");
    assertValue("description", "FOR TEST SEARCHING BY DESCRIPTION");
    
    // There are more than one match, returns the first
    execute("CRUD.new");
    assertValue("number", "");
    assertValue("description", "");
    setValue("driverType", "");
    setValue("description", "DEL");
    execute("CRUD.search");
    assertNoErrors();
    assertValue("description", "DELIVERY JUNIT 666");        
  }  
    
  public void testDateCalendarEditor() throws Exception {
    execute("CRUD.new");
    assertExists("invoice.date");
    assertNotExists("invoice.date_CALENDAR_BUTTON_");
    assertExists("date_CALENDAR_BUTTON_");    
  }
  
  public void testAggregateInCollectionWithVisibleKeyDoesNotTryToSearchOnChangeKey() throws Exception {
    execute("CRUD.new");
    execute("Sections.change", "activeSection=2");
    execute("DeliveryDetail.new", "viewObject=xava_view_section2_details_details");
    setValue("details.number", "66");
    assertNoErrors();
  }
  
  public void testOnChangeActionOnlyOnce() throws Exception {
    execute("CRUD.new");
    assertValue("driverType", "X");
  }
  
  public void testAggregateInCollectionWithNotHiddenKey() throws Exception {
    assertListNotEmpty();
    execute("Mode.detailAndFirst");
    execute("Sections.change", "activeSection=2");
    
    // The bucle is for choosing a delivery with less than 3 details
    while (getCollectionRowCount("details") >= 3) {
      execute("Navigation.next");
    }
    
    execute("DeliveryDetail.new", "viewObject=xava_view_section2_details_details");
    assertMessage("The action New for delivery detail executed");
    setValue("details.number", "66");
    setValue("details.description", "JUNIT DELIVERY DETAIL");
    execute("DeliveryDetail.save", "viewObject=xava_view_section2_details_details");
    assertMessage("The action Save for delivery detail executed");
    assertNoErrors();        
    
    execute("Collection.edit", "row=0,viewObject=xava_view_section2_details_details");
    assertValue("details.number", "66");
    execute("DeliveryDetail.hideDetail", "viewObject=xava_view_section2_details_details");
    assertMessage("The action Close for delivery detail executed");
    execute("Collection.edit", "row=0,viewObject=xava_view_section2_details_details");
    assertValue("details.number", "66");
    execute("DeliveryDetail.remove", "viewObject=xava_view_section2_details_details");
    assertMessage("The action Remove for delivery detail executed");
    assertNoErrors();
  }
  
  public void testReferenceAsDescriptionsListWithValidValuesInKey_validateViewPropertiesOnModify() throws Exception { 
    execute("Mode.detailAndFirst");
    assertValue("shipment.KEY", "");
    Shipment shipment = (Shipment) Shipment.findAll().iterator().next();
    setValue("shipment.KEY", toKeyString(shipment));
    execute("CRUD.save");
    assertError("Value for Advice in Delivery is required");
    setValue("advice", "Modifying");
    execute("CRUD.save");
    assertNoErrors();
    execute("Mode.list");
    execute("Mode.detailAndFirst");
    assertValue("shipment.KEY", toKeyString(shipment)); 
    assertDescriptionValue("shipment.KEY", shipment.getDescription());
    // Restoring    
    setValue("shipment.KEY", "");
    setValue("advice", "Restoring");
    execute("CRUD.save");
    assertNoErrors();
  }
  
  public void testWhenStereotypeWithoutFormatterUseTypeFormatter() throws Exception {
    // date: Without stereotype, use date formatter
    String date = getValueInList(0, "date");    
    // dataAsLabel: With stereotype, but it has no formatter,
    // hence it must to use date formatter    
    String dateAsLabel = getValueInList(0, "dateAsLabel");    
    assertEquals(date, dateAsLabel);
  }
  
  public void testSecondLevelCalculatedPropertyAndDependenOf3LevelPropertyInList() throws Exception {
    int c = getListRowCount();
    boolean withoutDiscount = false;
    boolean withDiscount = true;
    for (int i=0; i<c; i++) {
      String value = getValueInList(i, "invoice.sellerDiscount");      
      if ("0.00".equals(value)) withoutDiscount = true;
      else if ("20.00".equals(value)) withDiscount = true;
      else fail("Only 0.00 or 20.00 are valid values for invoice.sellerDiscount");
    }
    assertTrue("It's required deliveries with invoices with and without seller discount", withDiscount && withoutDiscount);
  }
    
  public void testUseListWithOtherModelAndReturnToModuleList() throws Exception {
    execute("CRUD.new");
    execute("Delivery.viewCurrentYearInvoices");
    assertNoErrors();
    execute("Return.return");
    assertNoErrors();
    execute("Mode.list");
  }
  
  public void testCreateObjectInvalidateDescriptionsCache() throws Exception {
    execute("CRUD.new");
    assertNoType("66");
    changeModule("DeliveryType");
    execute("CRUD.new");
    setValue("number", "66");
    setValue("description", "JUNIT TEST");
    execute("CRUD.save");
    assertNoErrors();
    changeModule("Delivery");
    assertType("66");
    changeModule("DeliveryType");
    setValue("number", "66");
    execute("CRUD.search");
    assertNoErrors();
    execute("CRUD.delete");    
    assertMessage("Delivery type deleted successfully");
    changeModule("Delivery");
    assertNoType("66");
  }
  

  public void testEntityValidatorWithKeyReference() throws Exception {    
    assertListNotEmpty();
    execute("Mode.detailAndFirst");
    assertNoErrors();
    setValue("advice", "Validating");
    execute("CRUD.save");
    assertNoErrors();
  }
  
  public void testReadHiddenValuesFromServer() throws Exception {         
    // Create one new
    execute("CRUD.new");
    setValue("invoice.year", "2002");
    setValue("invoice.number", "1");
    assertValue("invoice.date", "1/1/02");            
    setValue("type.number", "1");
    setValue("number", "66");
    setValue("description", "JUNIT");
    setValue("remarks", "HIDDEN REMARK");
    execute("CRUD.save");
    assertNoErrors();
    assertValue("invoice.year", "");
    assertValue("invoice.number", "");            
    assertValue("type.number", "");  
    assertValue("number", "");
    assertValue("description", "");
    assertValue("remarks", "No remarks");

    // Hide remarks    
    execute("Remarks.hideRemarks");
    assertNotExists("remarks");
    
    // Search the just created
    setValue("invoice.year", "2002");
    setValue("invoice.number", "1");            
    setValue("type.number", "1");    
    setValue("number", "66");        
    execute("CRUD.search");
    assertNoErrors();
    assertValue("invoice.year", "2002");
    assertValue("invoice.number", "1");        
    assertValue("invoice.date", "1/1/02");    
    assertValue("type.number", "1");
    assertValue("number", "66");    
    assertValue("description", "JUNIT");        
    assertNotExists("remarks");
    
    // Show remarks
    execute("Remarks.showRemarks");
    assertExists("remarks");
    assertValue("remarks", "HIDDEN REMARK");
                                
    // Delete it
    execute("CRUD.delete");                          
    assertNoErrors();
    assertMessage("Delivery deleted successfully");    
  }
  
  
  public void testNavigationActionCanReturnPreviousController() throws Exception {
    String [] initialActions = {
      "Navigation.previous",
      "Navigation.first",
      "Navigation.next",
      "CRUD.new",
      "CRUD.save",
      "CRUD.delete",
      "CRUD.search",            
      "Mode.list",
      "Reference.search",
      "Reference.createNew",
      "Reference.modify",
      "Sections.change",
      "Delivery.setDefaultInvoice",
      "Delivery.setDefaultType",
      "Delivery.generateNumber",
      "Delivery.activateDeactivateSection",
      "Delivery.hideActions",
      "Delivery.viewCurrentYearInvoices",
      "EditableOnOff.setOn",
      "EditableOnOff.setOff",
      "Remarks.hideRemarks",
      "Remarks.showRemarks",
      "Remarks.setRemarks"      
    };
    
    String [] minimumActions = {
      "CRUD.new",
      "CRUD.save",
      "CRUD.delete",
      "CRUD.search",            
      "Mode.list",
      "Reference.search",
      "Reference.createNew",
      "Reference.modify",
      "Sections.change",
      "Delivery.setDefaultInvoice",
      "Delivery.setDefaultType",      
      "Delivery.generateNumber"
    };
    
    String [] creatingNewActions = {
      "NewCreation.saveNew",
      "NewCreation.cancel"
    };
        
    execute("CRUD.new");
    assertActions(initialActions);
    
    execute("Delivery.hideActions");
    assertActions(minimumActions);
    
    execute("Reference.createNew", "model=DeliveryType,keyProperty=xava.Delivery.type.number");
    assertActions(creatingNewActions);
    
    execute("NewCreation.cancel");
    assertActions(minimumActions);  
  }
  
  public void testPropertyAndReferenceActions() throws Exception {
    execute("Mode.detailAndFirst");
    assertNoErrors();
    assertNoAction("Delivery.generateNumber"); // of property
    assertNoAction("Delivery.setDefaultType"); // of reference as descriptions-list
    assertNoAction("Delivery.setDefaultInvoice"); // of reference 
    execute("CRUD.new");
    assertAction("Delivery.generateNumber");
    assertAction("Delivery.setDefaultType");
    assertAction("Delivery.setDefaultInvoice");
    assertValue("number", "");
    assertValue("type.number", "");
    assertValue("invoice.year", "");
    assertValue("invoice.number", "");
    execute("Delivery.generateNumber");
    assertValue("number", "77");
    execute("Delivery.setDefaultType");
    assertValue("type.number", "1");
    execute("Delivery.setDefaultInvoice");
    assertValue("invoice.year", "2002");
    assertValue("invoice.number", "1");
    assertValue("invoice.date", "1/1/02");    
  }
        
  public void testActivateDeactivateSection() throws Exception {
    execute("CRUD.new");
    assertEditable("advice");
    assertEditable("remarks");
    execute("Delivery.activateDeactivateSection");
    assertNoEditable("advice");
    assertNoEditable("remarks");
    execute("Delivery.activateDeactivateSection");
    assertEditable("advice");
    assertEditable("remarks");    
  }
  
  public void testCreateAndReadWithKeyReferences() throws Exception {         
    // Create new one 
    execute("CRUD.new");
    setValue("invoice.year", "2002");
    setValue("invoice.number", "1");
    assertValue("invoice.date", "1/1/02");            
    setValue("type.number", "1");
    setValue("number", "66");
    setValue("description", "JUNIT");
    execute("CRUD.save");
    assertNoErrors();
    assertValue("invoice.year", "");
    assertValue("invoice.number", "");            
    assertValue("type.number", "");  
    assertValue("number", "");
    assertValue("description", "");    
    // Searching the just created
    setValue("invoice.year", "2002");
    setValue("invoice.number", "1");            
    setValue("type.number", "1");    
    setValue("number", "66");        
    execute("CRUD.search");
    assertNoErrors();
    assertValue("invoice.year", "2002");
    assertValue("invoice.number", "1");        
    assertValue("invoice.date", "1/1/02");    
    assertValue("type.number", "1");
    assertValue("number", "66");    
    assertValue("description", "JUNIT");        
    assertNoEditable("invoice.year");
    assertNoEditable("invoice.number");
    assertNoEditable("type");
    assertNoEditable("number");
    assertEditable("description");
                                
    // Delete it
    execute("CRUD.delete");                          
    assertNoErrors();
    assertMessage("Delivery deleted successfully");
  }
  
  public void testConverterWithMetaSets() throws Exception {         
    // Creating new
    execute("CRUD.new");
    setValue("invoice.year", "2002");
    setValue("invoice.number", "1");            
    setValue("type.number", "1");
    setValue("number", "66");
    setValue("description", "JUNIT");
    setValue("distance", isOX3()?"1":"2"); // National, in database 'N'
    execute("CRUD.save");
    assertNoErrors();
    assertValue("invoice.year", "");
    assertValue("invoice.number", "");            
    assertValue("type.number", "");  
    assertValue("number", "");
    assertValue("description", "");
    assertValue("distance", isOX3()?"":"0");    
    // Search just created
    setValue("invoice.year", "2002");
    setValue("invoice.number", "1");            
    setValue("type.number", "1");    
    setValue("number", "66");        
    execute("CRUD.search");
    assertNoErrors();
    assertValue("invoice.year", "2002");
    assertValue("invoice.number", "1");            
    assertValue("type.number", "1");
    assertValue("number", "66");    
    assertValue("description", "JUNIT");    
    assertValue("distance", isOX3()?"1":"2");
    assertNoErrors();
    
    // Verifying database value
    Query query = XPersistence.getManager().createNativeQuery("select d.distance from XAVATEST.Delivery as d where "
        + "invoice_year=2002 and invoice_number=1 and type=1 and number=66");    
    String distanceDB = (String) query.getSingleResult();
    assertEquals("distance in database incorrect", "N", distanceDB);
                                    
    // Delete
    execute("CRUD.delete");                          
    assertNoErrors();
    assertMessage("Delivery deleted successfully");
  }
  
  
  public void testDeleteSelectedOnesAndOrderBy() throws Exception { 
    // Creating new
    execute("CRUD.new");
    setValue("invoice.year", "2009");
    setValue("invoice.number", "1");            
    setValue("type.number", "1");
    setValue("number", "1");
    setValue("description", "JUNIT");
    execute("CRUD.save");
    assertNoErrors();
    
    // To list mode and order
    execute("Mode.list");
    assertActions(listActions);
    execute("List.orderBy", "property=invoice.year"); // ascending
    execute("List.orderBy", "property=invoice.year"); // descending
    assertNoErrors();
    
    // Delete          
    assertValueInList(0, "invoice.year", "2009");
    assertValueInList(0, "invoice.number", "1");
    assertValueInList(0, "type.number", "1");
    assertValueInList(0, "number", "1");
    
    checkRow(0);
    
    execute("CRUD.deleteSelected");
    assertNoErrors();
    
    // Verifying that it is deleted    
    Query query = XPersistence.getManager().createQuery("from Delivery d where "
        + "d.invoice.year=2009 and d.invoice.number=1 and d.type.number=1 and d.number=1");    
    if (!query.getResultList().isEmpty()) {
      fail("Delivery would be deleted and it is not the case");
    }
  }
    
  public void testInEntityReferencesNoDefaultValues() throws Exception { 
    execute("CRUD.new");
    assertValue("invoice.year", "");
    assertValue("invoice.number","");
    assertValue("invoice.date", "");
    assertValue("invoice.yearDiscount", "");
    assertNoErrors();
  }
  
  public void testReferencesIfKeyNotExists() throws Exception { 
    execute("CRUD.new");    
    setValue("invoice.year", "2004"); // We supose that not exists
    assertValue("invoice.yearDiscount", "400.00"); 
    setValue("invoice.number", "907"); // We supose that not exists
        
    assertError("Invoice with key {year=2004, number=907} not found");
        
    // The reference datas are deleted in screen
    assertValue("invoice.year", "");
    assertValue("invoice.number","");
    assertValue("invoice.date", "");
    assertValue("invoice.yearDiscount", "");    
  }
  
  public void testViewPropertyAndHideMembers() throws Exception { 
    execute("CRUD.new");
    assertValue("deliveredBy", isOX3()?"":"0");
    assertNotExists("employee");
    assertNotExists("carrier.number");
    
    setValue("deliveredBy", isOX3()?"0":"1");
    assertExists("employee");
    assertNotExists("carrier.number");
    
    setValue("deliveredBy", isOX3()?"1":"2");
    assertNotExists("employee");    
    assertExists("carrier.number");    
    
    setValue("deliveredBy", isOX3()?"":"0");
    assertNotExists("employee");
    assertNotExists("carrier.number");
    
    setValue("deliveredBy", isOX3()?"1":"2");
    assertNotExists("employee");
    assertExists("carrier.number");
        
    execute("CRUD.new");
    assertValue("deliveredBy", isOX3()?"":"0");
    assertNotExists("employee");
    assertNotExists("carrier.number");      
  }
  
  public void testEnvironmentVariablesModule() throws Exception { 
    // Verifying if works the action search special for this module 

    // Creating
    execute("CRUD.new");
    setValue("invoice.year", "2002");
    setValue("invoice.number", "1");            
    setValue("type.number", "1");
    setValue("number", "61");
    setValue("description", "JUNIT WITHOUT DELIVEREDBY");
    execute("CRUD.save");
    assertNoErrors();
    
    execute("CRUD.new");
    setValue("invoice.year", "2002");
    setValue("invoice.number", "1");            
    setValue("type.number", "1");
    setValue("number", "62");
    setValue("description", "JUNIT BY EMPLOYEE");
    setValue("deliveredBy", isOX3()?"0":"1");
    setValue("employee", "JUNIT EMPLOYEE");    
    execute("CRUD.save");
    assertNoErrors();
    
    execute("CRUD.new");
    setValue("invoice.year", "2002");
    setValue("invoice.number", "1");            
    setValue("type.number", "1");
    setValue("number", "63");
    setValue("description", "JUNIT BY CARRIER");
    setValue("deliveredBy", isOX3()?"1":"2");
    setValue("carrier.number", "1");    
    execute("CRUD.save");
    assertNoErrors();
    
    // Reading and verifying
    execute("CRUD.new");
    setValue("invoice.year", "2002");
    setValue("invoice.number", "1");            
    setValue("type.number", "1");
    setValue("number", "63");
    execute("CRUD.search");    
    assertValue("description", "JUNIT BY CARRIER");    
    assertExists("carrier.number");                
    assertNotExists("employee");
    assertValue("carrier.number", "1");
    
    execute("CRUD.new");
    setValue("invoice.year", "2002");
    setValue("invoice.number", "1");            
    setValue("type.number", "1");
    setValue("number", "62");
    execute("CRUD.search");    
    assertValue("description", "JUNIT BY EMPLOYEE");
    assertNotExists("carrier.number");
    assertExists("employee");
    assertValue("employee", "JUNIT EMPLOYEE");
    
    execute("CRUD.new");
    setValue("invoice.year", "2002");
    setValue("invoice.number", "1");            
    setValue("type.number", "1");
    setValue("number", "61");
    execute("CRUD.search");    
    assertValue("description", "JUNIT WITHOUT DELIVEREDBY");    
    assertNotExists("carrier.number");
    assertNotExists("employee");
        
    // Delete
    execute("CRUD.delete");
    assertMessage("Delivery deleted successfully");


    execute("CRUD.new");
    setValue("invoice.year", "2002");
    setValue("invoice.number", "1");            
    setValue("type.number", "1");
    setValue("number", "62");
    execute("CRUD.search");        
    execute("CRUD.delete");
    assertMessage("Delivery deleted successfully");

    execute("CRUD.new");
    setValue("invoice.year", "2002");
    setValue("invoice.number", "1");            
    setValue("type.number", "1");
    setValue("number", "63");
    execute("CRUD.search");            
    execute("CRUD.delete");      
    assertMessage("Delivery deleted successfully");    
  }
  
  public void testMultipleMappingProperty() throws Exception {         
    // Creating new
    execute("CRUD.new");
    setValue("invoice.year", "2002");
    setValue("invoice.number", "1");            
    setValue("type.number", "1");
    setValue("number", "66");
    setValue("date", "2/22/97");
    setValue("description", "JUNIT");
    execute("CRUD.save");
    assertNoErrors();
    assertValue("invoice.year", "");
    assertValue("invoice.number", "");            
    assertValue("type.number", "");  
    assertValue("number", "");
    assertValue("date", getCurrentDate());
    assertValue("description", "");    
    // Search just created
    setValue("invoice.year", "2002");
    setValue("invoice.number", "1");            
    setValue("type.number", "1");    
    setValue("number", "66");        
    execute("CRUD.search");
    assertNoErrors();
    assertValue("invoice.year", "2002");
    assertValue("invoice.number", "1");            
    assertValue("type.number", "1");
    assertValue("number", "66");      
    assertValue("date", "2/22/97");
    assertValue("description", "JUNIT");    
    assertNoErrors();

    // Verifying if date property is well in list 
    // Only works if there are lest than 11 object (because see in first page)    
    execute("Mode.list");
    assertActions(listActions);
    assertNoErrors();
    int quantity = getListRowCount();
    boolean found = false;
    int i = 0;
    for (i = 0; i < quantity; i++) {
      String number = getValueInList(i, "number");            
      if ("66".equals(number)) {        
        assertValueInList(i, "date", "2/22/97");
        found = true;
        break;
      }      
    }
    if (!found) {
      fail("It is necessary that exists delivery 66 in list and there are al least 11 deliveries");    
    }
        
    execute("List.viewDetail", "row=" + i);
                                    
    // Delete
    execute("CRUD.delete");
    assertNoErrors();
    assertMessage("Delivery deleted successfully");
  }
  
  public void testCalculatedValueDependentOnChangePropertyOnChangeAndPropertyOnChangeDepedentOnPropertyOnChange() throws Exception { 
    execute("CRUD.new");
    assertValue("distance", isOX3()?"":"0");
    assertValue("vehicle", "");
    assertValue("transportMode", "");
    setValue("distance", isOX3()?"0":"1"); // Local
    assertValue("distance", isOX3()?"0":"1");
    assertValue("vehicle", "MOTORBIKE");
    assertValue("transportMode", "STREET/ROAD");
    assertValue("driverType", "ANY");
    setValue("distance", isOX3()?"1":"2"); // National
    assertValue("distance", isOX3()?"1":"2");
    assertValue("vehicle", "CAR");
    assertValue("transportMode", "HIGHWAY");
    assertValue("driverType", "DRIVER");
    setValue("distance", isOX3()?"":"0"); // Void
    assertValue("distance", isOX3()?"":"0");
    assertValue("vehicle", "");
    assertValue("transportMode", "");
    assertValue("driverType", "DRIVERX");  
  }
  
  public void testOnChangeWithQualifiedProperty() throws Exception { 
    execute("CRUD.new");
    execute("Sections.change", "activeSection=0");
    // Left from field
    assertValue("remarks", "No remarks");
    setValue("remarks", "");
    setValue("invoice.year", "2004");    
    setValue("invoice.number", "2"); 
    assertValue("remarks", "No remarks");
    setValue("remarks", "");
    setValue("invoice.year", "2002");
    setValue("invoice.number", "1");
    assertValue("remarks", "First invoice of year");
    setValue("remarks", "");
    setValue("invoice.number", "2");
    assertValue("remarks", "No remarks");
    
    // Searching with reference search button
    setValue("remarks", "");
    searchInvoiceWithList("2004", "2");
    assertValue("invoice.year", "2004");    
    assertValue("invoice.number", "2"); 
    assertValue("remarks", "No remarks");
    setValue("remarks", "");
    searchInvoiceWithList("2002", "1");
    assertValue("invoice.year", "2002");    
    assertValue("invoice.number", "1"); 
    assertValue("remarks", "First invoice of year");
    setValue("remarks", "");
    searchInvoiceWithList("2004", "2");
    assertValue("invoice.year", "2004");    
    assertValue("invoice.number", "2"); 
    assertValue("remarks", "No remarks");              
  }
  
  public void testOnChangeDescriptionsListKey_messagesInChangeAction() throws Exception { 
    execute("CRUD.new");
    execute("Sections.change", "activeSection=0");
    assertValue("remarks", "No remarks");
    setValue("deliveredBy", isOX3()?"1":"2");
    assertNoMessages();
    setValue("carrier.number", "3");
    assertMessagesCount(1);
    assertMessage("Carrier changed");    
    assertValue("remarks", "The carrier is 3");        
    setValue("carrier.number", "2");    
    assertValue("remarks", "The carrier is 2");        
  }
  
  public void testHideInSection() throws Exception { 
    execute("CRUD.new");
    execute("Sections.change", "activeSection=0");
    assertExists("remarks");
    execute("Remarks.hideRemarks");
    assertNotExists("remarks");
    execute("Remarks.showRemarks");
    assertExists("remarks");
  }
  
  public void testI18nOfValidValues_descriptionsListWithOrderAndNoCondition() throws Exception {
    // I18n of ValidValues
    execute("CRUD.new");
    String [][] distanceValues = {
      {isOX3()?"":"0", ""},
      {isOX3()?"0":"1", "Lokal"},      
      {isOX3()?"1":"2", "Nachional"}, 
      {isOX3()?"2":"3", "Internachional"}
    };
    assertValidValues("distance", distanceValues);
    
    // DescriptionsList order      
    String [] types = getKeysValidValues("type.number");    
    int previous = Integer.MAX_VALUE;
    for (int i=1; i<types.length; i++) { // 0 position is empty
      int current = Integer.parseInt(types[i]);
      assertTrue("delivery types must be in descending order by number", current < previous);
      previous = current;
    }
    
  }
  
  public void testViewPropertyInSectionDefaultCalcultarAndValidators() throws Exception { 
    execute("CRUD.new");
    execute("Sections.change", "activeSection=0");
    assertExists("advice");
    assertValue("advice", "IF YOU DRINK DO NOT DRIVE");
    setValue("advice", "");
    execute("CRUD.save");
    assertError("Value for Advice in Delivery is required");
  }
  
  public void testEditableAffectsSection() throws Exception {
    execute("Mode.detailAndFirst");
    assertEditable("description"); // out of section
    assertEditable("advice"); // in section
    execute("EditableOnOff.setOff");
    assertNoEditable("description"); // out of section
    assertNoEditable("advice"); // in section        
  }
  
  public void testValidValuesInList() throws Exception {
    int quantity = getListRowCount();
    assertTrue("For this test is needed at least one created delivery", quantity > 0);
    Collection values = new ArrayList();
    values.add("Lokal");
    values.add("Nachional");
    values.add("Internachional");
    boolean thereIsOne = false;
    for (int i=0; i<quantity; i++) {
      String value = getValueInList(i, "distance");      
      if (Is.emptyString(value)) continue;
      if (values.contains(value)) {
        thereIsOne = true;
        continue;
      }
      fail("Only the next values are valid: " + values);
    }
    assertTrue("For this test is need at least one delivery with value in 'distance' property", thereIsOne);
  }
   
  public void testSetValueAgainstPropertiesOfSectionsHiddenAndShowed() throws Exception {
    execute("Remarks.hideRemarks");
    execute("CRUD.new");
    assertNotExists("remarks");
    execute("Remarks.showRemarks");
    assertExists("remarks");    
    execute("Remarks.setRemarks");
    assertValue("remarks", "Hell in your eyes");  
  }
  
  public void testGeneratePdf() throws Exception {
    execute("Print.generatePdf");    
    assertContentTypeForPopup("application/pdf");
  }
    
  private String getCurrentDate() {
    DateFormat df = DateFormat.getDateInstance(DateFormat.SHORT);
    return df.format(new java.util.Date());
  }
    
  private void searchInvoiceWithList(String year, String number) throws Exception {
    execute("Reference.search", "keyProperty=xava.Delivery.invoice.year");
    setConditionValues(
      new String [] { year, number, "", "true" }
    );
    execute("List.filter");
    execute("ReferenceSearch.choose", "row=0");              
  }
  
  private void assertNoType(String type) throws Exception {
    String [] types = getKeysValidValues("type.number");    
    assertTrue(type + " not expected", !Arrays.asList(types).contains(type));
  }

  private void assertType(String type) throws Exception {
    String [] types = getKeysValidValues("type.number");    
    assertTrue(type + " expected", Arrays.asList(types).contains(type));
  }
  
}
java2s.com  | Contact Us | Privacy Policy
Copyright 2009 - 12 Demo Source and Support. All rights reserved.
All other trademarks are property of their respective owners.