package org.springframework.binding.message; import java.io.Serializable; import java.util.Locale; import junit.framework.TestCase; import org.springframework.context.support.StaticMessageSource; public class DefaultMessageContextTests extends TestCase { private DefaultMessageContext context; protected void setUp() { StaticMessageSource messageSource = new StaticMessageSource(); messageSource.addMessage("message", Locale.getDefault(), "Hello world resolved!"); messageSource.addMessage("argmessage", Locale.getDefault(), "Hello world {0}!"); context = new DefaultMessageContext(messageSource); } public void testCreateMessageContext() { context.addMessage(new MessageBuilder().defaultText("Hello world!").build()); Message[] messages = context.getAllMessages(); assertEquals(1, messages.length); assertEquals("Hello world!", messages[0].getText()); assertEquals(Severity.INFO, messages[0].getSeverity()); assertEquals(null, messages[0].getSource()); } public void testResolveMessage() { context.addMessage(new MessageBuilder().warning().source(this).code("message").build()); Message[] messages = context.getMessagesBySource(this); assertEquals(1, messages.length); assertEquals("Hello world resolved!", messages[0].getText()); assertEquals(Severity.WARNING, messages[0].getSeverity()); assertEquals(this, messages[0].getSource()); } public void testResolveMessageDefaultText() { context.addMessage(new MessageBuilder().error().code("bogus").defaultText("Hello world fallback!").build()); Message[] messages = context.getAllMessages(); assertEquals(1, messages.length); assertEquals("Hello world fallback!", messages[0].getText()); assertEquals(Severity.ERROR, messages[0].getSeverity()); assertEquals(null, messages[0].getSource()); } public void testResolveMessageWithArgs() { context.addMessage(new MessageBuilder().error().source(this).code("argmessage").arg("Keith") .defaultText("Hello world fallback!").build()); Message[] messages = context.getAllMessages(); assertEquals(1, messages.length); assertEquals("Hello world Keith!", messages[0].getText()); assertEquals(Severity.ERROR, messages[0].getSeverity()); assertEquals(this, messages[0].getSource()); } public void testResolveMessageWithMultipleCodes() { context.addMessage(new MessageBuilder().error().source(this).code("bogus").code("argmessage").arg("Keith") .defaultText("Hello world fallback!").build()); Message[] messages = context.getMessagesBySource(this); assertEquals(1, messages.length); assertEquals("Hello world Keith!", messages[0].getText()); assertEquals(Severity.ERROR, messages[0].getSeverity()); assertEquals(this, messages[0].getSource()); } public void testSaveRestoreMessages() { context.addMessage(new MessageBuilder().defaultText("Info").build()); context.addMessage(new MessageBuilder().error().defaultText("Error").build()); context.addMessage(new MessageBuilder().warning().source(this).code("message").build()); assertEquals(2, context.getMessagesBySource(null).length); assertEquals(1, context.getMessagesBySource(this).length); StateManageableMessageContext manageable = context; Serializable messages = manageable.createMessagesMemento(); context = new DefaultMessageContext(context.getMessageSource()); assertEquals(0, context.getAllMessages().length); manageable = context; manageable.restoreMessages(messages); assertEquals(2, context.getMessagesBySource(null).length); assertEquals(1, context.getMessagesBySource(this).length); } public void testMessageSequencing() { context.addMessage(new MessageBuilder().defaultText("Info").build()); context.addMessage(new MessageBuilder().warning().source(this).code("message").build()); context.addMessage(new MessageBuilder().error().defaultText("Error").build()); Message[] messages = context.getAllMessages(); assertEquals("Info", messages[0].getText()); assertEquals("Error", messages[1].getText()); assertEquals("Hello world resolved!", messages[2].getText()); } }