package net.sourceforge.stripes.mock; import net.sourceforge.stripes.StripesTestFixture; import net.sourceforge.stripes.action.*; import org.testng.Assert; import org.testng.annotations.Test; import java.util.List; /** * @author JC Carrillo */ public class TestContext { private static final String MESSAGE = "This is a message"; @UrlBinding("/simple") public static class ContextActionBean implements ActionBean { private ActionBeanContext context; @DefaultHandler public Resolution view() { return null; } public Resolution messages() { getContext().getMessages().add(new SimpleMessage(MESSAGE)); return null; } public void setContext(ActionBeanContext context) { this.context = context; } public ActionBeanContext getContext() { return context; } } @Test public void testMessagesNothingInContext() throws Exception { MockServletContext c = StripesTestFixture.createServletContext(); MockRoundtrip mockRoundtrip = new MockRoundtrip(c, ContextActionBean.class); mockRoundtrip.execute(); ContextActionBean contextActionBean = mockRoundtrip.getActionBean(ContextActionBean.class); ActionBeanContext context = contextActionBean.getContext(); Assert.assertNotNull(context); List<Message> messages = context.getMessages(); Assert.assertNotNull(messages); } @Test(expectedExceptions = NullPointerException.class) public void testMessagesWithMessages() throws Exception { MockServletContext c = StripesTestFixture.createServletContext(); MockRoundtrip mockRoundtrip = new MockRoundtrip(c, ContextActionBean.class); mockRoundtrip.execute("messages"); ContextActionBean contextActionBean = mockRoundtrip.getActionBean(ContextActionBean.class); ActionBeanContext context = contextActionBean.getContext(); Assert.assertNotNull(context); List<Message> messages = context.getMessages(); Assert.assertNotNull(messages); } @Test public void testMessages() throws Exception { MockServletContext c = StripesTestFixture.createServletContext(); final MockRoundtrip mockRoundtrip = new MockRoundtrip(c, ContextActionBean.class); mockRoundtrip.execute("messages"); List<Message> messages = mockRoundtrip.getMessages(); Assert.assertNotNull(messages); Assert.assertEquals(1, messages.size()); Message message = messages.get(0); Assert.assertTrue(message instanceof SimpleMessage); Assert.assertEquals(MESSAGE, ((SimpleMessage) message).getMessage()); } }