package com.sun.faces.facelets.component;
import static org.easymock.EasyMock.expect;
import static org.easymock.EasyMock.replay;
import java.lang.reflect.Method;
import javax.faces.application.FacesMessage;
import javax.faces.application.FacesMessage.Severity;
import javax.faces.context.FacesContext;
import junit.framework.TestCase;
import org.easymock.EasyMock;
import org.easymock.IAnswer;
import org.junit.Test;
public class UIRepeatTest extends TestCase {
private FacesContext jsf;
private FacesMessage.Severity maximumSeverity = FacesMessage.SEVERITY_WARN;
private Method uiRepeatHasErrorMessages;
@Test
public void testHasErrorMessages() throws Exception {
jsf = EasyMock.createMock(FacesContext.class);
expect(jsf.getMaximumSeverity()).andAnswer(new IAnswer<Severity>() {
@Override
public Severity answer() throws Throwable {
return maximumSeverity;
}
}).anyTimes();
replay(jsf);
maximumSeverity = FacesMessage.SEVERITY_WARN;
assertEquals(false, hasErrorMessages(jsf));
maximumSeverity = FacesMessage.SEVERITY_INFO;
assertEquals(false, hasErrorMessages(jsf));
maximumSeverity = FacesMessage.SEVERITY_ERROR;
assertEquals(true, hasErrorMessages(jsf));
maximumSeverity = FacesMessage.SEVERITY_FATAL;
assertEquals(true, hasErrorMessages(jsf));
}
private boolean hasErrorMessages(FacesContext context) throws Exception {
if (uiRepeatHasErrorMessages == null) {
Class<?> uiRepeatClass = Class.forName(UIRepeat.class.getName());
uiRepeatHasErrorMessages = uiRepeatClass.getDeclaredMethod(
"hasErrorMessages", new Class[] { FacesContext.class });
uiRepeatHasErrorMessages.setAccessible(true);
}
return (Boolean)uiRepeatHasErrorMessages.invoke(new UIRepeat(),
new Object[] { context });
}
}