package lt.inventi.wicket.test;
import static lt.inventi.wicket.test.FuzzyComponentResolverUtils.findComponentPath;
import org.apache.wicket.markup.html.form.Form;
import org.apache.wicket.markup.html.form.FormComponent;
import org.apache.wicket.markup.html.form.IFormSubmittingComponent;
import org.apache.wicket.util.file.File;
import org.apache.wicket.util.tester.BaseWicketTester;
import org.apache.wicket.util.tester.FormTester;
public class FuzzyFormTester extends FormTester {
public FuzzyFormTester(String formPath, Form<?> form, BaseWicketTester wicketTester, boolean fillBlankString) {
super(formPath, form, wicketTester, fillBlankString);
}
@Override
public FormTester setValue(String formComponentId, String value) {
return super.setValue(resolveFormComponentPath(formComponentId), value);
}
@Override
public FormTester select(String formComponentId, int index) {
return super.select(resolveFormComponentPath(formComponentId), index);
}
@Override
public FormTester selectMultiple(String formComponentId, int[] indexes, boolean replace) {
return super.selectMultiple(resolveFormComponentPath(formComponentId), indexes, replace);
}
@Override
public FormTester setFile(String formComponentId, File file, String contentType) {
return super.setFile(resolveFormComponentPath(formComponentId), file, contentType);
}
@Override
public String getTextComponentValue(String id) {
return super.getTextComponentValue(resolveFormComponentPath(id));
}
@Override
public FormTester selectMultiple(String formComponentId, int[] indexes) {
return super.selectMultiple(resolveFormComponentPath(formComponentId), indexes);
}
@Override
public FormTester setValue(String checkBoxId, boolean value) {
return super.setValue(resolveFormComponentPath(checkBoxId), value);
}
@Override
public FormTester submit(String buttonComponentId) {
String buttonPath = resolveFormSubmittingComponentPath(buttonComponentId);
super.setValue(buttonPath, "marked");
return super.submit();
}
private String resolveFormComponentPath(String formComponentId) {
return findComponentPath(getForm(), formComponentId, FormComponent.class);
}
private String resolveFormSubmittingComponentPath(String formComponentId) {
return findComponentPath(getForm(), formComponentId, IFormSubmittingComponent.class);
}
}