package org.springframework.binding.message; import java.util.Locale; import junit.framework.TestCase; import org.springframework.context.NoSuchMessageException; import org.springframework.context.support.StaticMessageSource; public class MessageBuilderTests extends TestCase { private StaticMessageSource messageSource = new StaticMessageSource(); private Locale locale = Locale.getDefault(); private MessageBuilder builder = new MessageBuilder(); public void setUp() { messageSource.addMessage("foo", locale, "bar"); messageSource.addMessage("bar", locale, "{0}"); messageSource.addMessage("baz", locale, "boop"); } public void testBuildDefaultText() { MessageResolver resolver = builder.defaultText("foo").build(); Message message = resolver.resolveMessage(messageSource, locale); assertEquals("foo", message.getText()); assertEquals(Severity.INFO, message.getSeverity()); assertNull(message.getSource()); } public void testBuildFatal() { MessageResolver resolver = builder.fatal().defaultText("foo").build(); Message message = resolver.resolveMessage(messageSource, locale); assertEquals("foo", message.getText()); assertEquals(Severity.FATAL, message.getSeverity()); assertNull(message.getSource()); } public void testBuildError() { MessageResolver resolver = builder.error().defaultText("foo").build(); Message message = resolver.resolveMessage(messageSource, locale); assertEquals("foo", message.getText()); assertEquals(Severity.ERROR, message.getSeverity()); assertNull(message.getSource()); } public void testBuildWarning() { MessageResolver resolver = builder.warning().defaultText("foo").build(); Message message = resolver.resolveMessage(messageSource, locale); assertEquals("foo", message.getText()); assertEquals(Severity.WARNING, message.getSeverity()); assertNull(message.getSource()); } public void testBuildNothing() { MessageResolver resolver = builder.build(); try { resolver.resolveMessage(messageSource, locale); fail("Should have failed"); } catch (NoSuchMessageException e) { } } public void testBuildCode() { MessageResolver resolver = builder.error().code("foo").build(); Message message = resolver.resolveMessage(messageSource, locale); assertEquals("bar", message.getText()); assertEquals(Severity.ERROR, message.getSeverity()); assertNull(message.getSource()); } public void testBuildCodes() { MessageResolver resolver = builder.error().codes(new String[] { "foo" }).build(); Message message = resolver.resolveMessage(messageSource, locale); assertEquals("bar", message.getText()); assertEquals(Severity.ERROR, message.getSeverity()); assertNull(message.getSource()); } public void testBuildArg() { MessageResolver resolver = builder.error().code("bar").arg("baz").build(); Message message = resolver.resolveMessage(messageSource, locale); assertEquals("baz", message.getText()); assertEquals(Severity.ERROR, message.getSeverity()); assertNull(message.getSource()); } public void testBuildArgs() { MessageResolver resolver = builder.error().codes(new String[] { "bar" }).args(new Object[] { "baz" }).build(); Message message = resolver.resolveMessage(messageSource, locale); assertEquals("baz", message.getText()); assertEquals(Severity.ERROR, message.getSeverity()); assertNull(message.getSource()); } public void testBuildCodesNull() { MessageResolver resolver = builder.codes(null).build(); try { resolver.resolveMessage(messageSource, locale); fail("Should have failed"); } catch (NoSuchMessageException e) { } } public void testBuildArgsNull() { MessageResolver resolver = builder.args(null).build(); try { resolver.resolveMessage(messageSource, locale); fail("Should have failed"); } catch (NoSuchMessageException e) { } } public void testBuildArgsWithNullCodes() { MessageResolver resolver = builder.error().args(new Object[] { "baz" }).build(); try { resolver.resolveMessage(messageSource, locale); fail("Should have failed"); } catch (NoSuchMessageException e) { } } public void testBuildArgsWithNullCodesDefaultText() { MessageResolver resolver = builder.error().args(new Object[] { "baz" }).defaultText("foo").build(); Message message = resolver.resolveMessage(messageSource, locale); assertEquals("foo", message.getText()); } public void testBuildWithSource() { MessageResolver resolver = builder.source("foo").defaultText("foo").build(); Message message = resolver.resolveMessage(messageSource, locale); assertEquals("foo", message.getSource()); assertEquals("foo", message.getText()); assertEquals(Severity.INFO, message.getSeverity()); } public void testBuildResolvableArg() { MessageResolver resolver = builder.error().code("bar").resolvableArg("baz").build(); Message message = resolver.resolveMessage(messageSource, locale); assertEquals("boop", message.getText()); assertEquals(Severity.ERROR, message.getSeverity()); assertNull(message.getSource()); } public void testBuildResolvableArgs() { MessageResolver resolver = builder.error().codes(new String[] { "bar" }).resolvableArgs(new Object[] { "baz" }) .build(); Message message = resolver.resolveMessage(messageSource, locale); assertEquals("boop", message.getText()); assertEquals(Severity.ERROR, message.getSeverity()); assertNull(message.getSource()); } }