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.BootstrapRadioChoice.Type;
public class BootstrapRadioChoiceTest {
private final WicketTester tester = new WicketTester();
@Test
public void generatesBootstrapRadioMarkup() {
BootstrapRadioChoice<String> choice = new BootstrapRadioChoice<String>("test", Arrays.asList("1"));
render(choice, "<div wicket:id=\"test\"><input type=\"radio\"></input></div>");
/* Original:
assertThat(tester.getResponse().getDocument(),
equalTo("<input name=\"test\" type=\"radio\" value=\"0\" id=\"test1-0\"/><label for=\"test1-0\">1</label>\n"));*/
assertThat(tester.getResponse().getDocument(),
equalTo("<label class=\"radio\" for=\"test1-0\">1<input name=\"test\" type=\"radio\" value=\"0\" id=\"test1-0\"/></label>\n"));
}
@Test
public void generatesInlineBootstrapRadioMarkup() {
BootstrapRadioChoice<String> choice = new BootstrapRadioChoice<String>("test", Arrays.asList("1")).setType(Type.INLINE);
render(choice, "<div wicket:id=\"test\"><input type=\"radio\"></input></div>");
assertThat(tester.getResponse().getDocument(),
equalTo("<label class=\"radio inline\" for=\"test1-0\">1<input name=\"test\" type=\"radio\" value=\"0\" id=\"test1-0\"/></label>\n"));
}
@Test
public void generatesBootstrapRadioMarkupForMultipleOptions() {
BootstrapRadioChoice<String> choice = new BootstrapRadioChoice<String>("test", Arrays.asList("FEMALE", "MALE", "INDETERMINATE"));
render(choice, "<div wicket:id=\"test\"><input type=\"radio\"></input></div>");
assertThat(tester.getResponse().getDocument(),
equalTo("<label class=\"radio\" for=\"test1-0\">FEMALE<input name=\"test\" type=\"radio\" value=\"0\" id=\"test1-0\"/></label>\n" +
"<label class=\"radio\" for=\"test1-1\">MALE<input name=\"test\" type=\"radio\" value=\"1\" id=\"test1-1\"/></label>\n" +
"<label class=\"radio\" for=\"test1-2\">INDETERMINATE<input name=\"test\" type=\"radio\" value=\"2\" id=\"test1-2\"/></label>\n"));
}
private static void render(BootstrapRadioChoice<String> choice, String initialMarkup) {
MarkupStream stream = new MarkupStream(Markup.of(initialMarkup));
stream.setCurrentIndex(1);
choice.onComponentTagBody(stream, new ComponentTag("div", TagType.OPEN));
}
}