package org.appfuse.webapp.pages;
import org.apache.tapestry5.dom.Element;
import org.apache.tapestry5.dom.Node;
import org.junit.Test;
import java.util.List;
import static org.junit.Assert.*;
public class UserFormTest extends BasePageTestCase {
@Test
public void testAddAndEditUser() {
doc = tester.renderPage("UserForm");
populateForm();
assertTrue(doc.toString().contains("saved successfully"));
Element table = doc.getElementById("userList");
assertTrue(table.toString().contains("tapestry"));
List<Node> rows = table.find("tbody").getChildren();
String userId = null;
// loop through the rows until we find "tapestry" user
for (Node node : rows) {
if (((Element) node).getChildMarkup().contains("tapestry")) {
userId = ((Element) node).find("td/a").getChildMarkup().trim();
}
}
Element idLink = table.getElementById("user" + userId);
doc = tester.clickLink(idLink);
Element form = doc.getElementById("userForm");
assertNotNull(form);
assertEquals("tapestry", form.getElementById("username").getAttribute("value"));
}
@Test
public void testRemoveUser() {
doc = tester.renderPage("UserList");
Element table = doc.getElementById("userList");
assertTrue(table.toString().contains("tapestry"));
List<Node> rows = table.find("tbody").getChildren();
String userId = null;
// loop through the rows until we find "tapestry" user
for (Node node : rows) {
if (((Element) node).getChildMarkup().contains("tapestry")) {
userId = ((Element) node).find("td/a").getChildMarkup().trim();
}
}
Element idLink = table.getElementById("user" + userId);
doc = tester.clickLink(idLink);
Element deleteButton = doc.getElementById("delete");
fieldValues.put("id", userId);
doc = tester.clickSubmit(deleteButton, fieldValues);
assertTrue(doc.toString().contains("successfully deleted"));
}
private Element populateForm() {
doc = tester.renderPage("UserForm");
Element form = doc.getElementById("userForm");
assertNotNull(form);
fieldValues.put("username", "tapestry");
fieldValues.put("password", "isfun");
fieldValues.put("firstName", "Tapestry");
fieldValues.put("lastName", "5");
fieldValues.put("email", "tapestry@appfuse.org");
doc = tester.submitForm(form, fieldValues);
return form;
}
}