IDEMPIERE-92 - Integrate Selenium. Use widget name and instance name for uuid generation when id is not set. Change WEditor to use the common instanceName widget attribute.
This commit is contained in:
parent
21c2f0c05b
commit
6b1f26159e
|
@ -44,6 +44,13 @@ public class AdempiereIdGenerator implements IdGenerator {
|
||||||
public String nextComponentUuid(Desktop desktop, Component comp, ComponentInfo compInfo) {
|
public String nextComponentUuid(Desktop desktop, Component comp, ComponentInfo compInfo) {
|
||||||
String prefix = comp.getId();
|
String prefix = comp.getId();
|
||||||
|
|
||||||
|
if (prefix == null || prefix.length() == 0) {
|
||||||
|
String attribute = comp.getWidgetAttribute(AdempiereWebUI.WIDGET_INSTANCE_NAME);
|
||||||
|
if (attribute != null && attribute.length() > 0) {
|
||||||
|
prefix = getWidgetName(comp.getWidgetClass())+"0"+attribute;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if (prefix == null || prefix.length() == 0) {
|
if (prefix == null || prefix.length() == 0) {
|
||||||
prefix = DEFAULT_ZK_COMP_PREFIX;
|
prefix = DEFAULT_ZK_COMP_PREFIX;
|
||||||
}
|
}
|
||||||
|
@ -54,8 +61,15 @@ public class AdempiereIdGenerator implements IdGenerator {
|
||||||
//only include id space owner to ease converting test case to use zk id selector instead of uuid
|
//only include id space owner to ease converting test case to use zk id selector instead of uuid
|
||||||
if (parent instanceof IdSpace) {
|
if (parent instanceof IdSpace) {
|
||||||
String id = parent.getId();
|
String id = parent.getId();
|
||||||
if (id != null && id.length() > 0)
|
if (id != null && id.length() > 0) {
|
||||||
builder.insert(0, id+"_");
|
builder.insert(0, id+"_");
|
||||||
|
} else {
|
||||||
|
String attribute = parent.getWidgetAttribute(AdempiereWebUI.WIDGET_INSTANCE_NAME);
|
||||||
|
if (attribute != null && attribute.length() > 0) {
|
||||||
|
id = getWidgetName(parent.getWidgetClass())+"0"+attribute;
|
||||||
|
builder.insert(0, id+"_");
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
parent = parent.getParent();
|
parent = parent.getParent();
|
||||||
}
|
}
|
||||||
|
@ -85,6 +99,11 @@ public class AdempiereIdGenerator implements IdGenerator {
|
||||||
return prefix + i;
|
return prefix + i;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private String getWidgetName(String widgetClass) {
|
||||||
|
String name = widgetClass.substring(widgetClass.lastIndexOf(".")+1);
|
||||||
|
return name.toLowerCase();
|
||||||
|
}
|
||||||
|
|
||||||
public static String escapeId(String prefix) {
|
public static String escapeId(String prefix) {
|
||||||
Pattern pattern = Pattern.compile("[^a-zA-Z_0-9]");
|
Pattern pattern = Pattern.compile("[^a-zA-Z_0-9]");
|
||||||
Matcher matcher = pattern.matcher(prefix);
|
Matcher matcher = pattern.matcher(prefix);
|
||||||
|
|
|
@ -22,6 +22,7 @@ import java.beans.PropertyChangeEvent;
|
||||||
import java.beans.PropertyChangeListener;
|
import java.beans.PropertyChangeListener;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
|
|
||||||
|
import org.adempiere.webui.AdempiereWebUI;
|
||||||
import org.adempiere.webui.component.Bandbox;
|
import org.adempiere.webui.component.Bandbox;
|
||||||
import org.adempiere.webui.component.Button;
|
import org.adempiere.webui.component.Button;
|
||||||
import org.adempiere.webui.component.Datebox;
|
import org.adempiere.webui.component.Datebox;
|
||||||
|
@ -109,9 +110,10 @@ public abstract class WEditor implements EventListener<Event>, PropertyChangeLis
|
||||||
|
|
||||||
this.setComponent(comp);
|
this.setComponent(comp);
|
||||||
this.gridField = gridField;
|
this.gridField = gridField;
|
||||||
comp.setWidgetAttribute("columnName", gridField.getColumnName());
|
|
||||||
if (gridField.getGridTab() != null) {
|
if (gridField.getGridTab() != null) {
|
||||||
comp.setWidgetAttribute("qualifiedColumnName", gridField.getGridTab().getTableName()+"."+gridField.getColumnName());
|
comp.setWidgetAttribute(AdempiereWebUI.WIDGET_INSTANCE_NAME, gridField.getGridTab().getTableName()+"0"+gridField.getColumnName());
|
||||||
|
} else {
|
||||||
|
comp.setWidgetAttribute(AdempiereWebUI.WIDGET_INSTANCE_NAME, gridField.getColumnName());
|
||||||
}
|
}
|
||||||
this.setMandatory(gridField.isMandatory(false));
|
this.setMandatory(gridField.isMandatory(false));
|
||||||
this.readOnly = gridField.isReadOnly();
|
this.readOnly = gridField.isReadOnly();
|
||||||
|
|
|
@ -26,7 +26,7 @@ public class SelectTabTest extends AbstractTestCase {
|
||||||
selectTab("$Product_1 $detailPane @tabbox", "Business Partner");
|
selectTab("$Product_1 $detailPane @tabbox", "Business Partner");
|
||||||
assertEquals("Business Partner", selectedTab("$Product_1 $detailPane @tabbox"));
|
assertEquals("Business Partner", selectedTab("$Product_1 $detailPane @tabbox"));
|
||||||
|
|
||||||
WebElement element = driver.findElement(Zk.jq("$Product_1 $Product @textbox[columnName=\"Name\"]"));
|
WebElement element = driver.findElement(Zk.jq("$Product_1 $Product @textbox[instanceName=\"M_Product0Name\"]"));
|
||||||
assertNotNull(element);
|
assertNotNull(element);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue