package lt.inventi.wicket.component;
import org.apache.wicket.Component;
import org.apache.wicket.markup.html.form.TextField;
import org.apache.wicket.markup.html.panel.Panel;
import org.apache.wicket.model.ResourceModel;
import org.apache.wicket.util.tester.WicketTester;
import org.junit.Before;
import org.junit.Test;
import static org.hamcrest.MatcherAssert.assertThat;
import static org.hamcrest.Matchers.containsString;
import static org.hamcrest.Matchers.not;
import lt.inventi.wicket.resource.ResourceSettings;
public class BlankInputHidingBehaviorTest {
private WicketTester tester = new WicketTester();
@Before
public void setUp() throws Exception {
ResourceSettings.installEmpty(tester.getApplication());
}
@Test
public void resolvesLabelResourceRelativeToParentComponent() {
TextField<String> field = new TextField<String>("testField");
tester.startComponentInPage(new TestPanel().add(
field.add(new BlankInputHidingBehavior(new ResourceModel("blankInputLabel")))));
tester.assertNoErrorMessage();
String script = String.format("$('#%s').blankInput({id: '%s', label: 'Blank Input Label', focus: '%s'})",
field.getMarkupId(), field.getMarkupId(), field.getMarkupId());
assertThat(tester.getLastResponse().getDocument(), containsString(script));
}
@Test
public void doesNotGenerateJavascriptWhenIsDisabled() {
BlankInputHidingBehavior behavior = new BlankInputHidingBehavior(new ResourceModel("blankInputLabel")) {
@Override
public boolean isEnabled(Component component) {
return false;
}
};
tester.startComponentInPage(new TestPanel().add(
new TextField<String>("testField").add(behavior)));
tester.assertNoErrorMessage();
assertThat(tester.getLastResponse().getDocument(), not(containsString("blankInput")));
}
private static class TestPanel extends Panel {
public TestPanel() {
super("test");
}
}
}