package org.jboss.test.faces.mock;
import static org.easymock.EasyMock.*;
import static org.junit.Assert.*;
import javax.faces.FactoryFinder;
import javax.faces.component.UIViewRoot;
import javax.faces.context.FacesContext;
import javax.faces.context.ResponseWriter;
import org.jboss.test.faces.mock.Environment.Feature;
import org.jboss.test.faces.mock.component.MockUIData;
import org.junit.Test;
import org.junit.runner.RunWith;
@RunWith(MockTestRunner.class)
public class RunnerTest {
@Mock("foo")
@Environment({Feature.APPLICATION,Feature.EXTERNAL_CONTEXT,Feature.FACTORIES,Feature.RESPONSE_WRITER})
protected MockFacesEnvironment environment;
@Stub
protected UIViewRoot viewRoot;
@Mock
protected MockUIData data;
protected MockController controller;
@Test
public void testView() throws Exception {
expect(environment.getFacesContext().getViewRoot()).andReturn(viewRoot);
expect(viewRoot.getViewId()).andReturn("/foo.xhtml");
controller.replay();
assertNotNull(environment.getExternalContext());
assertNotNull(FactoryFinder.getFactory(FactoryFinder.EXTERNAL_CONTEXT_FACTORY));
assertSame(viewRoot, environment.getFacesContext().getViewRoot());
assertEquals("/foo.xhtml", viewRoot.getViewId());
controller.verify();
}
@Test
public void testWriter() throws Exception {
controller.replay();
ResponseWriter responseWriter = FacesContext.getCurrentInstance().getResponseWriter();
responseWriter.startElement("foo", viewRoot);
responseWriter.writeAttribute("bar", "bar", "bar");
responseWriter.writeComment("comment");
responseWriter.startElement("bar", viewRoot);
responseWriter.writeURIAttribute("href", "http://example.com", "href");
responseWriter.writeText("text","content");
responseWriter.endElement("bar");
responseWriter.endElement("foo");
controller.verify();
assertEquals("<foo bar=\"bar\"><!--comment--><bar href=\"http://example.com\">text</bar></foo>", environment.getResponseWriter().toString());
assertEquals("http://example.com", environment.getResponseWriter().find().element("foo").withAttribute("bar", "bar").element("bar").getAttribute("href"));
}
@Test
public void testCustomMock() throws Exception {
expect(data.getId()).andReturn("foo");
controller.replay();
assertEquals("foo",data.getId());
controller.verify();
}
}