package lt.inventi.wicket.component.label;
import java.util.Locale;
import org.apache.wicket.Component;
import org.apache.wicket.model.IModel;
import org.apache.wicket.model.Model;
import org.apache.wicket.resource.loader.IStringResourceLoader;
import org.apache.wicket.util.tester.WicketTester;
import org.junit.Before;
import org.junit.Test;
public class BooleanValueLabelTest {
private WicketTester tester = new WicketTester();
@Before
public void setUp() {
tester.getApplication().getResourceSettings().getStringResourceLoaders().add(new IStringResourceLoader() {
@Override
public String loadStringResource(Component component, String key, Locale locale, String style, String variation) {
if (key.equals("BooleanValueLabel.UNDEFINED")) {
return "Unknown";
} else if (key.equals("BooleanValueLabel.TRUE")) {
return "Yes";
} else if (key.equals("BooleanValueLabel.FALSE")) {
return "No";
}
throw new IllegalStateException("No value found for key: " + key + ", component: " + component);
}
@Override
public String loadStringResource(Class<?> clazz, String key, Locale locale, String style, String variation) {
throw new IllegalStateException("No value found for key: " + key);
}
});
}
@Test
public void localizesBooleanValue() {
// We cannot #assertLabel as it calls Label#getDefaultModelObjectAsString
IModel<Boolean> model = Model.of(true);
tester.startComponentInPage(new BooleanValueLabel("test", model));
tester.getResponse().getDocument().contains("Yes");
model.setObject(false);
tester.startComponentInPage(new BooleanValueLabel("test", model));
tester.getResponse().getDocument().contains("No");
model.setObject((Boolean) null);
tester.startComponentInPage(new BooleanValueLabel("test", model));
tester.getResponse().getDocument().contains("Unknown");
}
}