package com.guit.junit.dom; import com.guit.client.dom.Element; import com.guit.client.dom.Form; import com.guit.client.dom.Input; import com.guit.client.dom.Textarea; import java.util.ArrayList; import java.util.List; public class FormMock extends ElementMock implements Form { public FormMock() { super("form"); } @Override public String acceptCharset() { return attr("acceptCharset"); } @Override public String action() { return attr("action"); } @Override public ArrayList<Element> elements() { ArrayList<Element> elements = new ArrayList<Element>(); elements.addAll(query("input")); elements.addAll(query("textarea")); return elements; } @Override public String enctype() { return attr("enctype"); } @Override public String method() { return attr("method"); } @Override public String name() { return attr("name"); } @Override public String target() { return attr("target"); } @Override public void reset() { } @Override public void acceptCharset(String acceptCharset) { attr("acceptCharset", acceptCharset); } @Override public void action(String action) { attr("action", action); } @Override public void enctype(String enctype) { attr("enctype", enctype); } @Override public void method(String method) { attr("method", method); } @Override public void name(String name) { attr("name", name); } @Override public void target(String target) { attr("target", target); } @Override public void submit() { } @Override public void setFieldValue(String name, String value) { Element el = getField(name); if (el.tag().equals("input")) { Input input = new InputMock().from(el); if (el.attr("type").equals("checkbox")) { input.checked(value.equals("true") ? true : false); } else { input.text(value); } } else if (el.tag().equals("textarea")) { Textarea textarea = new TextareaMock().from(el); textarea.value(value); } else { throw new RuntimeException("Field type " + el.attr("type") + " is not supported"); } } @Override public Element getField(String name) { List<Element> query = query("input[name='" + name + "']"); if (query.size() == 0) { query = query("textarea[name='" + name + "']"); if (query.size() == 0) { throw new RuntimeException("Field does not exists"); } } return query.get(0); } @Override public String getFieldValue(String name) { Element el = getField(name); if (el.tag().equals("input")) { Input input = new InputMock().from(el); if (el.attr("type").equals("checkbox")) { return input.checked() ? "true" : "false"; } else { return input.text(); } } else if (el.tag().equals("textarea")) { Textarea textarea = new TextareaMock().from(el); return textarea.value(); } else { throw new RuntimeException("Field type " + el.attr("type") + " is not supported"); } } }