package lt.inventi.wicket.component.bootstrap.form;
import static org.hamcrest.CoreMatchers.equalTo;
import static org.junit.Assert.assertThat;
import java.util.Arrays;
import org.apache.wicket.markup.ComponentTag;
import org.apache.wicket.markup.Markup;
import org.apache.wicket.markup.MarkupStream;
import org.apache.wicket.markup.parser.XmlTag.TagType;
import org.apache.wicket.util.tester.WicketTester;
import org.junit.Test;
import lt.inventi.wicket.component.bootstrap.form.BootstrapCheckBoxMultipleChoice.CheckboxType;
public class BootstrapCheckBoxMultipleChoiceTest {
private final WicketTester tester = new WicketTester();
@Test
public void generatesBootstrapCheckBoxMarkup() {
BootstrapCheckBoxMultipleChoice<String> choice = new BootstrapCheckBoxMultipleChoice<String>("test", Arrays.asList("1"));
choice.setInputPosition(ChoiceUtils.InputPosition.AFTER_LABEL);
render(choice, "<div wicket:id=\"test\"><input type=\"checkbox\"></input></div>");
/* Original:
assertThat(tester.getResponse().getDocument(),
equalTo("<input name=\"test\" type=\"checkbox\" value=\"0\" id=\"test1-test_0\"/><label for=\"test1-test_0\">1</label>\n"));*/
assertThat(tester.getResponse().getDocument(),
equalTo("<label class=\"checkbox\" for=\"test1-test_0\">1<input name=\"test\" type=\"checkbox\" value=\"0\" id=\"test1-test_0\"/></label>\n"));
}
@Test
public void generatesInlineBootstrapCheckBoxMarkup() {
BootstrapCheckBoxMultipleChoice<String> choice = new BootstrapCheckBoxMultipleChoice<String>("test", Arrays.asList("1")).setType(CheckboxType.INLINE);
choice.setInputPosition(ChoiceUtils.InputPosition.AFTER_LABEL);
render(choice, "<div wicket:id=\"test\"><input type=\"checkbox\"></input></div>");
assertThat(tester.getResponse().getDocument(),
equalTo("<label class=\"checkbox inline\" for=\"test1-test_0\">1<input name=\"test\" type=\"checkbox\" value=\"0\" id=\"test1-test_0\"/></label>\n"));
}
@Test
public void generatesBootstrapcheckboxMarkupForMultipleOptions() {
BootstrapCheckBoxMultipleChoice<String> choice = new BootstrapCheckBoxMultipleChoice<String>("test", Arrays.asList("FEMALE", "MALE", "INDETERMINATE"));
choice.setInputPosition(ChoiceUtils.InputPosition.AFTER_LABEL);
render(choice, "<div wicket:id=\"test\"><input type=\"checkbox\"></input></div>");
assertThat(tester.getResponse().getDocument(),
equalTo("<label class=\"checkbox\" for=\"test1-test_0\">FEMALE<input name=\"test\" type=\"checkbox\" value=\"0\" id=\"test1-test_0\"/></label>\n" +
"<label class=\"checkbox\" for=\"test1-test_1\">MALE<input name=\"test\" type=\"checkbox\" value=\"1\" id=\"test1-test_1\"/></label>\n" +
"<label class=\"checkbox\" for=\"test1-test_2\">INDETERMINATE<input name=\"test\" type=\"checkbox\" value=\"2\" id=\"test1-test_2\"/></label>\n"));
}
private static void render(BootstrapCheckBoxMultipleChoice<String> choice, String initialMarkup) {
MarkupStream stream = new MarkupStream(Markup.of(initialMarkup));
stream.setCurrentIndex(1);
choice.onComponentTagBody(stream, new ComponentTag("div", TagType.OPEN));
}
}