Revision: 761
http://jwebunit.svn.sourceforge.net/jwebunit/?rev=761&view=rev
Author: jevonwright
Date: 2008-11-04 11:21:23 +0000 (Tue, 04 Nov 2008)
Log Message:
-----------
IElement.setAttribute("value") on an HtmlInput or IElement.setTextContent() on
an HtmlTextArea will now call any attached onChange Javascript
Modified Paths:
--------------
trunk/jwebunit-commons-tests/src/main/java/net/sourceforge/jwebunit/tests/IElementTest.java
trunk/jwebunit-commons-tests/src/main/resources/testcases/IElementTest/template.html
trunk/jwebunit-htmlunit-plugin/src/main/java/net/sourceforge/jwebunit/htmlunit/HtmlUnitElementImpl.java
Modified:
trunk/jwebunit-commons-tests/src/main/java/net/sourceforge/jwebunit/tests/IElementTest.java
===================================================================
---
trunk/jwebunit-commons-tests/src/main/java/net/sourceforge/jwebunit/tests/IElementTest.java
2008-10-30 03:57:26 UTC (rev 760)
+++
trunk/jwebunit-commons-tests/src/main/java/net/sourceforge/jwebunit/tests/IElementTest.java
2008-11-04 11:21:23 UTC (rev 761)
@@ -137,9 +137,11 @@
// get all input children
List<IElement> inputs = element.getElements("input");
- assertEquals(2, inputs.size()); // there should be two
+ assertEquals(4, inputs.size()); // there should be two
assertEquals("test3", inputs.get(0).getAttribute("value"));
assertEquals("Do nothing", inputs.get(1).getAttribute("value"));
+ assertEquals("initial", inputs.get(2).getAttribute("value"));
+ assertEquals("unchanged", inputs.get(3).getAttribute("value"));
// get parent through xpath
IElement parent = element.getElement("..");
@@ -148,4 +150,33 @@
}
+ /**
+ * Test that setting attributes manually (e.g setAttribute("value")
+ * properly calls any attached Javascript.
+ */
+ public void testAttributeJavascript() {
+ String testingText = new Date().toString();
+
+ {
+ IElement js1 = getElementById("js1");
+ IElement js2 = getElementById("js2");
+
+ assertEquals(js1.getAttribute("value"), "initial");
+ assertEquals(js2.getAttribute("value"), "unchanged");
+
+ // change js1's value
+ js1.setAttribute("value", testingText);
+ }
+
+ // refresh the elements and check they have changed
+ {
+ IElement js1 = getElementById("js1");
+ IElement js2 = getElementById("js2");
+
+ assertEquals(js1.getAttribute("value"), testingText);
+ assertEquals(js2.getAttribute("value"), testingText);
+ }
+
+ }
+
}
Modified:
trunk/jwebunit-commons-tests/src/main/resources/testcases/IElementTest/template.html
===================================================================
---
trunk/jwebunit-commons-tests/src/main/resources/testcases/IElementTest/template.html
2008-10-30 03:57:26 UTC (rev 760)
+++
trunk/jwebunit-commons-tests/src/main/resources/testcases/IElementTest/template.html
2008-11-04 11:21:23 UTC (rev 761)
@@ -27,5 +27,11 @@
<li>four</li>
</ol>
+<hr>
+
+<p>A small Javascript test.</p>
+<input id="js1" value="initial"
onChange="document.getElementById('js2').value=this.value;" />
+<input id="js2" value="unchanged" />
+
</body>
</html>
Modified:
trunk/jwebunit-htmlunit-plugin/src/main/java/net/sourceforge/jwebunit/htmlunit/HtmlUnitElementImpl.java
===================================================================
---
trunk/jwebunit-htmlunit-plugin/src/main/java/net/sourceforge/jwebunit/htmlunit/HtmlUnitElementImpl.java
2008-10-30 03:57:26 UTC (rev 760)
+++
trunk/jwebunit-htmlunit-plugin/src/main/java/net/sourceforge/jwebunit/htmlunit/HtmlUnitElementImpl.java
2008-11-04 11:21:23 UTC (rev 761)
@@ -10,6 +10,8 @@
import com.gargoylesoftware.htmlunit.html.DomNode;
import com.gargoylesoftware.htmlunit.html.HtmlElement;
+import com.gargoylesoftware.htmlunit.html.HtmlInput;
+import com.gargoylesoftware.htmlunit.html.HtmlTextArea;
/**
* HtmlUnit implementation of IElement wrapper.
@@ -119,7 +121,7 @@
* @see
net.sourceforge.jwebunit.api.IElement#setAttribute(java.lang.String)
*/
public void setAttribute(String string) {
- element.setAttribute(string, "1");
+ element.setAttributeValue(string, "1");
}
@@ -127,7 +129,12 @@
* @see
net.sourceforge.jwebunit.api.IElement#setAttribute(java.lang.String,
java.lang.String)
*/
public void setAttribute(String string, String value) {
- element.setAttribute(string, value);
+ if ("value".equals(string) && element instanceof HtmlInput) {
+ // for HtmlInputs, we want to run any onChange code if
the value changes
+ ((HtmlInput) element).setValueAttribute(value);
+ } else {
+ element.setAttributeValue(string, value);
+ }
}
@@ -135,7 +142,11 @@
* @see
net.sourceforge.jwebunit.api.IElement#setTextContent(java.lang.String)
*/
public void setTextContent(String value) {
- element.setTextContent(value);
+ if (element instanceof HtmlTextArea) {
+ ((HtmlTextArea) element).setText(value);
+ } else {
+ element.setTextContent(value);
+ }
}
}
This was sent by the SourceForge.net collaborative development platform, the
world's largest Open Source development site.
-------------------------------------------------------------------------
This SF.Net email is sponsored by the Moblin Your Move Developer's challenge
Build the coolest Linux based applications with Moblin SDK & win great prizes
Grand prize is a trip for two to an Open Source event anywhere in the world
http://moblin-contest.org/redirect.php?banner_id=100&url=/
_______________________________________________
JWebUnit-development mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/jwebunit-development